82 void setup()
override;
84 void dump_config()
override;
85 void register_listener(uint8_t datapoint_id,
const std::function<
void(
TuyaDatapoint)> &func);
86 void set_raw_datapoint_value(uint8_t datapoint_id,
const std::vector<uint8_t> &value);
87 void set_boolean_datapoint_value(uint8_t datapoint_id,
bool value);
88 void set_integer_datapoint_value(uint8_t datapoint_id, uint32_t value);
90 void set_string_datapoint_value(uint8_t datapoint_id,
const std::string &value);
91 void set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value);
92 void set_bitmask_datapoint_value(uint8_t datapoint_id, uint32_t value, uint8_t
length);
93 void force_set_raw_datapoint_value(uint8_t datapoint_id,
const std::vector<uint8_t> &value);
94 void force_set_boolean_datapoint_value(uint8_t datapoint_id,
bool value);
95 void force_set_integer_datapoint_value(uint8_t datapoint_id, uint32_t value);
96 void force_set_string_datapoint_value(uint8_t datapoint_id,
const std::string &value);
97 void force_set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value);
98 void force_set_bitmask_datapoint_value(uint8_t datapoint_id, uint32_t value, uint8_t length);
104 this->ignore_mcu_update_on_datapoints_.push_back(ignore_mcu_update_on_datapoints);
107 this->initialized_callback_.add(std::move(callback));
111 void handle_char_(uint8_t c);
112 void handle_datapoints_(
const uint8_t *buffer,
size_t len);
114 bool validate_message_();
116 void handle_command_(uint8_t command, uint8_t
version,
const uint8_t *buffer,
size_t len);
118 void process_command_queue_();
121 void set_numeric_datapoint_value_(uint8_t datapoint_id,
TuyaDatapointType datapoint_type, uint32_t value,
122 uint8_t length,
bool forced);
123 void set_string_datapoint_value_(uint8_t datapoint_id,
const std::string &value,
bool forced);
124 void set_raw_datapoint_value_(uint8_t datapoint_id,
const std::vector<uint8_t> &value,
bool forced);
125 void send_datapoint_command_(uint8_t datapoint_id,
TuyaDatapointType datapoint_type, std::vector<uint8_t> data);
126 void set_status_pin_();
127 void send_wifi_status_();
128 uint8_t get_wifi_status_code_();
129 uint8_t get_wifi_rssi_();
132 void send_local_time_();
134 bool time_sync_callback_registered_{
false};
137 bool init_failed_{
false};
138 int init_retries_{0};
139 uint8_t protocol_version_ = -1;
141 int status_pin_reported_ = -1;
142 int reset_pin_reported_ = -1;
143 uint32_t last_command_timestamp_ = 0;
144 uint32_t last_rx_char_timestamp_ = 0;
145 std::string product_ =
"";
149 std::vector<uint8_t> ignore_mcu_update_on_datapoints_{};
152 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)
Implementation of SPI Controller mode.
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)