21 #include "../include/esp3d_config.h"
23 #if defined(ARDUINO_ARCH_ESP8266)
24 #include "ESP8266WiFi.h"
25 #endif //ARDUINO_ARCH_ESP8266
26 #if defined(ARDUINO_ARCH_ESP32)
31 esp_err_t esp_task_wdt_reset();
35 #endif //ARDUINO_ARCH_ESP32
39 #if defined(ARDUINO_ARCH_ESP32)
40 int ChannelAttached2Pin[16]= {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
41 #endif //ARDUINO_ARCH_ESP32
43 uint32_t Hal::_analogWriteRange = 255;
44 uint32_t Hal::_analogWriteFreq = 1000;
59 #ifdef ARDUINO_ARCH_ESP32
60 for (uint8_t p = 0; p < 16; p++) {
61 if(ChannelAttached2Pin[p] != -1) {
62 ledcDetachPin(ChannelAttached2Pin[p]);
63 ChannelAttached2Pin[p] = -1;
66 #endif //ARDUINO_ARCH_ESP32
71 #if defined (ARDUINO_ARCH_ESP8266)
72 if ((pin == 16) && (mode == INPUT_PULLUP)) {
73 pinMode(pin, INPUT_PULLDOWN_16);
80 void Hal::toneESP(uint8_t pin,
unsigned int frequency,
unsigned int duration,
bool sync)
82 #if defined(ARDUINO_ARCH_ESP8266)
84 tone(pin, frequency, duration);
85 #endif //ARDUINO_ARCH_ESP8266
86 #if defined(ARDUINO_ARCH_ESP32)
87 int channel = getAnalogWriteChannel(pin);
89 ledcAttachPin(pin, channel);
90 ledcWriteTone(channel,frequency);
97 #endif //ARDUINO_ARCH_ESP32
101 #if defined(ARDUINO_ARCH_ESP8266)
103 #endif //ARDUINO_ARCH_ESP8266
104 #if defined(ARDUINO_ARCH_ESP32)
105 int channel = getAnalogWriteChannel(pin);
107 ledcWrite(channel, 0);
109 #endif //ARDUINO_ARCH_ESP32
114 #ifdef ARDUINO_ARCH_ESP8266 //only one ADC on ESP8266 A0
122 #if defined(ARDUINO_ARCH_ESP32)
123 int Hal::getAnalogWriteChannel(uint8_t pin)
125 for (uint8_t p = 0; p < 16; p++) {
126 if(ChannelAttached2Pin[p] == pin) {
130 for (uint8_t p = 0; p < 16; p++) {
131 if(ChannelAttached2Pin[p] == -1) {
132 ChannelAttached2Pin[p] = pin;
139 #endif //ARDUINO_ARCH_ESP32
143 if (value > (_analogWriteRange-1)) {
146 #ifdef ARDUINO_ARCH_ESP8266
148 #endif //ARDUINO_ARCH_ESP8266
149 #ifdef ARDUINO_ARCH_ESP32
150 int channel = getAnalogWriteChannel(pin);
154 uint8_t resolution = 0;
155 switch(_analogWriteRange) {
170 _analogWriteRange = 255;
173 ledcSetup(channel, _analogWriteFreq, resolution);
174 ledcAttachPin(pin, channel);
175 ledcWrite(channel, value);
176 #endif //ARDUINO_ARCH_ESP32
181 _analogWriteFreq = freq;
182 #ifdef ARDUINO_ARCH_ESP8266
184 #endif //ARDUINO_ARCH_ESP8266
188 _analogWriteRange = range;
189 #ifdef ARDUINO_ARCH_ESP8266
191 #endif //ARDUINO_ARCH_ESP8266
198 WiFi.persistent(
false);
199 WiFi.disconnect(
true);
200 WiFi.enableSTA (
false);
201 WiFi.enableAP (
false);
202 WiFi.mode (WIFI_OFF);
209 #if defined(ARDUINO_ARCH_ESP32)
211 #endif //ARDUINO_ARCH_ESP32
217 #ifdef ARDUINO_ARCH_ESP8266
219 #endif //ARDUINO_ARCH_ESP8266
220 #ifdef ARDUINO_ARCH_ESP32
221 void esp_task_wdt_feed();
222 #endif //ARDUINO_ARCH_ESP32
228 #if defined(ASYNCWEBSERVER) || defined(ARDUINO_ARCH_ESP32)
229 uint32_t timeout = millis();
230 while ( (millis() - timeout) < milliseconds) {
233 #else // !(ASYNCWEBSERVER + ARDUINO_ARCH_ESP32)
235 #endif // !ASYNCWEBSERVER & !ARDUINO_ARCH_ESP32
240 #ifdef ARDUINO_ARCH_ESP8266
241 return ESP.getChipId();
242 #endif //ARDUINO_ARCH_ESP8266
243 #ifdef ARDUINO_ARCH_ESP32
244 return (uint16_t) (ESP.getEfuseMac() >> 32);
245 #endif //ARDUINO_ARCH_ESP32
250 #ifdef ARDUINO_ARCH_ESP8266
252 #endif //ARDUINO_ARCH_ESP8266
253 #ifdef ARDUINO_ARCH_ESP32
255 #endif //ARDUINO_ARCH_ESP32
260 #ifdef ARDUINO_ARCH_ESP8266
262 #endif //ARDUINO_ARCH_ESP8266
263 #ifdef ARDUINO_ARCH_ESP32
264 return temperatureRead();
265 #endif //ARDUINO_ARCH_ESP32
270 #ifdef ARDUINO_ARCH_ESP8266
271 if ((pin <= 5) || ((pin >= 12) && (pin <= 16))) {
276 #endif //ARDUINO_ARCH_ESP8266
277 #ifdef ARDUINO_ARCH_ESP32
278 if ((pin <= 5) || ((pin >= 12) && (pin <= 39))) {
283 #endif //ARDUINO_ARCH_ESP32