加了本地删除所有阀门数据的功能

This commit is contained in:
小马_666 2025-01-02 15:11:27 +08:00
parent 29bfea488d
commit b422fa964d
3 changed files with 55 additions and 2 deletions

View File

@ -1,3 +1,13 @@
/***
* @Author: mbw
* @Date: 2024-12-09 11:40:04
* @LastEditors: mbw && 1600520629@qq.com
* @LastEditTime: 2025-01-02 14:09:43
* @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\inc\bsp_valve.h
* @Description:
* @
* @Copyright (c) 2025 by ${git_name_email}, All Rights Reserved.
*/
/***
* @Author: mbw
* @Date: 2024-12-09 11:40:04
@ -21,6 +31,7 @@ typedef enum
kValveCmdReg,
kValveCmdRem,
kValveCmdRep,
kValveCmdRemAll,//移除所有的阀门地址
kValveEventStatus,//阀门状态包
kValveCmdMax,
} ValveCmdType;
@ -84,7 +95,7 @@ int BSP_Bt_Register_Valve(uint8_t *data, uint8_t len);
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);
#endif // ! __BSP_VALVE_H__

View File

@ -204,6 +204,18 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
BSP_Bt_Valve_Resp(kValveCmdRep, valve_list.valve_data[CONNECT0_ITEM].valve_id, valve_list.valve_data[CONNECT0_ITEM].valve_mac, FALSE);
}
break;
case kValveCmdRemAll:
logDebug("recv cmd: 0x04, 执行的动作是移除所有阀门信息");
ret = BSP_Bt_Remove_All_Valve();
if (ret == 0)
{
BSP_Bt_Valve_Resp(kValveCmdRemAll, 0, 0, TRUE);
}
else
{
BSP_Bt_Valve_Resp(kValveCmdRemAll, 0, 0, FALSE);
}
break;
default:
logError("unknow cmd: %02X", data[index + 2]);
break;

View File

@ -2,7 +2,7 @@
* @Author: mbw
* @Date: 2024-12-09 11:40:10
* @LastEditors: mbw && 1600520629@qq.com
* @LastEditTime: 2025-01-02 13:24:41
* @LastEditTime: 2025-01-02 14:44:19
* @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_valve.c
* @Description:
*
@ -199,6 +199,32 @@ int BSP_Bt_Remove_Valve(uint8_t *data, uint8_t len)
return 0;
}
/*移除所有阀门信息*/
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)
{
logError("没有找到任何阀门信息");
return 0;
}
tmos_memset(mac_addr, 0xFF, FLASH_MAC_INFO_LEN);
if (Flash_Set_Mac_Addr(mac_addr, 1) != 0)
{
logError("移除阀门信息失败[-2]");
return -2;
}
if (Flash_Set_Valve_Num(0) != 0) // 移除一个阀门
{
logError("移除阀门信息失败[-3]");
return -3;
}
BSP_Bt_Valve_Updata();
Master_DisConnect();
return 0;
}
/*更换阀门信息*/
int BSP_Bt_Replace_Valve(uint8_t *data, uint8_t len)
{
@ -299,6 +325,10 @@ int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state)
ptr->buf[7] = state;
BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 9);
break;
case kValveCmdRemAll:
ptr->buf[0] = state;
BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 2);
break;
case kValveEventStatus:
tmos_memcpy(&ptr->buf[0], &valve_list.valve_data[id - 1], sizeof(struct valve_data));
BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, sizeof(struct valve_data));