Skip to content

Commit deba80a

Browse files
committed
Make delay() and yield() overridable, and add pluggable loop_end()
1 parent 7dbda49 commit deba80a

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

Diff for: cores/esp32/esp32-hal-misc.c

+6-2
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,13 @@ float temperatureRead()
4444
return (temprature_sens_read() - 32) / 1.8;
4545
}
4646

47-
void yield()
47+
void __yield()
4848
{
4949
vPortYield();
5050
}
5151

52+
void yield() __attribute__ ((weak, alias("__yield")));
53+
5254
#if CONFIG_AUTOSTART_ARDUINO
5355

5456
extern TaskHandle_t loopTaskHandle;
@@ -139,11 +141,13 @@ unsigned long IRAM_ATTR millis()
139141
return (unsigned long) (esp_timer_get_time() / 1000ULL);
140142
}
141143

142-
void delay(uint32_t ms)
144+
void __delay(uint32_t ms)
143145
{
144146
vTaskDelay(ms / portTICK_PERIOD_MS);
145147
}
146148

149+
void delay(uint32_t ms) __attribute__ ((weak, alias("__delay")));
150+
147151
void IRAM_ATTR delayMicroseconds(uint32_t us)
148152
{
149153
uint32_t m = micros();

Diff for: cores/esp32/main.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ TaskHandle_t loopTaskHandle = NULL;
99

1010
bool loopTaskWDTEnabled;
1111

12+
extern "C" void __loop_end(void)
13+
{
14+
/* do nothing by default */
15+
}
16+
17+
extern "C" void loop_end(void) __attribute__((weak, alias("__loop_end")));
18+
1219
void loopTask(void *pvParameters)
1320
{
1421
setup();
@@ -17,6 +24,7 @@ void loopTask(void *pvParameters)
1724
esp_task_wdt_reset();
1825
}
1926
loop();
27+
loop_end();
2028
}
2129
}
2230

0 commit comments

Comments
 (0)