75 void setup()
override;
77 void dump_config()
override;
78 void register_listener(uint8_t datapoint_id,
const std::function<
void(
TuyaDatapoint)> &func);
79 void set_raw_datapoint_value(uint8_t datapoint_id,
const std::vector<uint8_t> &value);
80 void set_boolean_datapoint_value(uint8_t datapoint_id,
bool value);
81 void set_integer_datapoint_value(uint8_t datapoint_id, uint32_t value);
83 void set_string_datapoint_value(uint8_t datapoint_id,
const std::string &value);
84 void set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value);
85 void set_bitmask_datapoint_value(uint8_t datapoint_id, uint32_t value, uint8_t length);
86 void force_set_raw_datapoint_value(uint8_t datapoint_id,
const std::vector<uint8_t> &value);
87 void force_set_boolean_datapoint_value(uint8_t datapoint_id,
bool value);
88 void force_set_integer_datapoint_value(uint8_t datapoint_id, uint32_t value);
89 void force_set_string_datapoint_value(uint8_t datapoint_id,
const std::string &value);
90 void force_set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value);
91 void force_set_bitmask_datapoint_value(uint8_t datapoint_id, uint32_t value, uint8_t length);
97 this->ignore_mcu_update_on_datapoints_.push_back(ignore_mcu_update_on_datapoints);
100 this->initialized_callback_.add(std::move(callback));
104 void handle_char_(uint8_t c);
105 void handle_datapoints_(
const uint8_t *buffer,
size_t len);
107 bool validate_message_();
109 void handle_command_(uint8_t command, uint8_t
version,
const uint8_t *buffer,
size_t len);
111 void process_command_queue_();
114 void set_numeric_datapoint_value_(uint8_t datapoint_id,
TuyaDatapointType datapoint_type, uint32_t value,
115 uint8_t length,
bool forced);
116 void set_string_datapoint_value_(uint8_t datapoint_id,
const std::string &value,
bool forced);
117 void set_raw_datapoint_value_(uint8_t datapoint_id,
const std::vector<uint8_t> &value,
bool forced);
118 void send_datapoint_command_(uint8_t datapoint_id,
TuyaDatapointType datapoint_type, std::vector<uint8_t> data);
119 void set_status_pin_();
120 void send_wifi_status_();
123 void send_local_time_();
127 bool init_failed_{
false};
128 int init_retries_{0};
129 uint8_t protocol_version_ = -1;
131 int status_pin_reported_ = -1;
132 int reset_pin_reported_ = -1;
133 uint32_t last_command_timestamp_ = 0;
134 uint32_t last_rx_char_timestamp_ = 0;
135 std::string product_ =
"";
139 std::vector<uint8_t> ignore_mcu_update_on_datapoints_{};
142 uint8_t wifi_status_ = -1;
float get_setup_priority() const override
The RealTimeClock class exposes common timekeeping functions via the device's local real-time clock...
const float LATE
For components that should be initialized at the very end of the setup process.
void set_time_id(time::RealTimeClock *time_id)
std::vector< TuyaDatapointListener > listeners_
void add_on_initialized_callback(std::function< void()> callback)
std::vector< TuyaDatapoint > datapoints_
std::vector< uint8_t > rx_message_
std::function< void(TuyaDatapoint)> on_datapoint
std::vector< uint8_t > payload
void set_status_pin(InternalGPIOPin *status_pin)
std::vector< TuyaCommand > command_queue_
std::vector< uint8_t > value_raw
void add_ignore_mcu_update_on_datapoints(uint8_t ignore_mcu_update_on_datapoints)