110 lines
2.5 KiB
C
110 lines
2.5 KiB
C
/*
|
||
* @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__
|