修改了连接问题

This commit is contained in:
小马_666 2024-12-16 20:47:16 +08:00
parent 9d155d5ff1
commit c05218c91c
3 changed files with 47 additions and 34 deletions

View File

@ -715,8 +715,8 @@ static void centralEventCB(gapRoleEvent_t *pEvent)
case GAP_DEVICE_INIT_DONE_EVENT: case GAP_DEVICE_INIT_DONE_EVENT:
{ {
GAPRole_CentralCancelDiscovery(); GAPRole_CentralCancelDiscovery();
logDebug("停止扫描,发起直连\r\n"); // logDebug("停止扫描,发起直连\r\n");
tmos_start_task(MasterCtrTaskId, MASTER_CONNECT_EVT, 800); // tmos_start_task(MasterCtrTaskId, MASTER_CONNECT_EVT, 800);
} }
break; break;
case GAP_DEVICE_INFO_EVENT: case GAP_DEVICE_INFO_EVENT:
@ -1188,7 +1188,7 @@ int BSP_Master_Send(centralConnItem_t *centralConnList, uint8_t id, uint8_t *Dat
} }
else else
{ {
logError("no BLE_STATE_CONNECTED"); logError("没有连接成功");
ret = 4; ret = 4;
} }
return ret; return ret;
@ -1263,7 +1263,7 @@ int BSP_Master_Receive_Data(uint8_t task_id, uint8_t *data, uint16_t len)
} }
else if (data[index + 1] == kValveCmdRep) // 这个是代表了其是心跳数据包 else if (data[index + 1] == kValveCmdRep) // 这个是代表了其是心跳数据包
{ {
logDebug("BT 心跳数据包:"); logDebug("蓝牙从机心跳数据包:");
logHexDumpAll(data, data_len); logHexDumpAll(data, data_len);
} }
// 到这一步说明数据没问题,将接收到的数据通过中心任务发送出去 // 到这一步说明数据没问题,将接收到的数据通过中心任务发送出去
@ -1284,23 +1284,23 @@ void Master_Connect(void)
uint8_t def_mac[6] = {0xFF}; uint8_t def_mac[6] = {0xFF};
uint8_t cnt = Flash_Get_Valve_Num(); uint8_t cnt = Flash_Get_Valve_Num();
logDebug("cnt:%d\r\n", cnt); logDebug("cnt:%d\r\n", cnt);
if (cnt == 0) // if (cnt == 0)
{ // {
GAPRole_CentralEstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE, // GAPRole_CentralEstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST, // DEFAULT_LINK_WHITE_LIST,
ADDRTYPE_PUBLIC, // ADDRTYPE_PUBLIC,
def_mac); // def_mac);
tmos_start_task(centralTaskId, ESTABLISH_LINK_TIMEOUT_EVT, ESTABLISH_LINK_TIMEOUT); // tmos_start_task(centralTaskId, ESTABLISH_LINK_TIMEOUT_EVT, ESTABLISH_LINK_TIMEOUT);
// uint8_t mac_addr[6] = {0x93, 0xB4, 0x8F, 0x10, 0x53, 0x5C}; // // uint8_t mac_addr[6] = {0x93, 0xB4, 0x8F, 0x10, 0x53, 0x5C};
// logHexDumpAll(mac_addr, 6); // // logHexDumpAll(mac_addr, 6);
// GAPRole_CentralEstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE, // // GAPRole_CentralEstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE,
// DEFAULT_LINK_WHITE_LIST, // // DEFAULT_LINK_WHITE_LIST,
// ADDRTYPE_PUBLIC, // // ADDRTYPE_PUBLIC,
// mac_addr); // // mac_addr);
// tmos_start_task(centralTaskId, ESTABLISH_LINK_TIMEOUT_EVT, ESTABLISH_LINK_TIMEOUT); // // tmos_start_task(centralTaskId, ESTABLISH_LINK_TIMEOUT_EVT, ESTABLISH_LINK_TIMEOUT);
return; // return;
} // }
for (uint8_t i = 0; i < cnt; i++) for (uint8_t i = 0; i < cnt; i++)
{ {
@ -1321,6 +1321,7 @@ void Master_Connect(void)
void Master_DisConnect(void) void Master_DisConnect(void)
{ {
GAPRole_TerminateLink(centralConnList[0].connHandle); GAPRole_TerminateLink(centralConnList[0].connHandle);
// centralConnList[0].state = BLE_STATE_IDLE;
logDebug("主动断开连接\r\n"); logDebug("主动断开连接\r\n");
} }
@ -1333,10 +1334,15 @@ uint16_t Master_ProcessEvent(uint8_t task_id, uint16_t events)
{ {
if (centralConnList[0].state != BLE_STATE_CONNECTED) if (centralConnList[0].state != BLE_STATE_CONNECTED)
{ {
if (Flash_Get_Valve_Num()) if (Flash_Get_Valve_Num())//如果有设备,发起连接
{ {
tmos_start_task(task_id, MASTER_CONNECT_EVT, 2400); tmos_start_task(task_id, MASTER_CONNECT_EVT, 2400);
} }
else//没有则开启定时检测
{
logDebug("没有设备,开启定时检测\r\n");
tmos_start_task(task_id, MASTER_DETECT_EVT, 2400);
}
} }
return (events ^ MASTER_START_EVT); return (events ^ MASTER_START_EVT);
} }
@ -1344,23 +1350,21 @@ uint16_t Master_ProcessEvent(uint8_t task_id, uint16_t events)
{ {
if (centralConnList[0].state != BLE_STATE_CONNECTED) if (centralConnList[0].state != BLE_STATE_CONNECTED)
{ {
if (Flash_Get_Valve_Num())
tmos_start_task(task_id, MASTER_CONNECT_EVT, 2400); {
} logDebug("有设备,尝试连接\r\n");
else tmos_start_task(task_id, MASTER_CONNECT_EVT, 2400);
{ }
tmos_start_task(task_id, MASTER_DETECT_EVT, 2400);
} }
tmos_start_task(task_id, MASTER_DETECT_EVT, 2400);
return (events ^ MASTER_DETECT_EVT); return (events ^ MASTER_DETECT_EVT);
} }
else if (events & MASTER_CONNECT_EVT) else if (events & MASTER_CONNECT_EVT)
{ {
if (centralConnList[0].state != BLE_STATE_CONNECTED) if (centralConnList[0].state != BLE_STATE_CONNECTED)
{ {
Master_Connect(); Master_Connect();
tmos_start_task(task_id, MASTER_DETECT_EVT, 2400);
} }
return (events ^ MASTER_CONNECT_EVT); return (events ^ MASTER_CONNECT_EVT);
} }

View File

@ -2,7 +2,7 @@
* @Author: mbw * @Author: mbw
* @Date: 2024-12-06 16:52:30 * @Date: 2024-12-06 16:52:30
* @LastEditors: mbw && 1600520629@qq.com * @LastEditors: mbw && 1600520629@qq.com
* @LastEditTime: 2024-12-16 16:01:21 * @LastEditTime: 2024-12-16 20:03:21
* @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_uart.c * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_uart.c
* @Description: * @Description:
* *
@ -227,7 +227,7 @@ uint8_t BT_GenerateRawFrame(BTFrameData *pRawData, const uint8_t *p_src, uint8_t
pRawData->buf[pRawData->len - 2] = _CheckSum(&pRawData->buf[0], pRawData->len - 2); pRawData->buf[pRawData->len - 2] = _CheckSum(&pRawData->buf[0], pRawData->len - 2);
pRawData->buf[pRawData->len - 1] = 0X55; pRawData->buf[pRawData->len - 1] = 0X55;
logInfo("BT_GenerateRawFrame"); logInfo("蓝牙主机发送数据给报警器:");
logHexDumpAll(&pRawData->buf[0], pRawData->len); logHexDumpAll(&pRawData->buf[0], pRawData->len);
return 0; return 0;
@ -324,7 +324,6 @@ uint16_t BT_ProcessEvent(uint8_t task_id, uint16_t events)
{ {
lwrb_reset(&uart1_rx_t); lwrb_reset(&uart1_rx_t);
lwrb_reset(&uart1_tx_t); lwrb_reset(&uart1_tx_t);
tmos_start_task(task_id, BT_INFO_UPDATA_EVT, 0);
tmos_start_task(task_id, BT_REC_EVT, 800); tmos_start_task(task_id, BT_REC_EVT, 800);
return (events ^ BT_START_EVT); return (events ^ BT_START_EVT);

View File

@ -2,7 +2,7 @@
* @Author: mbw * @Author: mbw
* @Date: 2024-12-09 11:40:10 * @Date: 2024-12-09 11:40:10
* @LastEditors: mbw && 1600520629@qq.com * @LastEditors: mbw && 1600520629@qq.com
* @LastEditTime: 2024-12-16 19:11:35 * @LastEditTime: 2024-12-16 20:35:38
* @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_valve.c * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_valve.c
* @Description: * @Description:
* *
@ -114,6 +114,11 @@ int BSP_Bt_Register_Valve(uint8_t *data, uint8_t len)
return 1; return 1;
} }
if (tmos_isbufset(&data[1], 0, FLASH_MAC_INFO_LEN) == TRUE)
{
logError("阀门写值错误为0");
return 1;
}
logDebug("注册阀门信息:"); logDebug("注册阀门信息:");
if (tmos_memcmp(&data[1], mac_addr, FLASH_MAC_INFO_LEN) == TRUE) if (tmos_memcmp(&data[1], mac_addr, FLASH_MAC_INFO_LEN) == TRUE)
{ {
@ -136,6 +141,7 @@ int BSP_Bt_Register_Valve(uint8_t *data, uint8_t len)
uint8_t num = Flash_Get_Valve_Num(); uint8_t num = Flash_Get_Valve_Num();
Flash_Set_Valve_Num(num + 1); Flash_Set_Valve_Num(num + 1);
BSP_Bt_Valve_Updata(); // 更新阀门信息 BSP_Bt_Valve_Updata(); // 更新阀门信息
} }
} }
else else
@ -231,7 +237,11 @@ void BSP_Bt_Valve_Updata(void)
uint8_t num = Flash_Get_Valve_Num(); uint8_t num = Flash_Get_Valve_Num();
logInfo("BSP_Bt_Valve_Updata num: %d ", num); logInfo("BSP_Bt_Valve_Updata num: %d ", num);
if (num == 0)
{
return;
}
tmos_memset(&valve_list, 0, sizeof(valve_data_list_t)); tmos_memset(&valve_list, 0, sizeof(valve_data_list_t));
for (int i = 0; i < MAX_VALVE_NUM; i++) // 这个循环是为了将数据拷贝到valve_list中 并且保证id号和flash对应起来 for (int i = 0; i < MAX_VALVE_NUM; i++) // 这个循环是为了将数据拷贝到valve_list中 并且保证id号和flash对应起来