| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- #include "freertos/FreeRTOS.h"
 
- #include "freertos/task.h"
 
- #include "esp_task_wdt.h"
 
- #include "Arduino.h"
 
- #if (ARDUINO_USB_CDC_ON_BOOT|ARDUINO_USB_MSC_ON_BOOT|ARDUINO_USB_DFU_ON_BOOT) && !ARDUINO_USB_MODE
 
- #include "USB.h"
 
- #if ARDUINO_USB_MSC_ON_BOOT
 
- #include "FirmwareMSC.h"
 
- #endif
 
- #endif
 
- #ifndef ARDUINO_LOOP_STACK_SIZE
 
- #ifndef CONFIG_ARDUINO_LOOP_STACK_SIZE
 
- #define ARDUINO_LOOP_STACK_SIZE 8192
 
- #else
 
- #define ARDUINO_LOOP_STACK_SIZE CONFIG_ARDUINO_LOOP_STACK_SIZE
 
- #endif
 
- #endif
 
- TaskHandle_t loopTaskHandle = NULL;
 
- #if CONFIG_AUTOSTART_ARDUINO
 
- #if CONFIG_FREERTOS_UNICORE
 
- void yieldIfNecessary(void){
 
-     static uint64_t lastYield = 0;
 
-     uint64_t now = millis();
 
-     if((now - lastYield) > 2000) {
 
-         lastYield = now;
 
-         vTaskDelay(5); //delay 1 RTOS tick
 
-     }
 
- }
 
- #endif
 
- bool loopTaskWDTEnabled;
 
- __attribute__((weak)) size_t getArduinoLoopTaskStackSize(void) {
 
-     return ARDUINO_LOOP_STACK_SIZE;
 
- }
 
- void loopTask(void *pvParameters)
 
- {
 
-     setup();
 
-     for(;;) {
 
- #if CONFIG_FREERTOS_UNICORE
 
-         yieldIfNecessary();
 
- #endif
 
-         if(loopTaskWDTEnabled){
 
-             esp_task_wdt_reset();
 
-         }
 
-         loop();
 
-         if (serialEventRun) serialEventRun();
 
-     }
 
- }
 
- extern void setup_usb_ids();
 
- extern "C" void app_main()
 
- {
 
-     setup_usb_ids();		/* Local addition */
 
- #if ARDUINO_USB_CDC_ON_BOOT && !ARDUINO_USB_MODE
 
-     Serial.begin();
 
- #endif
 
- #if ARDUINO_USB_MSC_ON_BOOT && !ARDUINO_USB_MODE
 
-     MSC_Update.begin();
 
- #endif
 
- #if ARDUINO_USB_DFU_ON_BOOT && !ARDUINO_USB_MODE
 
-     USB.enableDFU();
 
- #endif
 
- #if ARDUINO_USB_ON_BOOT && !ARDUINO_USB_MODE
 
-     USB.begin();
 
- #endif
 
-     loopTaskWDTEnabled = false;
 
-     initArduino();
 
-     xTaskCreateUniversal(loopTask, "loopTask", getArduinoLoopTaskStackSize(), NULL, 1, &loopTaskHandle, ARDUINO_RUNNING_CORE);
 
- }
 
- #endif
 
 
  |