BulbStateUpdater.h 779 B

1234567891011121314151617181920212223242526272829303132333435
  1. /**
  2. * Enqueues updated bulb states and flushes them at the configured interval.
  3. */
  4. #include <stddef.h>
  5. #include <MqttClient.h>
  6. #include <CircularBuffer.h>
  7. #include <Settings.h>
  8. #ifndef BULB_STATE_UPDATER
  9. #define BULB_STATE_UPDATER
  10. class BulbStateUpdater {
  11. public:
  12. BulbStateUpdater(Settings& settings, MqttClient& mqttClient, GroupStateStore& stateStore);
  13. void enqueueUpdate(BulbId bulbId, GroupState& groupState);
  14. void loop();
  15. void enable();
  16. void disable();
  17. private:
  18. Settings& settings;
  19. MqttClient& mqttClient;
  20. GroupStateStore& stateStore;
  21. CircularBuffer<BulbId, MILIGHT_MAX_STALE_MQTT_GROUPS> staleGroups;
  22. unsigned long lastFlush;
  23. bool enabled;
  24. inline void flushGroup(BulbId bulbId, GroupState& state);
  25. inline bool canFlush() const;
  26. };
  27. #endif