From: hcj <1224667075@qq.com> Date: Tue, 8 Oct 2024 01:48:44 +0000 (+0800) Subject: 修复蓝牙释放,异步进程释放可能死机 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=16e1f49871e2e9579335466dcbc73bedf87ba98f;p=mirrors%2FFD230.git 修复蓝牙释放,异步进程释放可能死机 --- diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 7e2ee1f3f..f1edce5b7 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -8520,6 +8520,14 @@ void bleDataRecv(uint8_t *totalData, uint16_t event_size,uint16_t handle) } void free_ble_data(void)//以防断开蓝牙没有释放数据类型 +{ + blesrv_service_recv_msg_handler(0xff,(uint8_t*)"clean",6); + return; + +} + + +void free_ble_data_Event(void)//以防断开蓝牙没有释放数据类型 { totalpack = 0; @@ -8549,6 +8557,12 @@ void free_ble_data(void)//以防断开蓝牙没有释放数据类型 void revBleOldData(uint8_t *buf, uint16_t event_size,uint16_t handle)//每包的数据大小 { printf("handle :%d %s event_size %d\r\n",handle,getHandlname(handle),event_size); + if(handle==0xff) + { + free_ble_data_Event(); + return; + } + bleDataRecv(buf,event_size,handle); } #endif diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c index f44175549..f0a03b5af 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -411,6 +411,7 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl svr_ble_adv_start(); Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开 ble_disconnect_ok(); + free_ble_data(); if(get_ble_pair()) @@ -1597,6 +1598,7 @@ void blesrv_service_recv_msg_handler(uint16_t srv_handle, uint8_t * msg_data, ui blesrv_mail.service_handle = srv_handle; blesrv_mail.msg_len = msg_len; blesrv_mail.msg_data = (uint8_t*)malloc(msg_len); + if(blesrv_mail.msg_data==NULL) { return ;