代码暂存 添加特定枚举值用于上报
This commit is contained in:
parent
ca43b87897
commit
de383dc573
|
@ -55,12 +55,20 @@ extern tmosTaskID vavle_task_id;
|
|||
typedef enum
|
||||
{
|
||||
kCmdCfg = 0X01,
|
||||
kCmdCloseVavle,
|
||||
kCmdOpenVavle,
|
||||
kCmdData,
|
||||
kCmdTimerClose = 0x05, // 设置定时关阀
|
||||
kCmdCancelTimer = 0x06, // 取消定时关阀
|
||||
kCmdQueryTimer = 0x07, // 查询定时器状态
|
||||
kCmdCloseVavle, // 关阀
|
||||
kCmdOpenVavle, // 开阀
|
||||
kCmdData, // 命令数据(心跳数据)
|
||||
kValveCmdOverPressure, // 超压关阀
|
||||
kValveCmdUnderPressure, // 欠压关阀
|
||||
kValveCmdOverCurrent, // 过流关阀
|
||||
kValveCmdMicroLeak, // 微漏关阀
|
||||
kValveCmdTimer, // 定时关阀
|
||||
kValveCmdOpenWithStove, // 开灶开阀
|
||||
kValveCmdCloseWithStove, // 关灶关阀
|
||||
kValveCmdOverTemperature, // 超温关阀
|
||||
kValveCmdDelayClose, // 延时关阀
|
||||
kValveCmdManualClose, // 手动关阀
|
||||
kValveCmdTimeResp, // 设置定时关阀时间响应
|
||||
} TeFrameCmd;
|
||||
|
||||
typedef struct __attribute__((packed))
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
TsValveData gValveData = {0};
|
||||
TsRawFrameData RelyData;
|
||||
TsTimerCloseState gTimerCloseState = {0};
|
||||
static TeFrameCmd gValveCloseReason = kCmdCloseVavle; // 默认为普通关阀命令
|
||||
|
||||
tmosTaskID vavle_task_id = INVALID_TASK_ID;
|
||||
|
||||
|
@ -190,30 +191,32 @@ static void VAVLE_Task_ProcessTmosMsg(uint8_t *p_rev_msg) // 处理TMOS消息函
|
|||
break;
|
||||
case kCmdCloseVavle: // 关阀命令
|
||||
logDebug("kCmdCloseVavle");
|
||||
gValveCloseReason = kCmdCloseVavle; // 确保使用普通关阀命令
|
||||
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||
|
||||
break;
|
||||
|
||||
case kCmdOpenVavle: // 开阀命令
|
||||
logDebug("kCmdOpenVavle");
|
||||
tmos_set_event(vavle_task_id, VAVLE_OPEN_START_EVT);
|
||||
break;
|
||||
case kCmdTimerClose: // 设置定时关阀命令
|
||||
case kValveCmdTimer: // 设置定时关阀命令
|
||||
{
|
||||
uint8_t result = 0;
|
||||
if (HostFrameData->len >= 4) {
|
||||
uint32_t minutes = 0;
|
||||
tmos_memcpy(&minutes, HostFrameData->data, 4); // 安全的内存拷贝
|
||||
result = BSP_VALVE_SetTimerClose(minutes);
|
||||
logDebug("kCmdTimerClose: %d minutes, result: %d", minutes, result);
|
||||
logDebug("kValveCmdTimer: %d minutes, result: %d", minutes, result);
|
||||
}
|
||||
// 生成响应: 状态(1字节) + 设置的分钟数(4字节)
|
||||
uint8_t response[5] = {result};
|
||||
tmos_memcpy(&response[1], &gTimerCloseState.timer_minutes, 4); // 安全的内存拷贝
|
||||
GenerateRawFrame(&RelyData, kCmdTimerClose, response, 5);
|
||||
GenerateRawFrame(&RelyData, kValveCmdTimer, response, 5);
|
||||
tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT);
|
||||
break;
|
||||
}
|
||||
// 定时器取消和查询功能暂时屏蔽
|
||||
/*
|
||||
case kCmdCancelTimer: // 取消定时关阀命令
|
||||
{
|
||||
uint8_t result = BSP_VALVE_CancelTimerClose();
|
||||
|
@ -233,6 +236,7 @@ static void VAVLE_Task_ProcessTmosMsg(uint8_t *p_rev_msg) // 处理TMOS消息函
|
|||
tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT);
|
||||
break;
|
||||
}
|
||||
*/
|
||||
default:
|
||||
logError("Invalid command");
|
||||
break;
|
||||
|
@ -311,7 +315,10 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀
|
|||
LED_ALL_CLOSE;
|
||||
|
||||
tmos_memset(&RelyData, 0, sizeof(RelyData));
|
||||
BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdCloseVavle, 1);
|
||||
BSP_VALVE_Generate_ValveResponse(&RelyData, gValveCloseReason, 1);
|
||||
|
||||
// 重置为默认值
|
||||
gValveCloseReason = kCmdCloseVavle;
|
||||
|
||||
tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT);
|
||||
|
||||
|
@ -378,7 +385,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀
|
|||
logDebug("gValveData.switch_status %d",gValveData.switch_status);
|
||||
if(gValveData.switch_status != kClosed)
|
||||
{
|
||||
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||
gValveCloseReason = kValveCmdUnderPressure; // 设置为欠压关阀
|
||||
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||
}
|
||||
}
|
||||
else if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
||||
|
@ -428,12 +436,15 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀
|
|||
gTimerCloseState.is_active = 0;
|
||||
gTimerCloseState.timer_minutes = 0;
|
||||
|
||||
// 设置关阀原因为定时关阀
|
||||
gValveCloseReason = kValveCmdTimer;
|
||||
|
||||
// 触发关阀动作
|
||||
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||
|
||||
// 发送定时关阀完成通知
|
||||
uint8_t notification = 1; // 定时关阀完成
|
||||
GenerateRawFrame(&RelyData, kCmdTimerClose, ¬ification, 1);
|
||||
GenerateRawFrame(&RelyData, kValveCmdTimeResp, ¬ification, 1);
|
||||
tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT);
|
||||
|
||||
return (events ^ VAVLE_TIMER_CLOSE_EVT);
|
||||
|
|
Loading…
Reference in New Issue