2025-05-13 17:29:54 +08:00
|
|
|
|
/*
|
|
|
|
|
* @Author : stark1898y 1658608470@qq.com
|
|
|
|
|
* @Date : 2024-12-12 15:55:38
|
|
|
|
|
* @LastEditors : stark1898y 1658608470@qq.com
|
|
|
|
|
* @LastEditTime : 2025-02-24 16:39:07
|
|
|
|
|
* @FilePath : \BLE_TYQ_CH584M\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_OPEN_START_EVT (0x0001 << 5) // 开阀,开始准备
|
|
|
|
|
#define VAVLE_OPEN_ACTION_EVT (0x0001 << 6) // 开阀,动作
|
|
|
|
|
#define VAVLE_OPEN_END_EVT (0x0001 << 9) // 开阀结束
|
|
|
|
|
|
|
|
|
|
#define VAVLE_LOW_VBAT_ALARM_EVT (0x0001 << 7) // 低电压提醒
|
|
|
|
|
|
|
|
|
|
#define VAVLE_LOOP_DECT_EVT (0x0001 << 8) // 循环检测
|
|
|
|
|
|
2025-05-15 15:15:37 +08:00
|
|
|
|
#define VAVLE_LOW_VBAT_LED_OFF_EVT (0x0001 << 10) // 低电压LED关闭事件
|
2025-05-13 17:29:54 +08:00
|
|
|
|
|
2025-05-22 14:08:24 +08:00
|
|
|
|
#define VAVLE_TIMER_CLOSE_EVT (0x0001 << 11) // 定时关阀事件
|
2025-05-13 17:29:54 +08:00
|
|
|
|
|
2025-05-22 14:08:24 +08:00
|
|
|
|
#define VALVE_LOW_VBAT_ALARM_PERIOD_MS (1600 * 60 * 10)
|
|
|
|
|
#define VALVE_DECT_PERIOD_MS (1600 * 60 * 10)
|
2025-05-13 17:29:54 +08:00
|
|
|
|
|
|
|
|
|
|
2025-05-15 15:15:37 +08:00
|
|
|
|
#define CHARGE_TIME_MS (1500)
|
2025-05-13 17:29:54 +08:00
|
|
|
|
|
|
|
|
|
// 2.2V
|
2025-05-15 15:15:37 +08:00
|
|
|
|
#define LOW_VABAT_ALARM_VALUE 24
|
2025-05-13 17:29:54 +08:00
|
|
|
|
|
2025-05-15 15:15:37 +08:00
|
|
|
|
#define LOW_VABAT_CLOSE_VALUE 22
|
2025-05-13 17:29:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define FRAME_HEADER 0xAA
|
|
|
|
|
#define FRAME_TAIL 0x55
|
|
|
|
|
|
|
|
|
|
// 0xAA CMD/DATA/ DATA_LEN (DATA) checksum 0x55
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
kCmdCfg = 0X01,
|
2025-05-25 12:15:34 +08:00
|
|
|
|
kCmdCloseVavle, // 关阀
|
|
|
|
|
kCmdOpenVavle, // 开阀
|
|
|
|
|
kCmdData, // 命令数据(心跳数据)
|
|
|
|
|
kValveCmdOverPressure, // 超压关阀
|
|
|
|
|
kValveCmdUnderPressure, // 欠压关阀
|
|
|
|
|
kValveCmdOverCurrent, // 过流关阀
|
|
|
|
|
kValveCmdMicroLeak, // 微漏关阀
|
|
|
|
|
kValveCmdTimer, // 定时关阀
|
|
|
|
|
kValveCmdOpenWithStove, // 开灶开阀
|
|
|
|
|
kValveCmdCloseWithStove, // 关灶关阀
|
|
|
|
|
kValveCmdOverTemperature, // 超温关阀
|
|
|
|
|
kValveCmdDelayClose, // 延时关阀
|
|
|
|
|
kValveCmdManualClose, // 手动关阀
|
2025-05-28 14:39:39 +08:00
|
|
|
|
KValveCmdTimeSet, // 设置定时关阀时间
|
2025-05-25 12:15:34 +08:00
|
|
|
|
kValveCmdTimeResp, // 设置定时关阀时间响应
|
2025-05-25 13:47:23 +08:00
|
|
|
|
kValveCmdLowBatClose, // 低电量关阀
|
|
|
|
|
kValveCmdManualOpen, // 手动开阀
|
2025-05-13 17:29:54 +08:00
|
|
|
|
} 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
|
|
|
|
|
{
|
2025-05-28 14:39:39 +08:00
|
|
|
|
kOpened= 0,
|
2025-05-13 17:29:54 +08:00
|
|
|
|
kClosed,
|
|
|
|
|
kDisconnect,
|
|
|
|
|
} TeValveSwitchStatus;
|
|
|
|
|
|
|
|
|
|
typedef struct __attribute__((packed))
|
|
|
|
|
{
|
2025-05-28 14:39:39 +08:00
|
|
|
|
// uint8_t valve_id;
|
|
|
|
|
// uint8_t valve_mac[6];
|
|
|
|
|
// uint8_t connct_status; // 1B 阀门连接状态 (电磁阀BLE控制盒) 0=未连接 1=已连接
|
|
|
|
|
uint8_t switch_status; // 1B 阀门开关状态 0=未知 1=关闭, 2=打开
|
|
|
|
|
int8_t temp; // 1B 阀门温度 有符号整数 25 ℃
|
2025-05-13 17:29:54 +08:00
|
|
|
|
uint32_t in_pressure; // 4B 阀门入口压力 Pa
|
2025-05-28 14:39:39 +08:00
|
|
|
|
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
|
2025-05-13 17:29:54 +08:00
|
|
|
|
int8_t rssi;
|
|
|
|
|
} TsValveData;
|
|
|
|
|
extern TsValveData gValveData;
|
|
|
|
|
|
2025-05-28 14:39:39 +08:00
|
|
|
|
|
2025-05-24 13:53:07 +08:00
|
|
|
|
typedef struct __attribute__((packed))
|
|
|
|
|
{
|
|
|
|
|
uint32_t timer_minutes; // 设置的定时分钟数,0表示未激活
|
|
|
|
|
uint32_t start_time; // 定时器启动时的时间戳
|
|
|
|
|
uint8_t is_active; // 定时器是否激活 0=未激活 1=激活
|
|
|
|
|
} TsTimerCloseState;
|
|
|
|
|
|
|
|
|
|
extern TsTimerCloseState gTimerCloseState;
|
|
|
|
|
|
2025-05-13 17:29:54 +08:00
|
|
|
|
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);
|
|
|
|
|
|
2025-05-28 14:39:39 +08:00
|
|
|
|
void BSP_VALVE_Generate_Data(TsRawFrameData *pRawData, TeFrameCmd cmd);
|
2025-05-13 17:29:54 +08:00
|
|
|
|
void BSP_VALVE_Generate_ValveResponse(TsRawFrameData *pRawData, TeFrameCmd cmd, uint8_t status);
|
|
|
|
|
|
|
|
|
|
void BSP_VALVE_Generate_UploadData(TsRawFrameData *pRawData);
|
|
|
|
|
|
2025-05-25 13:47:23 +08:00
|
|
|
|
uint8_t BSP_VALVE_Close(TeFrameCmd close_reason);
|
|
|
|
|
uint8_t BSP_VALVE_Open(TeFrameCmd open_reason);
|
|
|
|
|
|
2025-05-24 13:53:07 +08:00
|
|
|
|
static uint8_t BSP_VALVE_SetTimerClose(uint32_t minutes);
|
|
|
|
|
static uint8_t BSP_VALVE_CancelTimerClose(void);
|
|
|
|
|
static uint32_t BSP_VALVE_GetRemainingMinutes(void);
|
2025-05-13 17:29:54 +08:00
|
|
|
|
#endif // ! __BSP_VALVE_H__
|