测试了远端关阀和移除阀门的操作,正常
This commit is contained in:
parent
81964ccc97
commit
0a494a737a
|
@ -18,7 +18,7 @@
|
||||||
#ifdef BUTTON_USE_THREAD
|
#ifdef BUTTON_USE_THREAD
|
||||||
#define BUTTON_THREAD_PRIORITY 5 // 优先级拉高,这时按键响应快点
|
#define BUTTON_THREAD_PRIORITY 5 // 优先级拉高,这时按键响应快点
|
||||||
#define BUTTON_THREAD_TICKS 10
|
#define BUTTON_THREAD_TICKS 10
|
||||||
#define BUTTON_THREAD_STACK_SIZE 768 /**< button_thread 线程堆栈大小 */
|
#define BUTTON_THREAD_STACK_SIZE 1024 /**< button_thread 线程堆栈大小 */
|
||||||
#endif // !BUTTON_USE_THREAD
|
#endif // !BUTTON_USE_THREAD
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author: mbw
|
* @Author: mbw
|
||||||
* @Date: 2024-12-03 10:31:45
|
* @Date: 2024-12-03 10:31:45
|
||||||
* @LastEditors: mbw && 1600520629@qq.com
|
* @LastEditors: mbw && 1600520629@qq.com
|
||||||
* @LastEditTime: 2024-12-16 11:09:26
|
* @LastEditTime: 2024-12-16 19:00:53
|
||||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_bt.c
|
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_bt.c
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
|
@ -382,7 +382,8 @@ static void Bt_Thread_Entry(void *parameter)
|
||||||
valve[0].valve_mac[3] = 0x10;
|
valve[0].valve_mac[3] = 0x10;
|
||||||
valve[0].valve_mac[4] = 0x53;
|
valve[0].valve_mac[4] = 0x53;
|
||||||
valve[0].valve_mac[5] = 0x5C;
|
valve[0].valve_mac[5] = 0x5C;
|
||||||
|
Flash_Set_Mac_Addr(valve[0].valve_mac, 0);
|
||||||
|
Flash_Set_Valve_Num(1);
|
||||||
LOG_D("Bt_Thread_Entry");
|
LOG_D("Bt_Thread_Entry");
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
@ -462,10 +463,14 @@ static void TEST_BT_Send_Data(int argc, char **argv)
|
||||||
Bt_Valve_Handler(kValveCmdCtr, id, RT_NULL);
|
Bt_Valve_Handler(kValveCmdCtr, id, RT_NULL);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
Flash_Set_Valve_Num(1);
|
||||||
Bt_Valve_Handler(kValveCmdReg, id, RT_NULL);
|
Bt_Valve_Handler(kValveCmdReg, id, RT_NULL);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
Bt_Valve_Handler(kValveCmdRem, id, RT_NULL);
|
Bt_Valve_Handler(kValveCmdRem, id, RT_NULL);
|
||||||
|
rt_memset(valve[0].valve_mac, 0, sizeof(struct valve_t));
|
||||||
|
Flash_Set_Mac_Addr(valve[0].valve_mac, 0);
|
||||||
|
Flash_Set_Valve_Num(0);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
Bt_Valve_Handler(kValveCmdRep, id, RT_NULL);
|
Bt_Valve_Handler(kValveCmdRep, id, RT_NULL);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author: mbw
|
* @Author: mbw
|
||||||
* @Date: 2024-11-30 15:46:21
|
* @Date: 2024-11-30 15:46:21
|
||||||
* @LastEditors: mbw && 1600520629@qq.com
|
* @LastEditors: mbw && 1600520629@qq.com
|
||||||
* @LastEditTime: 2024-12-15 17:09:30
|
* @LastEditTime: 2024-12-16 19:40:43
|
||||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_ml307.c
|
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_ml307.c
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
|
@ -956,7 +956,7 @@ rt_err_t Handle_Close_Valve(struct Ml307_Ops *ops)
|
||||||
if ((data[0] > 0) && (data[0] < MAX_VALVE_NUM)) // 不为零则说明关闭无线阀门
|
if ((data[0] > 0) && (data[0] < MAX_VALVE_NUM)) // 不为零则说明关闭无线阀门
|
||||||
{
|
{
|
||||||
LOG_D("无线阀门编号:%d\n", data[0]);
|
LOG_D("无线阀门编号:%d\n", data[0]);
|
||||||
Flash_Get_Mac_Addr(mac_addr, data[0] - 1);
|
Flash_Get_Mac_Addr(mac_addr, 0);
|
||||||
LOG_D("mac_addr[0] = %x mac_addr[1] = %x mac_addr[2] = %x mac_addr[3] = %x mac_addr[4] = %x, mac_addr[5] = %x", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
|
LOG_D("mac_addr[0] = %x mac_addr[1] = %x mac_addr[2] = %x mac_addr[3] = %x mac_addr[4] = %x, mac_addr[5] = %x", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
|
||||||
/*对两个数组进行比较,如果值不同则退出*/
|
/*对两个数组进行比较,如果值不同则退出*/
|
||||||
for (; i < FLASH_VALVE_MAC_ADDR_LEN; i++)
|
for (; i < FLASH_VALVE_MAC_ADDR_LEN; i++)
|
||||||
|
@ -973,10 +973,26 @@ rt_err_t Handle_Close_Valve(struct Ml307_Ops *ops)
|
||||||
if (i == FLASH_VALVE_MAC_ADDR_LEN)
|
if (i == FLASH_VALVE_MAC_ADDR_LEN)
|
||||||
{
|
{
|
||||||
LOG_D("mac地址匹配成功,执行关阀动作\n");
|
LOG_D("mac地址匹配成功,执行关阀动作\n");
|
||||||
// TODO:此处需要增加关阀无线阀门的逻辑
|
// if (Bt_Valve_Handler(kValveCmdCtr, data[0] - 1, RT_NULL) != RT_EOK)
|
||||||
|
if (Bt_Valve_Handler(kValveCmdCtr, 0, RT_NULL) != RT_EOK)
|
||||||
|
{
|
||||||
|
LOG_E("关阀失败\n");
|
||||||
|
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_CLOSE_VALVE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||||
|
return RT_ERROR;
|
||||||
|
}
|
||||||
|
if (rt_sem_take(&bt_ctr_sem, 15000) != RT_EOK) // 等待十秒获取信号量
|
||||||
|
{
|
||||||
|
LOG_E("获取信号量失败\n");
|
||||||
|
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_CLOSE_VALVE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||||
|
return RT_ERROR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG_D("关阀成功\n");
|
||||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_CLOSE_VALVE, temp, RESPONSE_CODE_SUCCESS);
|
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_CLOSE_VALVE, temp, RESPONSE_CODE_SUCCESS);
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_E("mac地址匹配失败\n");
|
LOG_E("mac地址匹配失败\n");
|
||||||
|
@ -1256,7 +1272,7 @@ rt_err_t Handle_Valve_Replace(struct Ml307_Ops *ops)
|
||||||
String2Hex(temp, imei); // 将字符串转为十六进制字符串
|
String2Hex(temp, imei); // 将字符串转为十六进制字符串
|
||||||
rt_memcpy(data, (ops->recv->recv_data.res_data + 3), (2 * FLASH_VALVE_MAC_ADDR_LEN + 1));
|
rt_memcpy(data, (ops->recv->recv_data.res_data + 3), (2 * FLASH_VALVE_MAC_ADDR_LEN + 1));
|
||||||
/*设备编号(1byte)+ 新MAC地址(6)+ 旧阀门MAC地址(6) + 补零字节= 15byte*/
|
/*设备编号(1byte)+ 新MAC地址(6)+ 旧阀门MAC地址(6) + 补零字节= 15byte*/
|
||||||
if (Flash_Get_Mac_Addr(mac_addr, data[0]) == RT_EOK)
|
if (Flash_Get_Mac_Addr(mac_addr, data[0] - 1) == RT_EOK)
|
||||||
{
|
{
|
||||||
for (; i < FLASH_VALVE_MAC_ADDR_LEN; i++)
|
for (; i < FLASH_VALVE_MAC_ADDR_LEN; i++)
|
||||||
{
|
{
|
||||||
|
@ -1278,6 +1294,14 @@ rt_err_t Handle_Valve_Replace(struct Ml307_Ops *ops)
|
||||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_REPLACE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_REPLACE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||||
return RT_ERROR;
|
return RT_ERROR;
|
||||||
}
|
}
|
||||||
|
if (rt_sem_take(&bt_rep_sem, 10000) != RT_EOK) // 等待十秒获取信号量
|
||||||
|
{
|
||||||
|
LOG_E("获取更换阀门信号量失败\n");
|
||||||
|
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_ADD, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||||
|
return RT_ERROR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (Flash_Set_Mac_Addr(&data[2], data[0]) == RESET)
|
if (Flash_Set_Mac_Addr(&data[2], data[0]) == RESET)
|
||||||
{
|
{
|
||||||
LOG_E("更换阀门设备失败\n");
|
LOG_E("更换阀门设备失败\n");
|
||||||
|
@ -1289,17 +1313,6 @@ rt_err_t Handle_Valve_Replace(struct Ml307_Ops *ops)
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Flash_Set_Mac_Addr(&data[1], data[0]) == RESET)
|
|
||||||
{
|
|
||||||
LOG_E("更换阀门设备失败\n");
|
|
||||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_REPLACE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
|
||||||
return RT_ERROR;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOG_D("更换阀门设备成功\n");
|
|
||||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_REPLACE, temp, RESPONSE_CODE_SUCCESS);
|
|
||||||
return RT_EOK;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1312,6 +1325,7 @@ rt_err_t Handle_Remove_Valve(struct Ml307_Ops *ops)
|
||||||
rt_uint8_t cnt = Flash_Get_Valve_Num();
|
rt_uint8_t cnt = Flash_Get_Valve_Num();
|
||||||
Get_Iot_Imei(imei, FLASH_NB_IMEI_LEN);
|
Get_Iot_Imei(imei, FLASH_NB_IMEI_LEN);
|
||||||
String2Hex(temp, imei); // 将字符串转为十六进制字符串
|
String2Hex(temp, imei); // 将字符串转为十六进制字符串
|
||||||
|
LOG_I("接收到服务器下发移除阀门指令");
|
||||||
if (cnt == 0)
|
if (cnt == 0)
|
||||||
{
|
{
|
||||||
LOG_E("阀门设备数量为0, 无法移除\n");
|
LOG_E("阀门设备数量为0, 无法移除\n");
|
||||||
|
@ -1319,16 +1333,27 @@ rt_err_t Handle_Remove_Valve(struct Ml307_Ops *ops)
|
||||||
|
|
||||||
return RT_ERROR;
|
return RT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
rt_memcpy(data, (ops->recv->recv_data.res_data + 8), FLASH_VALVE_MAC_ADDR_LEN + 1);
|
rt_memcpy(data, (ops->recv->recv_data.res_data + 8), FLASH_VALVE_MAC_ADDR_LEN + 1);
|
||||||
LOG_D("data[0] = %x data[1] = %x data[2] = %x data[3] = %x data[4] = %x, data[5] = %x", data[0], data[1], data[2], data[3], data[4], data[5], data[6]);
|
LOG_D("data[0] = %x data[1] = %x data[2] = %x data[3] = %x data[4] = %x, data[5] = %x", data[0], data[1], data[2], data[3], data[4], data[5], data[6]);
|
||||||
rt_memset(&data[1], 0, sizeof(data) - 1);
|
|
||||||
if (Bt_Valve_Handler(kValveCmdRem, data[0] - 1, RT_NULL) != RT_EOK)
|
// if (Bt_Valve_Handler(kValveCmdRem, data[0] - 1, RT_NULL) != RT_EOK)
|
||||||
|
if (Bt_Valve_Handler(kValveCmdRem, 0, RT_NULL) != RT_EOK)
|
||||||
{
|
{
|
||||||
LOG_E("移除阀门设备失败\n");
|
LOG_E("移除阀门设备失败\n");
|
||||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_REMOVE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_REMOVE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||||
|
|
||||||
return RT_ERROR;
|
return RT_ERROR;
|
||||||
}
|
}
|
||||||
|
if (rt_sem_take(&bt_rem_sem, 10000) != RT_EOK) // 等待十秒获取信号量
|
||||||
|
{
|
||||||
|
LOG_E("获取更换阀门信号量失败\n");
|
||||||
|
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_ADD, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||||
|
return RT_ERROR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rt_memset(&data[1], 0, sizeof(data) - 1);
|
||||||
if (Flash_Set_Mac_Addr(&data[1], data[0] - 1) == RESET)
|
if (Flash_Set_Mac_Addr(&data[1], data[0] - 1) == RESET)
|
||||||
{
|
{
|
||||||
LOG_E("移除阀门设备失败\n");
|
LOG_E("移除阀门设备失败\n");
|
||||||
|
@ -1346,6 +1371,8 @@ rt_err_t Handle_Remove_Valve(struct Ml307_Ops *ops)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void Handle_Error(struct Ml307_Ops *ops, rt_err_t ret)
|
void Handle_Error(struct Ml307_Ops *ops, rt_err_t ret)
|
||||||
{
|
{
|
||||||
LOG_E("数据帧解析失败,错误码: %d", ret);
|
LOG_E("数据帧解析失败,错误码: %d", ret);
|
||||||
|
|
|
@ -165,7 +165,7 @@ int BSP_WDG_Init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#ifdef RT_USING_COMPONENTS_INIT
|
#ifdef RT_USING_COMPONENTS_INIT
|
||||||
INIT_DEVICE_EXPORT(BSP_WDG_Init);
|
INIT_APP_EXPORT(BSP_WDG_Init);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USED_WWDG
|
#if USED_WWDG
|
||||||
|
|
Loading…
Reference in New Issue