/* * @Author : stark1898y 1658608470@qq.com * @Date : 2024-12-12 15:55:38 * @LastEditors : stark1898y 1658608470@qq.com * @LastEditTime : 2024-12-17 14:14:36 * @FilePath : \BLE_TYQ_CH592F\BSP\inc\bsp_valve.h * @Description : * * Copyright (c) 2024 by yzy, All Rights Reserved. */ #ifndef __BSP_VALVE_H__ #define __BSP_VALVE_H__ #include "CONFIG.h" extern tmosTaskID vavle_task_id; #define VAVLE_RX_DATA_EVT (0x0001 << 0) #define VAVLE_TX_DATA_EVT (0x0001 << 1) #define VAVLE_CLOSE_START_EVT (0x0001 << 2) // 关阀,开始充电 #define VAVLE_CLOSE_ACTION_EVT (0x0001 << 3) // 关阀,动作 #define VAVLE_CLOSE_END_EVT (0x0001 << 4) // 关阀结束 #define VAVLE_LOW_VBAT_ALARM_EVT (0x0001 << 5) // 低电压提醒 #define VAVLE_DECT_EVT (0x0001 << 6) // 循环检测 #define VALVE_LOW_VBAT_ALARM_PERIOD_MS (1600 * 60 * 10) #define VALVE_DECT_PERIOD_MS (1600 * 60 * 10) #define CHARGE_TIME_MS 1000 // 2.2V #define LOW_VABAT_ALARM_VALUE 22 #define LOW_VABAT_CLOSE_VALUE 20 #define FRAME_HEADER 0xAA #define FRAME_TAIL 0x55 // 0xAA CMD/DATA/ DATA_LEN (DATA) checksum 0x55 typedef enum { kCmdCfg = 0X01, kCmdCloseVavle, kCmdOpenVavle, kCmdData, } TeFrameCmd; typedef struct __attribute__((packed)) { TeFrameCmd cmd; // CMD/DATA uint8_t len; // DATA_LEN // TsValveData data; uint8_t data[]; } TsFrameData; typedef struct __attribute__((packed)) { uint8_t len; uint8_t buf[64]; } TsRawFrameData; extern TsRawFrameData RelyData; // 阀门类型 typedef enum { kTyq = 0X01, kZbf, kDcf, } TeVavleType; typedef enum { kUnknown = 0, kClosed, kOpened, } TeValveSwitchStatus; typedef struct __attribute__((packed)) { // uint8_t status; // 1B 阀门工作状态 超欠压、过流 // uint8_t connct_status; // 1B 阀门连接状态 (电磁阀BLE控制盒) 0=未连接 1=已连接 uint8_t switch_status; // 1B 阀门开关状态 0=未知 1=关闭=关闭过,未按按键恢复 2=关闭过,按下了恢复键 = 打开 int8_t temp; // 1B 阀门温度 有符号整数 25 ℃ uint32_t in_pressure; // 4B 阀门入口压力 Pa uint32_t out_pressure; // 4B 阀门出口压力 Pa uint32_t atm_pressure; // 4B 阀门大气压力 Pa uint8_t type; // 阀门类型 uint8_t bat; // 1B 电池电压 30=3V,18=1.8V uint8_t humi; // 1B 阀门湿度 %RH int8_t rssi; } TsValveData; extern TsValveData gValveData; uint8_t CheckSum(const uint8_t *data, size_t len); void BSP_VAVLE_Init(void); TsFrameData* BSP_VAVLE_GetFrameData(uint8_t *data, uint8_t len); uint8_t GenerateRawFrame(TsRawFrameData *pRawData, uint8_t cmd, const uint8_t *p_src, uint8_t src_len); void BSP_VALVE_Generate_Data(TsRawFrameData *pRawData, uint8_t switch_status, uint8_t bat, int8_t temp, uint8_t humi); void BSP_VALVE_Generate_ValveResponse(TsRawFrameData *pRawData, TeFrameCmd cmd, uint8_t status); void BSP_VALVE_Generate_UploadData(TsRawFrameData *pRawData); #endif // ! __BSP_VALVE_H__