Files
LaserTracing_Debug/Project/GateWay/source/User/Inc/protocol.h
T

97 lines
1.9 KiB
C
Raw Normal View History

2026-04-23 13:56:52 +08:00
#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