118 lines
3.4 KiB
C++
118 lines
3.4 KiB
C++
#include "HermitCrab.h"
|
|
#include "Config.h"
|
|
#include "ConnectWiFi.h"
|
|
#include "UI.h"
|
|
#include <esp_task_wdt.h>
|
|
#include <BLEScan.h>
|
|
|
|
#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 = g_millis;
|
|
unsigned long tickSecond;
|
|
uint8_t slot;
|
|
uint8_t lastSlot = 255;
|
|
|
|
esp_task_wdt_add(NULL); // NULL for the current task
|
|
ui.start();
|
|
ble.setupScan();
|
|
|
|
while (true) {
|
|
esp_task_wdt_reset();
|
|
tickMillis = g_millis;
|
|
tickSecond = tickMillis / 1000;
|
|
slot = (tickMillis % 1000) / 50;
|
|
|
|
//===============================================================================
|
|
// Loop top: Once in a second loop
|
|
if (slot != lastSlot) {
|
|
lastSlot = slot;
|
|
|
|
switch (slot) {
|
|
case 1:
|
|
case 6:
|
|
case 11:
|
|
case 16: // UI Display
|
|
ui.updateDisplayTop(tickSecond);
|
|
break;
|
|
case 2:
|
|
case 4:
|
|
case 7:
|
|
case 9:
|
|
case 12:
|
|
case 14:
|
|
case 17: // NTC Temp Sensor
|
|
case 19:
|
|
ble.loop(tickMillis);
|
|
break;
|
|
|
|
case 3: // NTP - Time
|
|
if (isWiFiConnected()) {
|
|
if (timeManager.getTime(tickMillis)) {
|
|
ESP_LOGI(TAG_TASK0,"NTP time loaded: %s", printTime());
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 5: // Heartbeat
|
|
if (isWiFiConnected()) {
|
|
host.SendHeartBeat(tickMillis);
|
|
}
|
|
break;
|
|
|
|
case 8: // NTC
|
|
ntc.readSensor();
|
|
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;
|
|
}
|
|
}
|
|
// =====================================================
|
|
|
|
// Unconditional Loop
|
|
checkWiFi(tickMillis);
|
|
host.Loop(tickMillis);
|
|
host.MonitorUDP();
|
|
|
|
// Loop end
|
|
//==========================================================================
|
|
|
|
esp_task_wdt_reset();
|
|
} // end of - While(True)
|
|
|
|
ESP_LOGI(TAG_TASK0,"Core 0 Task Exit");
|
|
vTaskDelete(NULL);
|
|
}
|
|
// ==================================================================================
|
|
// End of Core0 Loop
|
|
// ==================================================================================
|