7static const uint8_t FRAME_BUF_MAX_SIZE = 128;
8static const uint8_t PRODUCT_BUF_MAX_SIZE = 32;
10static const uint8_t FRAME_CONTROL_WORD_INDEX = 2;
11static const uint8_t FRAME_COMMAND_WORD_INDEX = 3;
12static const uint8_t FRAME_DATA_INDEX = 6;
14static const uint8_t FRAME_HEADER1_VALUE = 0x53;
15static const uint8_t FRAME_HEADER2_VALUE = 0x59;
16static const uint8_t FRAME_TAIL1_VALUE = 0x54;
17static const uint8_t FRAME_TAIL2_VALUE = 0x43;
19static const uint8_t CONTROL_MAIN = 0x01;
20static const uint8_t CONTROL_PRODUCT_INFORMATION = 0x02;
21static const uint8_t CONTROL_WORK = 0x05;
22static const uint8_t CONTROL_UNDERLYING_FUNCTION = 0x08;
23static const uint8_t CONTROL_HUMAN_INFORMATION = 0x80;
25static const uint8_t COMMAND_HEARTBEAT = 0x01;
26static const uint8_t COMMAND_RESTART = 0x02;
28static const uint8_t COMMAND_PRODUCT_MODE = 0xA1;
29static const uint8_t COMMAND_PRODUCT_ID = 0xA2;
30static const uint8_t COMMAND_HARDWARE_MODEL = 0xA3;
31static const uint8_t COMMAND_FIRMWARE_VERSION = 0xA4;
33static const uint8_t GET_HEARTBEAT[] = {
34 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_MAIN, COMMAND_HEARTBEAT, 0x00, 0x01, 0x0F, 0xBE,
35 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
37static const uint8_t SET_RESTART[] = {
38 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_MAIN, COMMAND_RESTART, 0x00, 0x01, 0x0F, 0xBF,
39 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
42static const uint8_t GET_PRODUCT_MODE[] = {
43 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_PRODUCT_INFORMATION, COMMAND_PRODUCT_MODE, 0x00, 0x01, 0x0F, 0x5F,
44 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
46static const uint8_t GET_PRODUCT_ID[] = {
47 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_PRODUCT_INFORMATION, COMMAND_PRODUCT_ID, 0x00, 0x01, 0x0F, 0x60,
48 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
50static const uint8_t GET_HARDWARE_MODEL[] = {
53 CONTROL_PRODUCT_INFORMATION,
54 COMMAND_HARDWARE_MODEL,
62static const uint8_t GET_FIRMWARE_VERSION[] = {
65 CONTROL_PRODUCT_INFORMATION,
66 COMMAND_FIRMWARE_VERSION,
75static const uint8_t GET_SCENE_MODE[] = {
76 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_WORK, 0x87, 0x00, 0x01, 0x0F, 0x48,
77 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
79static const uint8_t GET_SENSITIVITY[] = {
80 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_WORK, 0x88, 0x00, 0x01, 0x0F, 0x49,
81 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
83static const uint8_t GET_CUSTOM_MODE[] = {
84 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_WORK, 0x89, 0x00, 0x01, 0x0F, 0x4A,
85 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
88static const uint8_t UNDERLYING_SWITCH_ON[] = {
89 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x00, 0x00, 0x01, 0x01, 0xB6,
90 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
92static const uint8_t UNDERLYING_SWITCH_OFF[] = {
93 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x00, 0x00, 0x01, 0x00, 0xB5,
94 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
97static const uint8_t GET_RADAR_OUTPUT_INFORMATION_SWITCH[] = {
98 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x80, 0x00, 0x01, 0x0F, 0x44,
99 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
101static const uint8_t GET_SPATIAL_STATIC_VALUE[] = {
102 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x81, 0x00, 0x01, 0x0F, 0x45,
103 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
105static const uint8_t GET_SPATIAL_MOTION_VALUE[] = {
106 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x82, 0x00, 0x01, 0x0F, 0x46,
107 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
109static const uint8_t GET_DISTANCE_OF_STATIC_OBJECT[] = {
110 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x83, 0x00, 0x01, 0x0F, 0x47,
111 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
113static const uint8_t GET_DISTANCE_OF_MOVING_OBJECT[] = {
114 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x84, 0x00, 0x01, 0x0F, 0x48,
115 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
117static const uint8_t GET_TARGET_MOVEMENT_SPEED[] = {
118 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x85, 0x00, 0x01, 0x0F, 0x49,
119 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
121static const uint8_t GET_EXISTENCE_THRESHOLD[] = {
122 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x88, 0x00, 0x01, 0x0F, 0x4C,
123 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
125static const uint8_t GET_MOTION_THRESHOLD[] = {
126 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x89, 0x00, 0x01, 0x0F, 0x4D,
127 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
129static const uint8_t GET_EXISTENCE_BOUNDARY[] = {
130 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x8A, 0x00, 0x01, 0x0F, 0x4E,
131 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
133static const uint8_t GET_MOTION_BOUNDARY[] = {
134 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x8B, 0x00, 0x01, 0x0F, 0x4F,
135 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
137static const uint8_t GET_MOTION_TRIGGER_TIME[] = {
138 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x8C, 0x00, 0x01, 0x0F, 0x50,
139 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
141static const uint8_t GET_MOTION_TO_REST_TIME[] = {
142 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x8D, 0x00, 0x01, 0x0F, 0x51,
143 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
145static const uint8_t GET_CUSTOM_UNMAN_TIME[] = {
146 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_UNDERLYING_FUNCTION, 0x8E, 0x00, 0x01, 0x0F, 0x52,
147 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
150static const uint8_t GET_HUMAN_STATUS[] = {
151 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_HUMAN_INFORMATION, 0x81, 0x00, 0x01, 0x0F, 0xBD,
152 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
154static const uint8_t GET_HUMAN_MOTION_INFORMATION[] = {
155 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_HUMAN_INFORMATION, 0x82, 0x00, 0x01, 0x0F, 0xBE,
156 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
158static const uint8_t GET_BODY_MOTION_PARAMETERS[] = {
159 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_HUMAN_INFORMATION, 0x83, 0x00, 0x01, 0x0F, 0xBF,
160 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
162static const uint8_t GET_UNMANNED_TIME[] = {
163 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_HUMAN_INFORMATION, 0x8A, 0x00, 0x01, 0x0F, 0xC6,
164 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,
166static const uint8_t GET_KEEP_AWAY[] = {
167 FRAME_HEADER1_VALUE, FRAME_HEADER2_VALUE, CONTROL_HUMAN_INFORMATION, 0x8B, 0x00, 0x01, 0x0F, 0xC7,
168 FRAME_TAIL1_VALUE, FRAME_TAIL2_VALUE,