diff --git a/platformio.ini b/platformio.ini index 374bf22..2c3d395 100644 --- a/platformio.ini +++ b/platformio.ini @@ -13,7 +13,7 @@ platform = espressif32 board = esp32dev framework = arduino ;lib_deps = - +;; esp32async/ESPAsyncWebServer@^3.12.0 ; upload via OTA upload_protocol = espota diff --git a/src/core/configuration.h b/src/core/configuration.h new file mode 100644 index 0000000..ea546c2 --- /dev/null +++ b/src/core/configuration.h @@ -0,0 +1,3 @@ +// Contains configuration constants: + +#define FIRMWARE_VERSION "1.0.2" diff --git a/src/core/dashboard_state.cpp b/src/core/dashboard_state.cpp new file mode 100644 index 0000000..a25977e --- /dev/null +++ b/src/core/dashboard_state.cpp @@ -0,0 +1,36 @@ +#include "dashboard_state.h" + + +void DashboardState::begin() {} + +void DashboardState::update() +{ + unsigned long seconds = millis() / 1000; + + unsigned long days = seconds / 86400; + seconds %= 86400; + + unsigned long hours = seconds / 3600; + seconds %= 3600; + + unsigned long minutes = seconds / 60; + seconds %= 60; + + + char buffer[64]; + + snprintf( + buffer, + sizeof(buffer), + "%lu days %02lu:%02lu:%02lu", + days, + hours, + minutes, + seconds + ); + + + uptime = String(buffer); + + firmwareVersion = FIRMWARE_VERSION; +} diff --git a/src/core/dashboard_state.h b/src/core/dashboard_state.h new file mode 100644 index 0000000..5e72d61 --- /dev/null +++ b/src/core/dashboard_state.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +#include "configuration.h" + +class DashboardState +{ +public: + + void begin(); + void update(); + + + String uptime; + + String firmwareVersion; + +}; diff --git a/src/main.cpp b/src/main.cpp index 76666b3..ba5f59e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,8 +3,9 @@ #include -#include "services/service_manager.h" +#include "core/dashboard_state.h" +#include "services/service_manager.h" #include "services/wifi_service.h" #include "services/ota_service.h" #include "services/web_service.h" @@ -12,12 +13,15 @@ #include "tasks/system_task.h" +DashboardState dashboardState; + + ServiceManager services; WiFiService wifi; OTAService ota; -WebService web; +WebService web(dashboardState); SystemTask systemTask(services); @@ -28,7 +32,6 @@ void setup() { Serial.begin(115200); - services.add(&wifi); services.add(&ota); services.add(&web); diff --git a/src/services/service_manager.cpp b/src/services/service_manager.cpp index 4c68951..0a5ed59 100644 --- a/src/services/service_manager.cpp +++ b/src/services/service_manager.cpp @@ -18,7 +18,7 @@ void ServiceManager::begin() } -void ServiceManager::update() +void ServiceManager::tick() { for(uint8_t i = 0; i < count; i++) { diff --git a/src/services/service_manager.h b/src/services/service_manager.h index 24409ff..73188ae 100644 --- a/src/services/service_manager.h +++ b/src/services/service_manager.h @@ -11,7 +11,7 @@ public: void begin(); - void update(); + void tick(); private: diff --git a/src/services/web_service.cpp b/src/services/web_service.cpp index c98c285..a0c256b 100644 --- a/src/services/web_service.cpp +++ b/src/services/web_service.cpp @@ -1,10 +1,9 @@ #include "web_service.h" -#define FIRMWARE_VERSION "1.0.1" - -WebService::WebService() +WebService::WebService(DashboardState& state) : Service("Web", 10), + dashboardState(state), server(80) { } @@ -134,7 +133,7 @@ void WebService::begin() { server.send( 200, "text/plain", - FIRMWARE_VERSION + dashboardState.firmwareVersion ); }); @@ -143,7 +142,7 @@ void WebService::begin() { server.send( 200, "text/plain", - formatUptime() + dashboardState.uptime ); }); @@ -157,5 +156,6 @@ void WebService::begin() { void WebService::update() { + dashboardState.update(); server.handleClient(); } diff --git a/src/services/web_service.h b/src/services/web_service.h index 1516860..86017f4 100644 --- a/src/services/web_service.h +++ b/src/services/web_service.h @@ -1,6 +1,7 @@ #pragma once #include "service.h" +#include "../core/dashboard_state.h" #include @@ -8,7 +9,7 @@ class WebService : public Service { public: - WebService(); + WebService(DashboardState& state); void begin() override; void update() override; @@ -16,4 +17,5 @@ public: private: WebServer server; + DashboardState dashboardState; }; diff --git a/src/tasks/system_task.cpp b/src/tasks/system_task.cpp index 7192f51..13bb337 100644 --- a/src/tasks/system_task.cpp +++ b/src/tasks/system_task.cpp @@ -47,14 +47,16 @@ void SystemTask::run() { serviceManager.begin(); - TickType_t lastWakeTime = xTaskGetTickCount(); while(true) { - serviceManager.update(); + // Time the length of the task: + uint32_t start = micros(); + serviceManager.tick(); + uint32_t elapsed = micros() - start; vTaskDelayUntil(