1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #ifndef _DLT645_PRIVATE_H
- #define _DLT645_PRIVATE_H
- #include "dlt645.h"
- #ifdef DLT645_DEBUG
- #define DLT645_LOG kprintf
- #else
- #define DLT645_LOG(...)
- #endif
- #define DL645_START_CODE 0x68
- #define DL645_STOP_CODE 0x16
- #define DL645_PREMBLE_ENABLE 0 //前导码使能标记
- #define DL645_PREMBLE 0xFE //前导码
- #define DL645_ADDR_LEN 6 //设备地址长度
- #define DL645_CONTROL_POS 8 //控制码位置
- #define DL645_LEN_POS 9 //长度位置
- #define DL645_DATA_POS 10 //数据位置
- #define DL645_WR_LEN 50 //写入数据命令的长度
- #define DL645_RESP_LEN 60 //读取数据命令的长度
- #define C_TD_MASK 0x80 //主从标志位
- #define C_TD_POS 7 //主从标志位比特位
- #define C_TD_MASTER 0 //主站发出的命令帧
- #define C_TD_SLAVE 1 //从站发出的应答帧
- #define C_ACK_MASK 0x40 //从站是否正确应答标志位
- #define C_ACK_POS 6 //从站应答标志位比特位
- #define C_ACK_OK 0 //从站应答正确
- #define C_ACK_ERR 1 //从站应答错误
- #define C_FU_MASK 0x20 //是否有后续帧标志位
- #define C_FU_POS 5 //后续帧标志位比特位
- #define C_FU_NONE 0 //无后续帧
- #define C_FU_EXT 1 //有后续帧
- #define C_CODE_MASK 0x1F //功能码标志位
- //645 公共校验
- extern int dlt645_common_check(uint8_t *msg, int len, uint8_t *addr);
- //645 和校验
- extern int _crc(uint8_t *msg, int len);
- //645 调用底层接口接收数据
- extern int dlt645_receive_msg(dlt645_t *ctx, uint8_t *msg, uint16_t len, uint32_t code, dlt645_protocal protocal);
- //645 调用底层接口发送
- extern int dlt645_send_msg(dlt645_t *ctx, uint8_t *msg, int len);
- //将接收到的dlt645数据包中的数据转化为整数
- extern int data_package_translate_to_int(uint8_t *read_data, uint16_t len);
- //根据数据格式将645协议读取的数据转换为真实数据并存储
- extern int dlt645_data_parse_by_format_to_float(uint8_t *read_data, uint16_t read_len, const char *data_format, uint8_t *store_address);
- #endif
|