11 return this->
encode_(0xA2, &data, 1);
16 return this->
encode_(0xAA, &data, 1);
21 return this->
encode_(CMD_GET_POSITION, &data, 1);
26 data[0] = (pin & 0xFF00) >> 8;
28 return this->
encode_(CMD_SEND_PIN, data, 2);
33 return this->
encode_(CMD_SET_STATE, &data, 1);
38 return this->
encode_(CMD_SET_STATE, &data, 1);
43 return this->
encode_(CMD_SET_STATE, &data, 1);
72#define VERIFY_MIN_LENGTH(x) \
86 if (
length < 2 || data[0] != 0x9a)
89 case CMD_GET_BATTERY_LEVEL: {
95 case CMD_GET_LIGHT_LEVEL: {
101 case CMD_GET_POSITION: {
102 VERIFY_MIN_LENGTH(6);
107 case CMD_NOTIFY_POSITION: {
108 VERIFY_MIN_LENGTH(5);
114 VERIFY_MIN_LENGTH(4);
115 this->
pin_ok_ = data[3] == RESPONSE_ACK;
119 case CMD_SET_POSITION: {
120 VERIFY_MIN_LENGTH(4);
125 case CMD_SET_STATE: {
126 VERIFY_MIN_LENGTH(4);
bool has_set_position_response_
bool has_set_state_response_
void decode(const uint8_t *data, uint16_t length)
Am43Packet * get_send_pin_request(uint16_t pin)
Am43Packet * get_set_position_request(uint8_t position)
Am43Packet * get_open_request()
Am43Packet * encode_(uint8_t command, uint8_t *data, uint8_t length)
Am43Packet * get_light_level_request()
Am43Packet * get_stop_request()
Am43Packet * get_position_request()
Am43Packet * get_battery_level_request()
Am43Packet * get_close_request()
const uint8_t START_PACKET[5]
constexpr size_t format_hex_size(size_t byte_count)
Calculate buffer size needed for format_hex_to: "XXXXXXXX...\0" = bytes * 2 + 1.
char * format_hex_to(char *buffer, size_t buffer_size, const uint8_t *data, size_t length)
Format byte array as lowercase hex to buffer (base implementation).