This class simplifies creating components that periodically check a state.
Minimal static vector - saves memory by avoiding std::vector overhead.
void on_light_reg_(uint16_t value)
void set_door_state_(DoorState state)
DoorState get_door_state() const
void forget_light_toggles_()
bool set_position(float position)
void dump_config() override
void on_state_reg_(uint16_t value)
void set_valid_(bool valid)
modbus::ResponseStatus on_read_holding_registers(uint16_t start_address, uint16_t number_of_registers, modbus::RegisterValues ®isters) override
CallbackManager< void()> state_callback_
void set_light_seen_(bool seen)
void update_current_position_()
void set_light_on_(bool on)
uint16_t command_reg_value_
modbus::ResponseStatus on_write_registers(uint16_t start_address, const modbus::RegisterValues ®isters) override
uint16_t connection_timeout_ms_
const HoermannHcpCommand * next_command_
uint16_t key_press_delay_ms_
bool is_light_toggle_pending_() const
void push_command_registers_(modbus::RegisterValues ®isters)
bool is_light_heading_on() const
uint32_t command_written_at_
float get_current_position() const
bool is_light_known() const
uint8_t unsent_light_toggles_() const
bool cancel_light_toggle()
void add_on_state_callback(F &&callback)
uint8_t light_toggles_in_flight_
bool short_broadcast_logged_
uint32_t target_queued_at_
void light_toggle_settled_()
DoorState target_direction_
uint32_t light_toggle_released_at_
bool queue_command_(const HoermannHcpCommand &command)
void on_position_reg_(uint16_t value)
uint32_t command_queued_at_
std::optional< ExceptionCode > ResponseStatus
uint16_t released_value_2