13 for (
int i = 0; i <
len; i++)
14 sprintf(&buf[i * 2],
"%02x", data[i]);
15 std::string ret = buf;
21 return this->
encode_(0xA2, &data, 1);
26 return this->
encode_(0xAA, &data, 1);
31 return this->
encode_(CMD_GET_POSITION, &data, 1);
36 data[0] = (pin & 0xFF00) >> 8;
38 return this->
encode_(CMD_SEND_PIN, data, 2);
43 return this->
encode_(CMD_SET_STATE, &data, 1);
48 return this->
encode_(CMD_SET_STATE, &data, 1);
53 return this->
encode_(CMD_SET_STATE, &data, 1);
80#define VERIFY_MIN_LENGTH(x) \
93 if (
length < 2 || data[0] != 0x9a)
96 case CMD_GET_BATTERY_LEVEL: {
102 case CMD_GET_LIGHT_LEVEL: {
103 VERIFY_MIN_LENGTH(5);
108 case CMD_GET_POSITION: {
109 VERIFY_MIN_LENGTH(6);
114 case CMD_NOTIFY_POSITION: {
115 VERIFY_MIN_LENGTH(5);
121 VERIFY_MIN_LENGTH(4);
122 this->
pin_ok_ = data[3] == RESPONSE_ACK;
126 case CMD_SET_POSITION: {
127 VERIFY_MIN_LENGTH(4);
132 case CMD_SET_STATE: {
133 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]
std::string pkt_to_hex(const uint8_t *data, uint16_t len)
Providing packet encoding functions for exchanging data with a remote host.