修改连接参数更新接口,当触发更新后会增加定时器操作,确认修改结果 1568/2 1568/head
authorhcj <1224667075@qq.com>
Thu, 26 Dec 2024 08:34:04 +0000 (16:34 +0800)
committerhcj <1224667075@qq.com>
Thu, 26 Dec 2024 08:34:04 +0000 (16:34 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index 51ef1ce..164cf13 100644 (file)
@@ -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);\r
 }\r
 \r
+static uint16_t need_update_connect_param=BLE_CONNECT_INTERVAL_HIGH;\r
+\r
+static osTimerId_t ble_connect_timer=NULL;\r
+\r
+static void  ble_connect_Timer_CallBack(int data)\r
+{\r
+    if(get_ble_connect())\r
+    {\r
+        gap_conn_param_update_t conn_param = { 0 };\r
+        conn_param.conn_handle = g_ble_conn_id;    /* param 0: conn_handle */\r
+        conn_param.interval_min =need_update_connect_param;    /* param 1: interval_min 1.25ms */\r
+        conn_param.interval_max = need_update_connect_param;    /* param 2: interval_max */\r
+        conn_param.slave_latency = 6;    /* param 3: slave_latency */\r
+        conn_param.timeout_multiplier = 500;    /* param 4: timeout_multiplier 10ms */\r
+        int ret = gap_ble_connect_param_update(&conn_param);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "触发 连接参数timer更新");\r
+    }\r
+    else\r
+    {\r
+        osTimerStop(ble_connect_timer);\r
+        osTimerDelete(ble_connect_timer);\r
+        ble_connect_timer = NULL;\r
+    }\r
+}\r
+\r
+static uint16_t ble_interval=50; \r
+\r
+uint16_t get_ble_interval(void)\r
+{\r
+    float temp_data =(float)ble_interval*1.25f;\r
+\r
+    return (uint16_t)temp_data;\r
+   \r
+}\r
+\r
+void srv_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status,\r
+    const gap_ble_conn_param_update_t *param)\r
+{\r
+    if(param->interval==50)\r
+    uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE_50);\r
+    else if(param->interval==12)\r
+    uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE_12);\r
+    else\r
+    uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE|param->interval);\r
+\r
+    ble_interval=param->interval;\r
+\r
+    if(ble_connect_timer!=NULL)\r
+    {\r
+        osTimerStop(ble_connect_timer);\r
+        osTimerDelete(ble_connect_timer);\r
+        ble_connect_timer = NULL;\r
+    }\r
+\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, \r
+    "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);\r
+}\r
+\r
+\r
+\r
 void uapi_ble_connect_param_update(uint16_t data)\r
 {\r
     gap_conn_param_update_t conn_param = { 0 };\r
@@ -653,6 +713,27 @@ void uapi_ble_connect_param_update(uint16_t data)
     conn_param.slave_latency = 6;    /* param 3: slave_latency */\r
     conn_param.timeout_multiplier = 500;    /* param 4: timeout_multiplier 10ms */\r
     int ret = gap_ble_connect_param_update(&conn_param);\r
+\r
+    need_update_connect_param=data;\r
+\r
+    uint32_t tick;\r
+    osStatus_t retTimer;\r
+    if(ble_connect_timer!=NULL)\r
+    {\r
+        osTimerStop(ble_connect_timer);\r
+        osTimerDelete(ble_connect_timer);\r
+        ble_connect_timer = NULL;\r
+    }\r
+\r
+    ble_connect_timer = osTimerNew((osTimerFunc_t)ble_adv_Timer_CallBack, osTimerPeriodic, NULL, NULL);\r
+    tick =osMs2Tick(3000);\r
+    retTimer = osTimerStart(ble_connect_timer, tick);\r
+    if (retTimer != osOK && ble_connect_timer != NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer);\r
+        osTimerDelete(ble_connect_timer);\r
+        ble_connect_timer = NULL;\r
+        return;\r
+    }\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble update connection parameters %d ret: %X\n",data,ret);   \r
 }\r
 void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t status)\r
@@ -714,39 +795,7 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s
 \r
     }\r
 }\r
-    // uint16_t interval;          /*!< @if Eng interval\r
-    //                                  @else   链路调度间隔,单位slot 1.25ms@endif */\r
-    // uint16_t latency;           /*!< @if Eng latency\r
-    //                                  @else   延迟周期,单位slot @endif */\r
-    // uint16_t timeout;           /*!< @if Eng timeout\r
-    //                                  @else   超时时间,单位10ms @endif */\r
-//发送连续数据参考此数值进行速度调整\r
-//2*slot\r
-static uint16_t ble_interval=50; \r
-\r
-uint16_t get_ble_interval(void)\r
-{\r
-    float temp_data =(float)ble_interval*1.25f;\r
-\r
-    return (uint16_t)temp_data;\r
-   \r
-}\r
-\r
-void srv_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status,\r
-    const gap_ble_conn_param_update_t *param)\r
-{\r
-    if(param->interval==50)\r
-    uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE_50);\r
-    else\r
-    uapi_save_runtime_log(RUNTIME_LOG_BLE_CONNECT_UPDATE_12);\r
-\r
-        ble_interval=param->interval;\r
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, \r
-    "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);\r
-}\r
-\r
-\r
-\r
+ \r
 //添加ota特征值\r
 static void srv_ble_add_chart_decr_ota(uint8_t server_id,uint16_t srv_handle)\r
 {   \r
@@ -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);\r
         srv_ble_add_chart_decr_recv_cmd(server_id,srv_handle);\r
         srv_ble_add_chart_decr_Zhihui_ota(server_id,srv_handle);\r
-srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(server_id,srv_handle);\r
+        srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(server_id,srv_handle);\r
         gatts_start_service(server_id, srv_handle);\r
     }\r
     if (ble_gatts_cmp_uuid(uuid, &hid_service_uuid) == true){\r
@@ -2127,6 +2176,7 @@ void Check_ble_adv_status(void)
 \r
     if(get_ble_connect())\r
     {\r
+        \r
         return;\r
     }\r
     else\r