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