优化蓝牙名称初始化代码 452/1 452/head 454/target/1
authorSnickerSun <snickersun@163.com>
Thu, 4 Jul 2024 11:05:07 +0000 (19:05 +0800)
committerSnickerSun <snickersun@163.com>
Thu, 4 Jul 2024 11:05:07 +0000 (19:05 +0800)
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothModel.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.h

index 6d6ccdf..5e21c8a 100644 (file)
@@ -88,7 +88,6 @@ private:
     void SetUpListCase();\r
     void SetUpConnedDevicesList();\r
     bool FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo);\r
-    void InitBluetoothInfo(void);\r
     bool aclConnected{false};\r
     BluetoothCaseInfo tempMacValue{};\r
     bd_addr_t lastConnedAddr{};\r
@@ -124,6 +123,7 @@ void BtInitGatts(void);
 void BtInitSpp(void);\r
 void BleAdvStart(void);\r
 void bluetooth_init(void);\r
+void InitBluetoothInfo(void);\r
 void bluetooth_enable_all(void);\r
 void bluetooth_close_all(void);\r
 #ifdef __cplusplus\r
index 742767e..94b6b4d 100644 (file)
@@ -79,31 +79,39 @@ char* BluetoothModel::getWatchName(void)
     return watchName;\r
 }\r
 \r
-void BluetoothModel::InitBluetoothInfo(void)\r
+void InitBluetoothInfo(void)\r
 {\r
-    errcode_t ret;\r
     unsigned char nameLen = BD_NAME_LEN;\r
+    uint8_t ble_name[BD_NAME_LEN] = {0};\r
+    uint8_t ble_name_len = BD_NAME_LEN;\r
+    errcode_t ret = 0;\r
+\r
+    ret = bluetooth_get_local_name(ble_name, &ble_name_len);\r
+    if (ret != 0) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_get_local_name fail, name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
+        memset_s(ble_name, BD_NAME_LEN, 0, BD_NAME_LEN);\r
+        ble_name_len = strlen(BLE_DEFAULT_NAME) + 1;        \r
+        memcpy_s(ble_name, BD_NAME_LEN,BLE_DEFAULT_NAME,ble_name_len);\r
+    }\r
+    unsigned char addr[6] = {0};\r
+    unsigned int len = sizeof(addr);\r
+    memset(addr,0,6);    \r
+    bluetooth_get_local_addr(&addr[0],len);\r
+    //如果蓝牙名称不正确,按照规则重命名 \r
+    char watchName[BD_NAME_LEN]= {0};\r
     memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
-    ret = bluetooth_get_local_name((unsigned char *)watchName, &nameLen);\r
-    // 为了实验室测试需要,客户需要自己修改\r
-    if ((nameLen == strlen("WatchDemo") + 1) && (strcmp("WatchDemo", watchName) == 0)) {\r
-        uint32_t currentUs = uapi_tcxo_get_us();\r
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "currentUs 0x%x", currentUs);\r
-        // 设置蓝牙名称\r
-        (void)sprintf_s(watchName, sizeof(watchName), "Watch%x", (currentUs & 0xFFFF));\r
-        ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_name %s ret = %u", watchName, ret);\r
-\r
-        //  设置蓝牙地址\r
-        bd_addr_t addr = {{0x0, 0x0, 0x33, 0x44, 0x55, 0x66} ,0};\r
-        addr.addr[0] = currentUs & 0xFF;\r
-        addr.addr[1] = (currentUs & 0XFF00) >> 8;\r
-        ret = bluetooth_set_local_addr(addr.addr, BD_ADDR_LEN);\r
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_addr [0x%x:0x%x] ret = %u", addr.addr[0], addr.addr[1], ret);\r
-    } else {\r
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "watchName: %s", watchName);\r
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "nameLen: %u", nameLen);\r
-    }\r
+    (void)sprintf_s(watchName, sizeof(watchName), "%s %02X%02X",BLE_DEFAULT_NAME,addr[1],addr[0]);\r
+    int watch_name_len = strlen(watchName);\r
+    /**表名长度不对,或者内容不对,都要重命名*/\r
+    if (watch_name_len != strlen((char*)ble_name) || strncmp((char*)ble_name,watchName,watch_name_len) != 0 )\r
+    {\r
+        ret = bluetooth_set_local_name((unsigned char*)watchName, watch_name_len+1);\r
+        if (ret == ERRCODE_SUCC) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName %s ", watchName);\r
+        }else{\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName %s ret = 0x%x", watchName,ret);\r
+        }        \r
+    }    \r
 }\r
 \r
 static int g_bluetooth_initialled=0;\r
@@ -136,6 +144,8 @@ static int bluetooth_init_all(void)
     // ret = gap_ble_set_sec_param(&sec_param);\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
 \r
+    InitBluetoothInfo();\r
+\r
     BtInitCallBacks();\r
     wrapper_ble_register();\r
 #ifdef SUPPORT_ALIPAY_SEC\r
index e88e10b..dd3f195 100644 (file)
@@ -71,7 +71,7 @@ extern "C" {
 #define BLE_SCAN_DATA_LENTH 31 //扫描数据\r
 #define BLE_ADV_TYPE_LENTH 3\r
 #define BLE_ADV_UUID_LENTH 4\r
-#define BLE_DEFAULT_NAME  "WatchSoar"//"KUMI U6"\r
+\r
 #define BLE_DEFAULT_NAME_LEN 32\r
 #define BLE_MAC_MAX_LEN 6 //蓝牙mac地址最大个数6个\r
 \r
@@ -164,33 +164,15 @@ static void svr_ble_adv_data_set(int adv_id)
     unsigned int len = BLE_MAC_MAX_LEN;\r
     errcode_t ret = 0;\r
 \r
+    memset(addr,0,6);    \r
+    bluetooth_get_local_addr(&addr[0],len);\r
     ret = bluetooth_get_local_name(ble_name, &ble_name_len);\r
     if (ret != 0) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_get_local_name fail, name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
         memset_s(ble_name, BLE_NAME_LENGTH, 0, BLE_NAME_LENGTH);\r
-        memcpy_s(ble_name, BLE_NAME_LENGTH,BLE_DEFAULT_NAME, BLE_DEFAULT_NAME_LEN);\r
-        ble_name_len = BLE_DEFAULT_NAME_LEN + 1;        \r
+        (void)sprintf_s((char*)ble_name, BLE_NAME_LENGTH, "%s %02X%02X",BLE_DEFAULT_NAME,addr[1],addr[0]);\r
+        ble_name_len = strlen((char*)ble_name) + 1;        \r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_get_local_name fail,rename name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\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((char*)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
index 6e6142c..c0e1439 100644 (file)
@@ -26,6 +26,9 @@ extern uint16_t ble_nus_max_data_len;
 extern uint16_t alipay_handle;
 extern uint16_t g_ble_conn_id;
 extern uint16_t g_ble_server_handle;
+
+#define BLE_DEFAULT_NAME  "WatchSoar"//"KUMI U6"
+
 void svr_ble_bluetooth_init(void);//蓝牙服务初始化
 void custom_ble_service_stop(void);//主动关闭蓝牙
 void custom_ble_service_start(void);//主动开启蓝牙