diff --git a/icbm.ino b/icbm.ino index cb83fd8509e4a18a140a06e539773f54c7535da9..522114cc112ab1ef9f1fdb310d3351edbf3b3f14 100644 --- a/icbm.ino +++ b/icbm.ino @@ -7,6 +7,9 @@ unsigned long start; extern bool eth_connected; extern SNMP::Manager snmp; +TaskHandle_t restServerTask; +TaskHandle_t powerProcedureTask; + void setup() { Serial.begin(115200); @@ -22,6 +25,11 @@ void setup() { PINS.ramping = false; start = millis(); + + xTaskCreatePinnedToCore(webInterfaceLoop, "Web Interface", 10000, NULL, 1, &restServerTask, 0); + + xTaskCreatePinnedToCore(mainLoop, "PowerProcedure Task", 10000, NULL, 1, &powerProcedureTask, + 1); } enum { @@ -37,13 +45,26 @@ void serialLoop() { } } -void loop() { - isr_check_loop(); - snmp.loop(); - restServer.handleClient(); - toggle_status_led(); - serialLoop(); - if (eth_connected) { // We may be triggered, but disconnected from the network. - powerOffCheckLoop(); +void webInterfaceLoop(void* pvParameters) { + Serial.print("Web loop running on core "); + Serial.println(xPortGetCoreID()); + while (true) { + restServer.handleClient(); } } + +void mainLoop(void* pvParameters) { + Serial.print("main loop running on core "); + Serial.println(xPortGetCoreID()); + while (true) { + isr_check_loop(); + snmp.loop(); + toggle_status_led(); + serialLoop(); + if (eth_connected) { // We may be triggered, but disconnected from the network. + powerOffCheckLoop(); + } + } +} + +void loop() {}