Skip to content
Closed
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cores/esp8266/Arduino.h
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ unsigned long millis(void);
unsigned long micros(void);
uint64_t micros64(void);
void delay(unsigned long);
void interruptable_delay(unsigned long ms);
void delayMicroseconds(unsigned int us);
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout);
Expand Down
17 changes: 16 additions & 1 deletion cores/esp8266/core_esp8266_wiring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ void delay_end(void* arg) {
esp_schedule();
}

void delay(unsigned long ms) {
void interruptible_delay(unsigned long ms) {
if(ms) {
os_timer_setfn(&delay_timer, (os_timer_func_t*) &delay_end, 0);
os_timer_arm(&delay_timer, ms, ONCE);
Expand All @@ -56,6 +56,21 @@ void delay(unsigned long ms) {
}
}

void delay(unsigned long ms) {
if (ms) {
unsigned long delay_start = millis();
while(millis() - delay_start < ms) {
os_timer_setfn(&delay_timer, (os_timer_func_t*) &delay_end, 0);
os_timer_arm(&delay_timer, 1, ONCE);
esp_yield();
os_timer_disarm(&delay_timer);
}
} else {
esp_schedule();
esp_yield();
}
}

void micros_overflow_tick(void* arg) {
(void) arg;
uint32_t m = system_get_time();
Expand Down
2 changes: 1 addition & 1 deletion libraries/ESP8266mDNS/src/ESP8266mDNS_Legacy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ int MDNSResponder::queryService(char *service, char *proto) {
#ifdef DEBUG_ESP_MDNS_TX
DEBUG_ESP_PORT.println("Waiting for answers..");
#endif
delay(1000);
interruptable_delay(1000);

_waitingForAnswers = false;

Expand Down
2 changes: 1 addition & 1 deletion libraries/ESP8266mDNS/src/LEAmDNS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ uint32_t MDNSResponder::queryService(const char* p_pcService,
if (_sendMDNSServiceQuery(*pServiceQuery)) {
// Wait for answers to arrive
DEBUG_EX_INFO(DEBUG_OUTPUT.printf_P(PSTR("[MDNSResponder] queryService: Waiting %u ms for answers...\n"), p_u16Timeout););
delay(p_u16Timeout);
interruptable_delay(p_u16Timeout);

// All answers should have arrived by now -> stop adding new answers
pServiceQuery->m_bAwaitingAnswers = false;
Expand Down