#include "HermitCrab.h" #include "Config.h" #include "ConnectWiFi.h" #include "UI.h" #include #include #include "TimeManager.h" #include "WiFiHost.h" #include "NTC_10K.h" #include "AHT2x.h" #define TAG_TASK0 "Task0" extern bool g_bWiFiSetupExecuted; void setup_BLE(); // ================================================================================== // // Core0 Loop - Connection and communication // // ================================================================================== MY_IRAM_ATTR void core0Task(void *pvParameters) { ESP_LOGI(TAG_TASK0,"Core 0 Task Started"); DPRINTLN("Core 0 Task Started"); wl_status_t lastWiFiStatus = WL_DISCONNECTED; unsigned long tickMillis = millis(); unsigned long tickSecond; unsigned long lastTick = tickMillis / 1000; unsigned long lastTickMillis = tickMillis; unsigned long lastSensorUpdate1 = tickMillis; unsigned long lastSensorUpdate2 = tickMillis + 2500; uint16_t tick1000, lastTick1000 = tickMillis % 1000;; uint16_t tick250, lastTick250 = tickMillis % 250; uint8_t slot; uint8_t lastSlot = tickMillis / 50; esp_task_wdt_add(NULL); // NULL for the current task ui.start(); ble.setupScan(); while (true) { esp_task_wdt_reset(); tickMillis = millis(); tick250 = tickMillis % 250; tick1000 = tickMillis % 1000; tickSecond = tickMillis / 1000; slot = tick1000 / 50; //=============================================================================== // Loop top // Once in a second loop if (tick1000 != lastTick1000) { if (slot != lastSlot) { switch (slot) { case 1: case 6: case 11: case 16: // UI Display ui.updateDisplayTop(tickSecond); break; case 2: case 7: case 12: case 17: // NTC Temp Sensor ntc.readSensor(); break; case 3: // NTP - Time if (isWiFiConnected()) { if (timeManager.getTime(tickMillis)) { ESP_LOGI(TAG_TASK0,"NTP time loaded: %s", printTime()); } } break; case 4: case 9: case 14: case 19: ntc.readSensor(); break; case 5: // Heartbeat if (isWiFiConnected()) { host.SendHeartBeat(tickMillis); } break; case 8: // BLE ble.loop(tickMillis); break; case 13: // ATH2x - 0x38 aht25.readSensor(tickMillis); break; case 15: // ATH0x - 0x39 aht10_0x39.readSensor(tickMillis); break; case 18: // UI Bottom ui.updateDisplayBottom(tickSecond); break; default: // 0 10 break; } lastSlot = slot; } lastTick1000 = tick1000; lastTick250 = tick250; } // end of - if (tick1000 != lastTick1000) // ===================================================== // Unconditional Loop host.MonitorUDP(); // Loop end //========================================================================== lastTickMillis = tickMillis; esp_task_wdt_reset(); } // end of - While(True) ESP_LOGI(TAG_TASK0,"Core 0 Task Exit"); vTaskDelete(NULL); } // ================================================================================== // End of Core0 Loop // ==================================================================================