diff --git a/src/main.cpp b/src/main.cpp index 20af32b..76666b3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,36 +1,44 @@ // Nathan Hinton // Main file for the hub node. Starting with the WIFI initialization. - #include #include "services/service_manager.h" + #include "services/wifi_service.h" -#include "services/web_service.h" #include "services/ota_service.h" +#include "services/web_service.h" + +#include "tasks/system_task.h" ServiceManager services; WiFiService wifi; -WebService web; OTAService ota; +WebService web; + + +SystemTask systemTask(services); + void setup() { Serial.begin(115200); + services.add(&wifi); services.add(&ota); services.add(&web); - services.begin(); + + systemTask.start(); } void loop() { - services.update(); + // Nothing here. } diff --git a/src/services/web_service.cpp b/src/services/web_service.cpp index 493d397..c98c285 100644 --- a/src/services/web_service.cpp +++ b/src/services/web_service.cpp @@ -1,6 +1,6 @@ #include "web_service.h" -#define FIRMWARE_VERSION "1.0.0" +#define FIRMWARE_VERSION "1.0.1" WebService::WebService() : @@ -100,7 +100,7 @@ window.onload = getVersion;
Loading...
diff --git a/src/tasks/system_task.cpp b/src/tasks/system_task.cpp new file mode 100644 index 0000000..7192f51 --- /dev/null +++ b/src/tasks/system_task.cpp @@ -0,0 +1,65 @@ +#include "system_task.h" + + +SystemTask::SystemTask(ServiceManager& manager) +: +serviceManager(manager), +taskHandle(nullptr) +{ + +} + + + +// xTaskCreatePinnedToCore( +// function, +// name, +// stack size, +// parameter, +// priority, +// handle, +// core +// ); +void SystemTask::start() +{ + xTaskCreatePinnedToCore( + taskEntry, + "SystemTask", + 4096, + this, + 2, + &taskHandle, + 1 + ); +} + + +void SystemTask::taskEntry(void* parameter) +{ + SystemTask* task = + static_cast(parameter); + + task->run(); +} + + +void SystemTask::run() +{ + serviceManager.begin(); + + + TickType_t lastWakeTime = + xTaskGetTickCount(); + + + while(true) + { + serviceManager.update(); + + + vTaskDelayUntil( + &lastWakeTime, + pdMS_TO_TICKS(10) + ); + } +} diff --git a/src/tasks/system_task.h b/src/tasks/system_task.h new file mode 100644 index 0000000..e456882 --- /dev/null +++ b/src/tasks/system_task.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include "../services/service_manager.h" + + +class SystemTask +{ +public: + + SystemTask(ServiceManager& manager); + + void start(); + + +private: + + static void taskEntry(void* parameter); + + void run(); + + + ServiceManager& serviceManager; + + TaskHandle_t taskHandle; +};