#ifndef _DEVICE_STATE_EVENT_H_ #define _DEVICE_STATE_EVENT_H_ #include #include #include #include #include "device_state.h" ESP_EVENT_DECLARE_BASE(XIAOZHI_STATE_EVENTS); enum { XIAOZHI_STATE_CHANGED_EVENT, }; struct device_state_event_data_t { DeviceState previous_state; DeviceState current_state; }; class DeviceStateEventManager { public: static DeviceStateEventManager& GetInstance(); DeviceStateEventManager(const DeviceStateEventManager&) = delete; DeviceStateEventManager& operator=(const DeviceStateEventManager&) = delete; void RegisterStateChangeCallback(std::function callback); void PostStateChangeEvent(DeviceState previous_state, DeviceState current_state); std::vector> GetCallbacks(); private: DeviceStateEventManager(); ~DeviceStateEventManager(); std::vector> callbacks_; std::mutex mutex_; }; #endif // _DEVICE_STATE_EVENT_H_