/* * tr_protocol.h * * Created on: 2025年10月13日 * Author: Administrator */ #ifndef CODE_HLX_TR_PROTOCOL_H_ #define CODE_HLX_TR_PROTOCOL_H_ #include #include 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_ */