优化蓝牙名字初始化流程,只有名字不同才设置蓝牙名称。
authorSnickerSun <snickersun@163.com>
Thu, 20 Jun 2024 13:59:52 +0000 (21:59 +0800)
committerSnickerSun <snickersun@163.com>
Thu, 20 Jun 2024 13:59:52 +0000 (21:59 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index aef644d..40fd0ee 100644 (file)
@@ -156,22 +156,8 @@ static void svr_ble_adv_data_set(int adv_id)
     unsigned char addr[BLE_MAC_MAX_LEN] = {0};\r
     unsigned int len = BLE_MAC_MAX_LEN;\r
     errcode_t ret = 0;\r
-#if 1\r
-    bd_addr_t addr_info;\r
-    memset(addr,0,6);\r
-    bluetooth_get_local_addr(&addr[0],len);\r
-    char watchName[32];\r
-    memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
-    (void)sprintf_s(watchName, sizeof(watchName), "%s %02X%02X",BLE_DEFAULT_NAME,addr[1],addr[0]);\r
-    // (void)sprintf_s(watchName, sizeof(watchName), "%s",BLE_DEFAULT_NAME);\r
 \r
-    ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
-    if (ret == false) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName ret = 0x%x", ret);\r
-    }\r
-#else\r
-    bluetooth_get_local_addr(&addr[0],len);\r
-#endif\r
+\r
    \r
     ret = bluetooth_get_local_name(ble_name, &ble_name_len);\r
     if (ret != 0) {\r
@@ -180,6 +166,26 @@ static void svr_ble_adv_data_set(int adv_id)
         memcpy_s(ble_name, BLE_NAME_LENGTH,BLE_DEFAULT_NAME, BLE_DEFAULT_NAME_LEN);\r
         ble_name_len = BLE_DEFAULT_NAME_LEN + 1;        \r
     }\r
+\r
+    memset(addr,0,6);    \r
+    bluetooth_get_local_addr(&addr[0],len);\r
+#if 1    //如果蓝牙名称不正确,按照规则重命名 \r
+    char watchName[BLE_NAME_LENGTH];\r
+    memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
+    (void)sprintf_s(watchName, sizeof(watchName), "%s %02X%02X",BLE_DEFAULT_NAME,addr[1],addr[0]);\r
+    // (void)sprintf_s(watchName, sizeof(watchName), "%s",BLE_DEFAULT_NAME);\r
+    int watch_name_len = strlen(watchName);\r
+    int cmp_len =  watch_name_len>ble_name_len?ble_name_len:watch_name_len;\r
+    if (strncmp(ble_name,watchName,cmp_len) != 0 )\r
+    {\r
+        ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
+        if (ret == false) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName ret = 0x%x", ret);\r
+        }\r
+        memcpy_s(ble_name,BLE_NAME_LENGTH,watchName,BLE_NAME_LENGTH);\r
+    }    \r
+#endif\r
+\r
     int k = BD_ADDR_LEN;\r
     for (int i = 0; i < BD_ADDR_LEN; i++) {\r
         ble_data_mac_switch[--k] = addr[i];\r