/* * @Author: MBW * @Date: 2024-03-20 17:12:31 * @LastEditors: MBW * @LastEditTime: 2024-03-27 09:57:40 * @FilePath: \CX32L003_PROJECT\bsp\inc\bsp_history.h * @Description: * */ #ifndef __BSP_HISTORY_H__ #define __BSP_HISTORY_H__ #include "rtthread.h" #include "rtdef.h" #define HR_THREAD_STACK_SIZE (1536) #define HR_THREAD_PRIORITY (10) #define HR_THREAD_TIMESLICE (5) /*一组数据帧:帧头(1字节) + 控制码(2字节) + 帧长度(1字节) + 数据(n字节) + 校验码 + 帧尾(1字节)*/ /*帧头:0xAA*/ /*帧尾:0x55*/ /*控制码:帧类型*/ /*帧长度:数据域长度*/ /*数据域:数据*/ /*校验码:数据域的校验和*/ #define FRAME_HEADER (0xAA) #define FRAME_TAIL (0x55) #define HOST_FRAME_MIN_LEN (6U) #define FRAME_DATA_LEN (7U) typedef enum { kNumOfRecords = 0U, kAlarmRecord, // at least 200 kAlarmRcyRecord, // at least 200 kFaultRecord, // at least 100 kFaultRcyRecord, // at least 100 kPowerFailureRecord, // at least 50 kPowerOnRecord, // at least 50 kSensorFailureRecord, // at least 1 kGetCurrentTime, /*扩展指令*/ // 以下是在国标原基础上所扩展的 kGetCurrentTimeSecond, // include second kSetCurrentTime, kSetFactoryTime, kSetExpirationTime, kSetAlarmValue, kOutSysStatus, // 0x0E 不能动,因为说明书里面写好了 kGetAlarmValue, kGetMqVoltage, kSetSysStatus, kGetSysStatus, kEraseRecords, kGetFactoryTime, kGetExpirationTime, } TeFrameC2; #pragma pack(1) typedef struct { rt_uint8_t year_h; rt_uint8_t year_l; rt_uint8_t month; rt_uint8_t day; rt_uint8_t hour; rt_uint8_t minute; } TsRecordsTime; #pragma pack() #pragma pack(1) typedef struct { rt_uint8_t c1; TeFrameC2 c2; rt_uint8_t len; rt_uint8_t data[]; } TsFrameData; #pragma pack() #pragma pack(1) typedef struct { rt_uint8_t len; rt_uint8_t buf[256]; } TsRawFrameData; #pragma pack() extern rt_sem_t hr_rx_sem; int BSP_HR_Init(void); TsFrameData *HR_GetFrameData(const rt_uint8_t *p_src, const rt_uint8_t src_len); std_status_t HR_ProcessData(const TsFrameData *pHostFrameData); uint8_t HR_ProcessData(const TsFrameData *pHostFrameData); rt_uint8_t HR_ProcessData(const TsFrameData *pHostFrameData); rt_uint8_t HR_GenerateRawFrame(TsRawFrameData *pRawData, rt_uint8_t c1, TeFrameC2 c2, const rt_uint8_t *p_src, rt_uint8_t src_len); #endif // !__BSP_HISTORY_H__