TuyaOS
com_protocol.h
浏览该文件的文档.
1
11#ifndef _COM_PROTOCOL_H
12#define _COM_PROTOCOL_H
13#include "tuya_cloud_types.h"
14#include "tuya_cloud_com_defs.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#define FR_TYPE_AP_ENCRYPTION (0x11)
21#define FR_TYPE_ENCRYPTION (0x13)
22#define FRM_AP_CFG_WF_V40 (0x14)
23#define WIFI_ERR_APP_TO_DEV (0x15)
24#define FRM_AP_CFG_GET_DEV_INFO (0x16)
25#define FRM_AP_CFG_SET_DEV_SCHEMA (0x17)
26#define FRM_AP_CFG_SET_TIME (0x18)
27#define FRM_AP_CFG_SET_ACTIVE_INFO (0x19)
28#define FRM_LAN_OTA_START (0x1A)
29#define FRM_LAN_OTA_DATA (0x1B)
30#define FRM_LAN_OTA_FINISH (0x1C)
31#define FRM_LAN_RESET (0x1D)
32
33#pragma pack(1)
37typedef struct {
38 UINT_T head; // 0x55aa
39 uint8_t version;/*version:hight 4bit, reserved: low 4bit*/
40 uint8_t reserved;
41 UINT_T fr_num; // frame sequence number
42 UINT_T fr_type; // frame type
43 UINT_T len; // data length
44 BYTE_T data[0]; // the data
46
50typedef struct {
51 UINT_T crc; // CRC of data
52 UINT_T tail; // 0xaa55
54
58typedef struct {
59 UINT_T head; // 0x55aa
60 UINT_T fr_num; // frame sequence number
61 UINT_T fr_type; // frame type
62 UINT_T len; // data length
63 UINT_T ret_code;// return code
64 BYTE_T data[0]; // the data
66#pragma pack()
67
68#define LPV35_FRAME_HEAD_SIZE 4
69#define LPV35_FRAME_VERSION_SIZE 1
70#define LPV35_FRAME_RESERVE_SIZE 1
71#define LPV35_FRAME_SEQUENCE_SIZE 4
72#define LPV35_FRAME_TYPE_SIZE 4
73#define LPV35_FRAME_DATALEN_SIZE 4
74#define LPV35_FRAME_NONCE_SIZE 12
75#define LPV35_FRAME_TAG_SIZE 16
76#define LPV35_FRAME_TAIL_SIZE 4
77
78#define LPV35_FRAME_MINI_SIZE (LPV35_FRAME_HEAD_SIZE + LPV35_FRAME_VERSION_SIZE + LPV35_FRAME_RESERVE_SIZE + \
79 LPV35_FRAME_SEQUENCE_SIZE + LPV35_FRAME_TYPE_SIZE + LPV35_FRAME_DATALEN_SIZE + LPV35_FRAME_NONCE_SIZE + \
80 LPV35_FRAME_TAG_SIZE + LPV35_FRAME_TAIL_SIZE)
81#pragma pack(1)
82typedef struct {
83 uint8_t version: 4;
84 uint8_t reserved: 4;
85 uint8_t reserved2;
86 uint32_t sequence;
87 uint32_t type;
88 uint32_t length;
90
92
93typedef struct {
94 uint32_t ret_code;
95 uint8_t data[0];
97#pragma pack()
98
99typedef struct {
100 uint32_t sequence;
101 uint32_t type;
102 uint8_t* data;
103 uint32_t data_len;
105
106#define APP_KEY_LEN 16
107
118OPERATE_RET parse_data_with_cmd(IN CONST DP_CMD_TYPE_E cmd, IN BYTE_T *data, IN CONST INT_T len, OUT CHAR_T **out_data);
119
132OPERATE_RET pack_data_with_cmd(IN CONST DP_CMD_TYPE_E cmd, IN CONST CHAR_T *src, \
133 IN CONST UINT_T pro, IN CONST UINT_T num, \
134 OUT BYTE_T **out, OUT UINT_T *out_len);
135
136/***********************************************************
137* Function: parse_data_with_cmd
138* Input: cmd data len
139* Output: out_data
140* Return: OPERATE_RET
141***********************************************************/
142
155OPERATE_RET tuya_parse_protocol_data(IN CONST DP_CMD_TYPE_E cmd, IN CONST CHAR_T *pv, IN BYTE_T *data, \
156 IN CONST INT_T len, IN CONST CHAR_T *key, OUT CHAR_T **out_data);
157
172OPERATE_RET tuya_pack_protocol_data(IN CONST DP_CMD_TYPE_E cmd, IN CONST CHAR_T *pv, IN CONST CHAR_T *src, \
173 IN CONST UINT_T pro, IN CONST UINT_T num, IN UINT_T from, IN BYTE_T *key, \
174 OUT CHAR_T **out, OUT UINT_T *out_len);
175
186OPERATE_RET tuya_svc_lan_decrypt_data(IN BYTE_T *data, IN CONST INT_T len,
187 IN CONST BYTE_T *key, OUT CHAR_T **out_data);
188
200OPERATE_RET lpv35_frame_serialize(CONST BYTE_T* key, INT_T key_len,
201 CONST lpv35_frame_object_t* input,
202 BYTE_T* output, INT_T* olen);
203
215OPERATE_RET lpv35_frame_parse(CONST BYTE_T* key, INT_T key_len,
216 CONST BYTE_T* input, INT_T ilen,
217 lpv35_frame_object_t* output);
218
227
228#ifdef __cplusplus
229}
230#endif
231#endif
232
OPERATE_RET tuya_svc_lan_decrypt_data(IN BYTE_T *data, IN CONST INT_T len, IN CONST BYTE_T *key, OUT CHAR_T **out_data)
Decrypt LAN data
OPERATE_RET lpv35_frame_parse(CONST BYTE_T *key, INT_T key_len, CONST BYTE_T *input, INT_T ilen, lpv35_frame_object_t *output)
lpv35 frame parse
OPERATE_RET tuya_parse_protocol_data(IN CONST DP_CMD_TYPE_E cmd, IN CONST CHAR_T *pv, IN BYTE_T *data, IN CONST INT_T len, IN CONST CHAR_T *key, OUT CHAR_T **out_data)
parse protocol data
OPERATE_RET pack_data_with_cmd(IN CONST DP_CMD_TYPE_E cmd, IN CONST CHAR_T *src, IN CONST UINT_T pro, IN CONST UINT_T num, OUT BYTE_T **out, OUT UINT_T *out_len)
pack data
OPERATE_RET tuya_pack_protocol_data(IN CONST DP_CMD_TYPE_E cmd, IN CONST CHAR_T *pv, IN CONST CHAR_T *src, IN CONST UINT_T pro, IN CONST UINT_T num, IN UINT_T from, IN BYTE_T *key, OUT CHAR_T **out, OUT UINT_T *out_len)
pack protocol data
OPERATE_RET lpv35_frame_serialize(CONST BYTE_T *key, INT_T key_len, CONST lpv35_frame_object_t *input, BYTE_T *output, INT_T *olen)
add head and tail in lpv35 frame
OPERATE_RET parse_data_with_cmd(IN CONST DP_CMD_TYPE_E cmd, IN BYTE_T *data, IN CONST INT_T len, OUT CHAR_T **out_data)
parse data
INT_T lpv35_frame_buffer_size_get(lpv35_frame_object_t *frame_obj)
get lpv35 frame buffer size
LAN protocol frame head format (from app)
Definition: com_protocol.h:37
LAN protocol frame head format (from device)
Definition: com_protocol.h:58
LAN protocol frame tail format (from device)
Definition: com_protocol.h:50
Definition: com_protocol.h:82
Definition: com_protocol.h:99
Definition: com_protocol.h:93