写了自闭发的一些事件上报
This commit is contained in:
parent
54293c1e73
commit
4742154d0e
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-12-09 11:40:04
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2025-05-23 10:34:57
|
||||
* @LastEditTime: 2025-05-23 11:01:23
|
||||
* @FilePath: \zbf_master_ch584m\bsp\inc\bsp_valve.h
|
||||
* @Description:
|
||||
* @
|
||||
|
@ -65,19 +65,19 @@ typedef enum
|
|||
typedef enum
|
||||
{
|
||||
kCmdCfg = 0X01,
|
||||
kCmdCloseVavle,
|
||||
kCmdOpenVavle,
|
||||
kCmdData,
|
||||
kValveCmdOverPressure, // 超压关阀
|
||||
kValveCmdUnderPressure, // 欠压关阀
|
||||
kValveCmdOverCurrent, // 过流关阀
|
||||
kValveCmdMicroLeak, // 微漏关阀
|
||||
kValveCmdTimer, // 定时关阀
|
||||
kValveCmdOpenWithStove, // 开灶开阀
|
||||
kValveCmdCloseWithStove, // 关灶关阀
|
||||
kValveCmdOverTemperature, // 超温关阀
|
||||
kValveCmdDelayClose, // 延时关阀
|
||||
kValveCmdManualClose, // 手动关阀
|
||||
kCmdCloseVavle, //关阀
|
||||
kCmdOpenVavle,//开阀
|
||||
kCmdData,//命令数据(心跳数据)
|
||||
kRespOverPressure, // 超压关阀
|
||||
kRespUnderPressure, // 欠压关阀
|
||||
kRespOverCurrent, // 过流关阀
|
||||
kRespMicroLeak, // 微漏关阀
|
||||
kRespTimer, // 定时关阀
|
||||
kRespOpenWithStove, // 开灶开阀
|
||||
kRespCloseWithStove, // 关灶关阀
|
||||
kRespOverTemperature, // 超温关阀
|
||||
kRespDelayClose, // 延时关阀
|
||||
kRespManualClose, // 手动关阀
|
||||
} TeFrameCmd;
|
||||
|
||||
/*
|
||||
|
@ -121,6 +121,6 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len);
|
|||
int BSP_Bt_Replace_Valve(uint8_t *data, uint8_t len);
|
||||
void BSP_Bt_Valve_Updata(void);
|
||||
int BSP_Bt_Remove_All_Valve(void);
|
||||
int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state);
|
||||
int BSP_Bt_Valve_Resp(ValveCmdType cmd, uint8_t id, uint8_t *mac_addr, uint8_t state);
|
||||
|
||||
#endif // ! __BSP_VALVE_H__
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-12-06 16:52:30
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2025-05-23 10:35:36
|
||||
* @LastEditTime: 2025-05-23 11:05:49
|
||||
* @FilePath: \zbf_master_ch584m\bsp\src\bsp_uart.c
|
||||
* @Description:
|
||||
*
|
||||
|
@ -183,7 +183,7 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
}
|
||||
break;
|
||||
case kValveCmdRem:
|
||||
logDebug("recv cmd: 0x03, 执行的动作是移除阀门");
|
||||
logDebug("recv cmd: 0x03, 移除阀门");
|
||||
ret = BSP_Bt_Remove_Valve(&data_buf[0], datalength);
|
||||
if (ret == 0)
|
||||
{
|
||||
|
@ -195,7 +195,7 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
}
|
||||
break;
|
||||
case kValveCmdRep:
|
||||
logDebug("recv cmd: 0x04, 执行的动作是更换阀门");
|
||||
logDebug("recv cmd: 0x04, 更换阀门");
|
||||
ret = BSP_Bt_Replace_Valve(&data_buf[0], datalength);
|
||||
if (ret == 0)
|
||||
{
|
||||
|
@ -207,7 +207,7 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
}
|
||||
break;
|
||||
case kValveCmdRemAll:
|
||||
logDebug("recv cmd: 0x04, 执行的动作是移除所有阀门信息");
|
||||
logDebug("recv cmd: 0x04, 移除所有阀门信息");
|
||||
ret = BSP_Bt_Remove_All_Valve();
|
||||
if (ret == 0)
|
||||
{
|
||||
|
@ -257,7 +257,7 @@ uint8_t BT_GenerateRawFrame(BTFrameData *pRawData, const uint8_t *p_src, uint8_t
|
|||
uint16_t BSP_Send_Process(uint8_t *pdata)
|
||||
{
|
||||
int8_t ret = 0;
|
||||
__attribute__((aligned(4))) uint8_t master_rx_buf[64] = {0};
|
||||
uint8_t master_rx_buf[64] = {0};
|
||||
|
||||
uint8_t found_frame_start = 0;
|
||||
uint8_t *frame_start = NULL;
|
||||
|
@ -317,15 +317,55 @@ uint16_t BSP_Send_Process(uint8_t *pdata)
|
|||
{
|
||||
bt_connect_flag = 1;
|
||||
logDebug("阀门连接成功");
|
||||
BSP_Bt_Valve_Resp(kValveConncetStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE);//表示连接成功
|
||||
BSP_Bt_Valve_Resp(kValveConncetStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE); // 表示连接成功
|
||||
}
|
||||
else
|
||||
{
|
||||
BSP_Bt_Valve_Resp(kValveEventStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE);
|
||||
}
|
||||
break;
|
||||
//TODO:待完成从机的一些主动上报信息解析
|
||||
case
|
||||
// TODO:待完成从机的一些主动上报信息解析
|
||||
case kRespOverPressure:
|
||||
logDebug("阀门超压关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdOverPressure, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespUnderPressure:
|
||||
logDebug("阀门欠压关阀");
|
||||
|
||||
BSP_Bt_Valve_Resp(kValveCmdUnderPressure, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespOverCurrent:
|
||||
logDebug("阀门过流关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdOverCurrent, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespMicroLeak:
|
||||
logDebug("阀门微漏关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdMicroLeak, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespTimer:
|
||||
logDebug("阀门定时关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdTimer, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespOpenWithStove:
|
||||
logDebug("开灶关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdOpenWithStove, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespCloseWithStove:
|
||||
logDebug("关灶关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdCloseWithStove, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespOverTemperature:
|
||||
logDebug("阀门超温关阀");
|
||||
BSP_Bt_Valve_Resp(kValveCmdOverTemperature, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespDelayClose:
|
||||
logDebug("阀门延时关闭");
|
||||
BSP_Bt_Valve_Resp(kValveCmdDelayClose, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
case kRespManualClose:
|
||||
logDebug("阀门手动关闭");
|
||||
BSP_Bt_Valve_Resp(kValveCmdManualClose, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, master_rx_buf[3]);
|
||||
break;
|
||||
default:
|
||||
logError("不支持的从机命令: %d", master_rx_buf[1]);
|
||||
break;
|
||||
|
@ -469,7 +509,7 @@ void UART1_IRQHandler(void)
|
|||
}
|
||||
case UART_II_RECV_RDY:
|
||||
case UART_II_RECV_TOUT: // 接收数据
|
||||
if ((bt_recv_start_flag == 0)&&(bt_recv_end_flag == 0))//用于检测是否是开始接收数据
|
||||
if ((bt_recv_start_flag == 0) && (bt_recv_end_flag == 0)) // 用于检测是否是开始接收数据
|
||||
{
|
||||
bt_recv_start_flag = 1;
|
||||
}
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-12-09 11:40:10
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2025-04-22 15:15:24
|
||||
* @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_valve.c
|
||||
* @LastEditTime: 2025-05-23 11:08:46
|
||||
* @FilePath: \zbf_master_ch584m\bsp\src\bsp_valve.c
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
|
||||
|
@ -14,7 +14,6 @@
|
|||
#include "bsp_uart.h"
|
||||
#include "multiCentral.h"
|
||||
|
||||
|
||||
/*
|
||||
接收的蓝牙从机info:
|
||||
接收数据帧格式: 帧头 + 命令 + 数据长度 + 心跳数据包 + 校验码 + 帧尾
|
||||
|
@ -29,7 +28,6 @@
|
|||
valve_data_list_t valve_list = {0};
|
||||
BTFrameData valve_frame_data = {0};
|
||||
|
||||
|
||||
uint8_t Valve_GenerateRawFrame(BTFrameData *pRawData, const uint8_t cmd, const uint8_t *p_src, uint8_t src_len)
|
||||
{
|
||||
pRawData->len = src_len + 5;
|
||||
|
@ -62,7 +60,6 @@ int BSP_Valve_Ctr(uint8_t valve_id, const uint8_t cmd)
|
|||
return -1;
|
||||
}
|
||||
logDebug("BSP_Valve_Close: valve id: %d", valve_id);
|
||||
// TODO:检查是否连接, 如果连接,则发送数据,将关闭阀门指令发送过去,然后等待数据接收响应,如果接收到响应是关闭状态0x01,则返回成功,否则失败
|
||||
if (cmd == kCmdCloseVavle)
|
||||
{
|
||||
Valve_GenerateRawFrame(&valve_frame_data, kCmdCloseVavle, &valve_ctr_valve, 1);
|
||||
|
@ -72,7 +69,6 @@ int BSP_Valve_Ctr(uint8_t valve_id, const uint8_t cmd)
|
|||
Valve_GenerateRawFrame(&valve_frame_data, kCmdOpenVavle, &valve_ctr_valve, 1);
|
||||
}
|
||||
|
||||
|
||||
return BSP_Master_Send(centralConnList, CONNECT0_ITEM, &valve_frame_data.buf[0], valve_frame_data.len);
|
||||
}
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC),
|
||||
|
@ -176,7 +172,7 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len)
|
|||
{
|
||||
size_t i = 0;
|
||||
uint8_t mac_addr[FLASH_MAC_INFO_LEN + 2] = {0};
|
||||
if ((data[0] >= 1) && (data[0] <= 8))// 判断是否是正确的ID
|
||||
if ((data[0] >= 1) && (data[0] <= 8)) // 判断是否是正确的ID
|
||||
{
|
||||
Flash_Get_Mac_Addr(mac_addr, data[0]);
|
||||
}
|
||||
|
@ -186,7 +182,7 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len)
|
|||
logHexDumpAll(data, len);
|
||||
return -1;
|
||||
}
|
||||
if (tmos_memcmp(&data[1], mac_addr, FLASH_MAC_INFO_LEN) != TRUE)// 判断是否是相同的MAC地址
|
||||
if (tmos_memcmp(&data[1], mac_addr, FLASH_MAC_INFO_LEN) != TRUE) // 判断是否是相同的MAC地址
|
||||
{
|
||||
logError("mac addr error");
|
||||
logHexDumpAll(data, len);
|
||||
|
@ -220,7 +216,7 @@ int BSP_Bt_Remove_All_Valve(void)
|
|||
{
|
||||
uint8_t mac_addr[FLASH_MAC_INFO_LEN + 2] = {0};
|
||||
uint8_t num = Flash_Get_Valve_Num();
|
||||
if(num == 0)
|
||||
if (num == 0)
|
||||
{
|
||||
logError("没有找到任何阀门信息");
|
||||
return 0;
|
||||
|
@ -248,7 +244,7 @@ int BSP_Bt_Replace_Valve(uint8_t *data, uint8_t len)
|
|||
uint8_t mac_addr[FLASH_MAC_INFO_LEN] = {0};
|
||||
logDebug("更换阀门信息:");
|
||||
logHexDumpAll(data, len);
|
||||
if ((len == 0) || (len < 13))//新旧MAC地址长度加id 6 + 6 + 1 = 13至少要大于12
|
||||
if ((len == 0) || (len < 13)) // 新旧MAC地址长度加id 6 + 6 + 1 = 13至少要大于12
|
||||
{
|
||||
logError("data len error");
|
||||
return -1;
|
||||
|
@ -269,14 +265,14 @@ int BSP_Bt_Replace_Valve(uint8_t *data, uint8_t len)
|
|||
}
|
||||
else
|
||||
{
|
||||
//新阀门数据在前
|
||||
// 新阀门数据在前
|
||||
if (Flash_Set_Mac_Addr(&data[1], data[0]) != 0)
|
||||
{
|
||||
logError("阀门注册写入flash 错误");
|
||||
return 3;
|
||||
}
|
||||
BSP_Bt_Valve_Updata(); // 更新阀门信息
|
||||
Master_DisConnect();//更新后先断联接
|
||||
Master_DisConnect(); // 更新后先断联接
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -319,11 +315,10 @@ void BSP_Bt_Valve_Updata(void)
|
|||
}
|
||||
}
|
||||
Flash_Set_Valve_Num(valve_list.valve_num);
|
||||
|
||||
}
|
||||
|
||||
//蓝牙主机对报警器的响应函数。 state表示此对应的项目,可能是执行成功与否,可能是蓝牙连接状态码,具体参考对应的case
|
||||
int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
|
||||
// 蓝牙主机对报警器的响应函数。 state表示此对应的项目,可能是执行成功与否,可能是蓝牙连接状态码,具体参考对应的case
|
||||
int BSP_Bt_Valve_Resp(ValveCmdType cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
|
||||
{
|
||||
uint8_t ret = 0;
|
||||
BtData_t *ptr = (BtData_t *)tmos_msg_allocate(sizeof(valve_data));
|
||||
|
@ -334,6 +329,16 @@ int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
|
|||
case kValveCmdReg:
|
||||
case kValveCmdRem:
|
||||
case kValveCmdRep:
|
||||
// TODO:待完成从机的一些主动上报信息解析
|
||||
case kValveCmdOverPressure:
|
||||
case kValveCmdUnderPressure:
|
||||
case kValveCmdOverCurrent:
|
||||
case kValveCmdMicroLeak:
|
||||
case kValveCmdTimer:
|
||||
case kValveCmdOpenWithStove:
|
||||
case kValveCmdCloseWithStove:
|
||||
case kValveCmdOverTemperature:
|
||||
case kValveCmdDelayClose:
|
||||
ptr->buf[0] = id;
|
||||
tmos_memcpy(&ptr->buf[1], mac_addr, 6);
|
||||
ptr->buf[26] = state;
|
||||
|
@ -350,10 +355,11 @@ int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
|
|||
case kValveConncetStatus:
|
||||
ptr->buf[0] = id;
|
||||
tmos_memcpy(&ptr->buf[1], mac_addr, 6);
|
||||
ptr->buf[7] = state; //0表示断开,1表示连接
|
||||
ptr->buf[7] = state; // 0表示断开,1表示连接
|
||||
logDebug("连接状态:%d", ptr->buf[7]);
|
||||
BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 9);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue