From 9816d6e5f1c45386a69586e7b74df5a361124c7a Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=83=A1=E4=BC=A0=E5=86=9B?= <1224667075@qq.com> Date: Thu, 26 Dec 2024 08:39:26 +0000 Subject: [PATCH] Merge #1568 into sdk602patch0911 from refs/changes/1568/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 胡传军 * refs/changes/1568/head: (11 commits squashed) - 增加pud解码支持长短信解码及英文短信解码 - Merge branch 'sdk602patch0911' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into 0911 - Merge branch 'sdk602patch0911' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into 0911 - Merge branch 'sdk602patch0911' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into 0911 - Merge branch 'sdk602patch0911' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into 0911 - 修改按键投票机制,增加GPIO按键单独投票 - Merge branch 'sdk602patch0911' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into 0911 - 更新运行日志解析工具 - Merge branch 'sdk602patch0911' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into 0911 - 修改因0502指令造成的多次同步数据问题 - 修改连接参数更新接口,当触发更新后会增加定时器操作,确认修改结果 Signed-off-by: aliyun8003852482 <1224667075@qq.com> Reviewed-by: Caisking <3449750381@qq.com> Reviewed-by: 罗正 <1732036298@qq.com> Reviewed-by: aliyun8003852482 <1224667075@qq.com> Reviewed-by: snickersun@163.com Reviewed-by: aliyun6865282430 <1624952103@qq.com> Merged-by: Caisking <3449750381@qq.com> CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1568 --- .../service/ble_service/bleservice/bleEvent.c | 21 +++- .../ble_service/bleservice/bleService.c | 118 +++++++++++++----- 2 files changed, 104 insertions(+), 35 deletions(-) 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 294fef80b..9ef0c5b50 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -5604,6 +5604,9 @@ static void UnpairMessCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *total sendBleData(value,19); } } + +uint8_t is_connect_synchronization_time=0; + //app发送同步数据结束消息 static void GetSynDataEndCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) { @@ -5626,7 +5629,20 @@ static void GetSynDataEndCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to sendBleData(value,19); uapi_save_runtime_log(RUNTIME_LOG_BLE_APP_SYN_END); - watch_synchronization_time(); + if(is_connect_synchronization_time) + { + watch_synchronization_time(); + } + else + { + if(g_ble_conn_id) + { + is_connect_synchronization_time=1; + } + + } + + uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW); @@ -8658,6 +8674,9 @@ void free_ble_data_Event(void)//以防断开蓝牙没有释放数据类型 recvBigDataBufState = false; sendbigDataBufState = false; + is_connect_synchronization_time=0; + + cancel_recv_file(1); for (int i = 0 ; i < MAX_HANDLE_NUM ; i++) 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 51ef1ce0f..164cf1349 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -644,6 +644,66 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl uapi_dev_runtime_set_ble_connect_stat(Bleconnect); } +static uint16_t need_update_connect_param=BLE_CONNECT_INTERVAL_HIGH; + +static osTimerId_t ble_connect_timer=NULL; + +static void ble_connect_Timer_CallBack(int data) +{ + if(get_ble_connect()) + { + gap_conn_param_update_t conn_param = { 0 }; + conn_param.conn_handle = g_ble_conn_id; /* param 0: conn_handle */ + conn_param.interval_min =need_update_connect_param; /* param 1: interval_min 1.25ms */ + conn_param.interval_max = need_update_connect_param; /* param 2: interval_max */ + conn_param.slave_latency = 6; /* param 3: slave_latency */ + conn_param.timeout_multiplier = 500; /* param 4: timeout_multiplier 10ms */ + int ret = gap_ble_connect_param_update(&conn_param); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "触发 连接参数timer更新"); + } + else + { + osTimerStop(ble_connect_timer); + osTimerDelete(ble_connect_timer); + ble_connect_timer = NULL; + } +} + +static uint16_t ble_interval=50; + +uint16_t get_ble_interval(void) +{ + float temp_data =(float)ble_interval*1.25f; + + return (uint16_t)temp_data; + +} + +void srv_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status, + const gap_ble_conn_param_update_t *param) +{ + if(param->interval==50) + uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE_50); + else if(param->interval==12) + uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE_12); + else + uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE|param->interval); + + ble_interval=param->interval; + + if(ble_connect_timer!=NULL) + { + osTimerStop(ble_connect_timer); + osTimerDelete(ble_connect_timer); + ble_connect_timer = NULL; + } + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "conn_id %d status %d gap_ble_conn_param_update_t interval %d latency%d timeout %d ",conn_id,status,param->interval,param->latency,param->timeout); +} + + + void uapi_ble_connect_param_update(uint16_t data) { gap_conn_param_update_t conn_param = { 0 }; @@ -653,6 +713,27 @@ void uapi_ble_connect_param_update(uint16_t data) conn_param.slave_latency = 6; /* param 3: slave_latency */ conn_param.timeout_multiplier = 500; /* param 4: timeout_multiplier 10ms */ int ret = gap_ble_connect_param_update(&conn_param); + + need_update_connect_param=data; + + uint32_t tick; + osStatus_t retTimer; + if(ble_connect_timer!=NULL) + { + osTimerStop(ble_connect_timer); + osTimerDelete(ble_connect_timer); + ble_connect_timer = NULL; + } + + ble_connect_timer = osTimerNew((osTimerFunc_t)ble_adv_Timer_CallBack, osTimerPeriodic, NULL, NULL); + tick =osMs2Tick(3000); + retTimer = osTimerStart(ble_connect_timer, tick); + if (retTimer != osOK && ble_connect_timer != NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer); + osTimerDelete(ble_connect_timer); + ble_connect_timer = NULL; + return; + } WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble update connection parameters %d ret: %X\n",data,ret); } void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t status) @@ -714,39 +795,7 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s } } - // uint16_t interval; /*!< @if Eng interval - // @else 链路调度间隔,单位slot 1.25ms@endif */ - // uint16_t latency; /*!< @if Eng latency - // @else 延迟周期,单位slot @endif */ - // uint16_t timeout; /*!< @if Eng timeout - // @else 超时时间,单位10ms @endif */ -//发送连续数据参考此数值进行速度调整 -//2*slot -static uint16_t ble_interval=50; - -uint16_t get_ble_interval(void) -{ - float temp_data =(float)ble_interval*1.25f; - - return (uint16_t)temp_data; - -} - -void srv_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status, - const gap_ble_conn_param_update_t *param) -{ - if(param->interval==50) - uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE_50); - else - uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE_12); - - ble_interval=param->interval; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, - "conn_id %d status %d gap_ble_conn_param_update_t interval %d latency%d timeout %d ",conn_id,status,param->interval,param->latency,param->timeout); -} - - - + //添加ota特征值 static void srv_ble_add_chart_decr_ota(uint8_t server_id,uint16_t srv_handle) { @@ -1188,7 +1237,7 @@ static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, srv_ble_add_chart_decr_long_cmd(server_id,srv_handle); srv_ble_add_chart_decr_recv_cmd(server_id,srv_handle); srv_ble_add_chart_decr_Zhihui_ota(server_id,srv_handle); -srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(server_id,srv_handle); + srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(server_id,srv_handle); gatts_start_service(server_id, srv_handle); } if (ble_gatts_cmp_uuid(uuid, &hid_service_uuid) == true){ @@ -2127,6 +2176,7 @@ void Check_ble_adv_status(void) if(get_ble_connect()) { + return; } else -- 2.17.1