| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /*
- * tr_protocol.h
- *
- * Created on: 2025年10月13日
- * Author: Administrator
- */
- #ifndef CODE_HLX_TR_PROTOCOL_H_
- #define CODE_HLX_TR_PROTOCOL_H_
- #include <stdio.h>
- #include <stdint.h>
- typedef struct
- {
- uint8_t version; // 版本
- uint8_t destAddress; // 目的地址
- uint8_t sourceAddress; // 源地址
- uint8_t type; // 类型
- uint16_t length; // 长度
- uint16_t optionsNum; // option个数
- uint16_t currentOptinNumber; // 当前option的编号
- uint8_t message[2048]; // 报文
- }
- trProtocol;
- // 拼包的方法
- void ProtocolInit(trProtocol* protocol);
- // 设置目的地址
- void ProtocolSetDestAddress(trProtocol* protocol, uint8_t destAddress);
- // 设置源地址
- void ProtocolSetSourceAddress(trProtocol* protocol, uint8_t sourceAddress);
- // 设置类型
- void ProtocolSetType(trProtocol* protocol, uint8_t type);
- // 设置option
- void ProtocolSetOption(trProtocol* protocol, uint16_t optionNumber, uint16_t optionLength, uint8_t* optionValue);
- // 设置字符串类型的option
- void ProtocolSetOptionString(trProtocol* protocol, uint16_t optionNumber, char* optionValue);
- // 设置short类型的option
- void ProtocolSetOptionShort(trProtocol* protocol, uint16_t optionNumber, uint16_t optionValue);
- // 设置char类型的option
- void ProtocolSetOptionChar(trProtocol* protocol, uint16_t optionNumber, uint8_t optionValue);
- // 设置payload
- void ProtocolSetPayload(trProtocol* protocol, uint16_t payloadLength, uint8_t* payload);
- // 设置字符串类型的payload
- void ProtocolSetPayloadString(trProtocol* protocol, const char* payloadString);
- // 打包
- void ProtocolPackage(trProtocol* protocol);
- // 报文解析
- // CRC校验
- uint8_t ProtocolCheckCRC(uint8_t* message, uint16_t messageLength);
- // 获取版本号
- uint8_t ProtocolGetVersion(uint8_t* message, uint16_t messageLength);
- // 获取报文类型
- uint8_t ProtocolGetType(uint8_t* message, uint16_t messageLength);
- // 获取目的地址
- uint8_t ProtocolGetDestAddress(uint8_t* message, uint16_t messageLength);
- // 获取源地址
- uint8_t ProtocolGetSourceAddress(uint8_t* message, uint16_t messageLength);
- // 获取option
- uint16_t ProtocolGetOption(uint8_t* message, uint16_t messageLength, uint16_t optionNumber, uint8_t* optionValue);
- // 获取short类型的option
- uint8_t ProtocolGetOptionShort(uint8_t* message, uint16_t messageLength, uint16_t optionNumber, uint16_t* optionValue);
- // 获取char类型的option
- uint8_t ProtocolGetOptionChar(uint8_t* message, uint16_t messageLength, uint16_t optionNumber, uint8_t* optionValue);
- // 获取payload
- uint16_t ProtocolGetPayload(uint8_t* message, uint16_t messageLength, uint8_t* payload);
- #endif /* CODE_HLX_TR_PROTOCOL_H_ */
|