From 063a109de59ae4e5043731229ff0c0903ef95d63 Mon Sep 17 00:00:00 2001 From: Cyril Danilevski <cyril.danilevski@xfel.eu> Date: Fri, 28 Feb 2025 21:41:27 +0100 Subject: [PATCH] Run web server on separate core --- icbm.ino | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/icbm.ino b/icbm.ino index cb83fd8..522114c 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() {} -- GitLab