Skip to content
Open
8 changes: 8 additions & 0 deletions cores/esp32/Arduino.h
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,14 @@ bool shouldPrintChipDebugReport(void);
return true; \
}

// macro SET_TIME_BEFORE_STARTING_SKETCH_MS(time_ms) can set a time in milliseconds
// before the sketch would start its execution. It gives the user time to open the Serial Monitor
uint64_t getArduinoSetupWaitTime_ms(void);
#define SET_TIME_BEFORE_STARTING_SKETCH_MS(time_ms) \
uint64_t getArduinoSetupWaitTime_ms() { \
return (time_ms); \
}

// allows user to bypass esp_spiram_test()
bool esp_psram_extram_test(void);
#define BYPASS_SPIRAM_TEST(bypass) \
Expand Down
8 changes: 8 additions & 0 deletions cores/esp32/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,18 @@ __attribute__((weak)) bool shouldPrintChipDebugReport(void) {
return false;
}

// this function can be changed by the sketch using the macro SET_TIME_BEFORE_STARTING_SKETCH_MS(time_ms)
__attribute__((weak)) uint64_t getArduinoSetupWaitTime_ms(void) {
return 0;
}

void loopTask(void *pvParameters) {
#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL)
// sets UART0 (default console) RX/TX pins as already configured in boot or as defined in variants/pins_arduino.h
Serial0.setPins(gpioNumberToDigitalPin(SOC_RX0), gpioNumberToDigitalPin(SOC_TX0));
// time in ms that the sketch may wait before starting its execution - default is zero
// usually done for opening the Serial Monitor and seeing all debug messages
delay(getArduinoSetupWaitTime_ms());
#endif
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
printBeforeSetupInfo();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// macro SET_TIME_BEFORE_STARTING_SKETCH_MS(time_ms) can set a time in milliseconds
// before the sketch would start its execution. It gives the user time to open the Serial Monitor

// This will force the Sketch execution to wait for 5 seconds before starting it execution
// setup() will be executed only after this time
SET_TIME_BEFORE_STARTING_SKETCH_MS(5000);


void setup() {
Serial.begin(115200);
Serial.println("After 5 seconds... this message will be seen in the Serial Monitor.");
}

void loop() {
}
Loading