// // Created by yelv1 on 24-12-31. // #ifndef RS485_PROTOCOL_H #define RS485_PROTOCOL_H #include "gd32e23x.h" #include "systick.h" #include "gd32e23x_libopt.h" #include "board_config.h" #include "usart.h" #include "fwdgt.h" #include #include #include /******************************************************************************/ #define RX_BUFFER_SIZE 32 #define PROTOCOL_PACKAGE_HEADER 0xD5 #define PROTOCOL_BOARD_TYPE 0x04 #define PROTOCOL_PACKAGE_LENGTH 0x02 /******************************************************************************/ typedef enum { VALIDATION_SUCCESS = 0, VALIDATION_CRC_ERROR = 1, VALIDATION_HEADER_ERROR = 2, VALIDATION_TYPE_ERROR = 4, VALIDATION_LENGTH_ERROR = 8 } validation_result_t; /******************************************************************************/ void process_command(uint8_t* cmd, size_t length); uint8_t calculate_crc(uint8_t data[], uint8_t data_length); validation_result_t validate_package_crc(uint8_t* data, uint8_t data_length); validation_result_t validate_package_header(uint8_t* data); validation_result_t validate_package_type(uint8_t* data); validation_result_t validate_data_length(uint8_t* data); void gd60914_tempture_report(void); #endif //RS485_PROTOCOL_H