12 return this->
encode_(0xA2, &data, 1);
17 return this->
encode_(0xAA, &data, 1);
22 return this->
encode_(CMD_GET_POSITION, &data, 1);
27 data[0] = (pin & 0xFF00) >> 8;
29 return this->
encode_(CMD_SEND_PIN, data, 2);
34 return this->
encode_(CMD_SET_STATE, &data, 1);
39 return this->
encode_(CMD_SET_STATE, &data, 1);
44 return this->
encode_(CMD_SET_STATE, &data, 1);
73#define VERIFY_MIN_LENGTH(x) \
87 if (
length < 2 || data[0] != 0x9a)
90 case CMD_GET_BATTERY_LEVEL: {
96 case CMD_GET_LIGHT_LEVEL: {
102 case CMD_GET_POSITION: {
103 VERIFY_MIN_LENGTH(6);
108 case CMD_NOTIFY_POSITION: {
109 VERIFY_MIN_LENGTH(5);
115 VERIFY_MIN_LENGTH(4);
116 this->
pin_ok_ = data[3] == RESPONSE_ACK;
120 case CMD_SET_POSITION: {
121 VERIFY_MIN_LENGTH(4);
126 case CMD_SET_STATE: {
127 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]
Providing packet encoding functions for exchanging data with a remote host.
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).