97 lines
1.9 KiB
C
97 lines
1.9 KiB
C
#ifndef _PROTOCOL_H_
|
|
#define _PROTOCOL_H_
|
|
|
|
|
|
#include "stdint.h"
|
|
|
|
#define PROTOCOL_BUF_MAX (512)
|
|
|
|
#define PROTOCOL_HEAD (0x527A)
|
|
|
|
#define PROTOCOL_FRAME_HEAD_SIZE (7) // 最小帧长:头(2) + 地址(2) + 命令(1) + 长度(2) + CRC(2)
|
|
|
|
#define PROTOCOL_FRAME_MIN_SIZE (9) // 最小帧长:头(2) + 地址(2) + 命令(1) + 长度(2) + CRC(2)
|
|
// 错误码定义
|
|
typedef enum {
|
|
PROTOCOL_SUCCESS = 0,
|
|
PROTOCOL_ERR_INVALID_PARAM,
|
|
PROTOCOL_ERR_BUFFER_OVERFLOW,
|
|
PROTOCOL_ERR_CRC
|
|
}protocol_err_t;
|
|
|
|
typedef enum
|
|
{
|
|
PROTOCOL_CMD_GET_AD =0x81,
|
|
PROTOCOL_CMD_GET_TP =0x82,
|
|
|
|
PROTOCOL_CMD_SET_ID =0x83,
|
|
PROTOCOL_CMD_GET_ID =0x84,
|
|
|
|
PROTOCOL_CMD_SET_TP_OFFSET =0x8A,
|
|
PROTOCOL_CMD_GET_TP_OFFSET =0x8B,
|
|
|
|
PROTOCOL_CMD_RESET_CHANNEL =0x8F,
|
|
|
|
}protocol_cmd_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t status;
|
|
float value;
|
|
} ch_data_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t dev_status;
|
|
ch_data_t channels[8];
|
|
uint8_t reserved[7];
|
|
} ad_datas_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t dev_status;
|
|
ch_data_t channels[8];
|
|
uint8_t reserved[7];
|
|
} tp_datas_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t id;
|
|
uint8_t reserved[3];
|
|
} id_data_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t id;
|
|
union{
|
|
uint8_t bytes[4];
|
|
float value;
|
|
}prams;
|
|
|
|
} offset_set_data_t,offset_get_data_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t id;
|
|
}offset_get_param_t;
|
|
|
|
extern int protocol_pack_frame(
|
|
uint16_t slave_addr,
|
|
uint8_t command,const
|
|
uint8_t *payload,
|
|
uint16_t payload_len,
|
|
uint8_t *buffer,uint16_t buffer_size,
|
|
uint16_t *packed_len
|
|
);
|
|
|
|
extern int protocol_unpack_frame(
|
|
const uint8_t *frame,
|
|
uint16_t frame_len,
|
|
uint16_t *slave_addr,
|
|
uint8_t *command,
|
|
uint8_t *payload,
|
|
uint16_t *payload_len);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|