From 3e22a7413e4e34a17ea371a4e0e0c8b868077921 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=83=A1=E4=BC=A0=E5=86=9B?= <1224667075@qq.com> Date: Tue, 8 Oct 2024 02:46:22 +0000 Subject: [PATCH] Merge #1119 into sdk602patch0626 from refs/changes/1119/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 修复蓝牙释放,异步进程释放可能死机 * refs/changes/1119/head: (1 commits squashed) - 修复蓝牙释放,异步进程释放可能死机 Signed-off-by: aliyun8003852482 <1224667075@qq.com> Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1119 --- .../service/ble_service/bleservice/bleEvent.c | 14 ++++++++++++++ .../service/ble_service/bleservice/bleService.c | 2 ++ 2 files changed, 16 insertions(+) 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 ; -- 2.17.1