diff --git a/components/StateManager/StateManager/StateManager.cpp b/components/StateManager/StateManager/StateManager.cpp index 7d2196a..a7567b5 100644 --- a/components/StateManager/StateManager/StateManager.cpp +++ b/components/StateManager/StateManager/StateManager.cpp @@ -63,9 +63,9 @@ void StateManager::HandleUpdateState() ledStreamState = LEDStates_e::LedStateStreaming; xQueueSend(this->ledStateQueue, &ledStreamState, 10); } - if (this->stream_state == StreamState_e::Stream_ON) + else if (this->stream_state == StreamState_e::Stream_OFF) { - ledStreamState = LEDStates_e::LedStateStreaming; + ledStreamState = LEDStates_e::LedStateStoppedStreaming; xQueueSend(this->ledStateQueue, &ledStreamState, 10); } break; @@ -87,6 +87,11 @@ CameraState_e StateManager::GetCameraState() return this->camera_state; } +QueueHandle_t StateManager::GetEventQueue() const +{ + return this->eventQueue; +} + void HandleStateManagerTask(void *pvParameters) { auto *stateManager = static_cast(pvParameters); diff --git a/components/StateManager/StateManager/StateManager.hpp b/components/StateManager/StateManager/StateManager.hpp index 4541e2f..ed49e60 100644 --- a/components/StateManager/StateManager/StateManager.hpp +++ b/components/StateManager/StateManager/StateManager.hpp @@ -76,6 +76,7 @@ public: void HandleUpdateState(); WiFiState_e GetWifiState(); CameraState_e GetCameraState(); + QueueHandle_t GetEventQueue() const; private: QueueHandle_t eventQueue; @@ -87,6 +88,15 @@ private: StreamState_e stream_state; }; +// Lightweight helper to publish stream state changes to the shared event queue. +static inline bool SendStreamEvent(QueueHandle_t queue, StreamState_e state) +{ + if (!queue) + return false; + SystemEvent evt{EventSource::STREAM, state}; + return xQueueSend(queue, &evt, 0) == pdTRUE; +} + void HandleStateManagerTask(void *pvParameters); #endif // STATEMANAGER_HPP