增加ios与Android判断 688/1 688/head 689/target/1 690/target/1
authorhcj <1224667075@qq.com>
Tue, 13 Aug 2024 04:02:37 +0000 (12:02 +0800)
committerhcj <1224667075@qq.com>
Tue, 13 Aug 2024 04:02:37 +0000 (12:02 +0800)
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.h
code/sdk/drivers/peripheral/config/include/ConfigModel.h

index e98e7ab..53099b7 100644 (file)
@@ -87,6 +87,7 @@ void get_music_path(char *buf,uint8_t max_len)
     memcpy_s(buf,max_len,path.c_str(),path.length());
 }
 
+
 //在此处实现,给UI回复消息。
 void ble_app_reply(bool data)
 {
@@ -125,6 +126,21 @@ char* ble_get_ai_audio_path_str(void)
     return (char *)OHOS::AiVoiceModel::GetInstance().GetAIAudioPath().c_str();
 }
 
+void ble_set_pair(uint8_t falg)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID,falg);
+    return;
+}
+
+uint8_t get_ble_pair(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID);
+    
+}
 
 
 
index e87a666..16c4caf 100644 (file)
@@ -314,6 +314,11 @@ char * dir_to_json_buf_malloc_(uint8_t type);
 
 void get_music_path(char *buf,uint8_t max_len);
 
+/////////////////设备绑定相关//////////////
+void ble_set_pair(uint8_t falg);
+
+uint8_t get_ble_pair(void);
+
 
 /////////////////////数据同步////////////////////////////
 
index ed22363..169f2d8 100644 (file)
@@ -642,7 +642,7 @@ void alarmData(void)
 }\r
 \r
 \r
-void getPhoneNameLen(uint8_t *data,uint8_t *datalen)//获取手机设备名称长度\r
+void getPhoneNameLen(uint8_t *data,uint8_t *datalen,uint8_t *type)//获取手机设备名称长度\r
 {\r
     uint8_t len = 0;\r
     uint8_t *json = data;\r
@@ -655,6 +655,9 @@ void getPhoneNameLen(uint8_t *data,uint8_t *datalen)//获取手机设备名称
             len = strlen(pn->valuestring)+1;   \r
             printf("设备名称: %s len:%d\n", pn->valuestring,len);\r
         }\r
+        cJSON* tp = cJSON_GetObjectItem(root, "tp");\r
+        *type=tp->valueint;\r
+\r
         *datalen = len;\r
         cJSON_Delete(root);\r
     } else{\r
@@ -948,7 +951,7 @@ void sendBindInfor(uint8_t *data)
     uint8_t devnamelen = 0;\r
     uint8_t mac_tmp[6];\r
     memset(mac_tmp,0,6);\r
-\r
+    uint8_t phone_type;\r
     uint8_t bond = 1;//未与任何手机绑定过\r
     errcode_t ret = 0;\r
     first_bond = 0;\r
@@ -973,25 +976,32 @@ void sendBindInfor(uint8_t *data)
         comfirmPaire(1);\r
         #else\r
         devnamelen = 0;\r
-        getPhoneNameLen(data,&devnamelen);//获取手机下发的手机设备名称长度\r
+        getPhoneNameLen(data,&devnamelen,&phone_type);//获取手机下发的手机设备名称长度\r
         if(devnamelen > 0 )\r
         {\r
             devname = getPhoneName(data);\r
             printf("devname!!!!!!!!!:%s devnamelen:%d",devname,devnamelen);\r
             if (devname != NULL){\r
-                printf("phone devname is name!!!!!!!!!:");\r
+                printf("phone devname is name!!!!!!!!!\r\n");\r
                 uint8_t buf[devnamelen+2]; \r
                 memset(buf,0,devnamelen+2);\r
                 buf[0] = DEVICEBIND ;\r
                 buf[1] = devnamelen;//设备名称长度 0不显示\r
                 memcpy(buf+2,devname,devnamelen);\r
 \r
-                if(strcmp("iPhone",(char *)devname)==0)\r
+                if(phone_type==1)\r
                 {\r
+                    printf("IOS\r\n");\r
+                    ble_set_pair(1);\r
+                    \r
                     errcode_t ret = gap_ble_set_ctkd_enable(true);\r
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "iPhone gap_ble_set_ctkd_enable ret = %x", ret);\r
                     set_ctkd_flag(true);\r
                 }\r
+                else\r
+                {\r
+                    ble_set_pair(0);\r
+                }\r
                 \r
                 CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,(uint8_t *)buf,devnamelen+2);\r
                 if(devname)\r
@@ -6960,9 +6970,9 @@ errcode_t combine_data_internal(ble_read_data *buffer_handle,uint8_t *totalData,
 \r
         if (header->direction == MSG_DIRECTION_RECV_ANDROID)\r
         {\r
-            uapi_dev_runtime_set_android_connection_status(1);\r
+            //uapi_dev_runtime_set_android_connection_status(1);\r
         }else{\r
-            uapi_dev_runtime_set_android_connection_status(0);\r
+           // uapi_dev_runtime_set_android_connection_status(0);\r
         }\r
         buffer_handle->cmd_header.direction = header->direction;\r
         buffer_handle->cmd_header.cmdtype = header->cmdtype;\r
index 5045c54..455a9ee 100644 (file)
@@ -339,18 +339,34 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s
 {\r
     devpair_state = 1;//代表配对成功了\r
 \r
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_pair_result_cbt_cb!!! addr 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x status:0x%x\r\n",addr->addr[0],addr->addr[1],\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, \r
+    "svr_pair_result_cbt_cb!!! addr 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x status:0x%x\r\n",addr->addr[0],addr->addr[1],\r
     addr->addr[2],addr->addr[3],addr->addr[4],addr->addr[5],status);\r
     //if(get_notify_switch())\r
     if(status==ERRCODE_SUCC)\r
     {\r
+        if(get_ble_pair())\r
         ble_ancs_client_cmd_setup_and_subscribe(g_ble_conn_id);\r
 \r
         if(get_ctkd_flag() && cm_custom_ble_service_on_flag())\r
         {\r
-           \r
-            int ret=gap_reconnect_media_device(&phone_addr);\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! %X\r\n",ret);\r
+            gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 20);\r
+            \r
+            if(!uapi_dev_runtime_get_android_connection_status())\r
+            {\r
+                int ret=gap_reconnect_media_device(&phone_addr);\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! %X\r\n",ret);\r
+                //uapi_a2dp_snk_connect();\r
+                \r
+            \r
+            }else{\r
+                // int ret = gap_connect_remote_device(addr);\r
+                //  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_connect_remote_device!!! %X\r\n",ret);\r
+                \r
+\r
+            }\r
+            //uapi_a2dp_snk_connect();\r
+          \r
         }\r
         hand_watch_first_time_Paired();\r
         svr_ble_adv_stop();\r
@@ -1366,13 +1382,32 @@ void custom_ble_service_stop(void)
     svr_ble_adv_stop();//停止广播 不发送广播数据 就是app搜索不到该设备了\r
     free_ble_data(); //删除所有协议缓存数据\r
 }\r
+\r
+void uapi_ble_disconnect_device()\r
+{\r
+    errcode_t ret = 0;\r
+\r
+    ret = gap_ble_disconnect_remote_device((const bd_addr_t *)&phone_addr);//与固定的mac设置地址进行断开连接\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_disconnect_remote_device ret = %X", ret);\r
+\r
+}\r
 //开启蓝牙\r
 void custom_ble_service_start(void)\r
 {\r
-   AdverFlag = true;\r
-   svr_ble_adv_start_param();\r
 \r
-   gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0);\r
+    AdverFlag = true;\r
+    svr_ble_adv_start_param();\r
+   \r
+    gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0);\r
+   \r
+}\r
+\r
+void custom_ble_service_start_(uint8_t data)\r
+{\r
+    AdverFlag = true;\r
+    svr_ble_adv_start_param();\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "custom_ble_service_start_ ");\r
+    gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, data);\r
    \r
 }\r
 #define MODE_BLE_ADV_SRV (0)\r
index 999b72b..06adf91 100644 (file)
@@ -54,6 +54,9 @@ void srv_ble_stop_scan(void);
 
 void blesrv_service_recv_msg_handler(uint16_t srv_handle, uint8_t * msg_data, uint32_t msg_len);
 errcode_t uapi_blesrv_service_init(void);
+
+void custom_ble_service_start_(uint8_t data);
+void uapi_ble_disconnect_device(void);
 #ifdef __cplusplus
 }
 #endif
index dc3906c..dc55be7 100644 (file)
@@ -130,7 +130,10 @@ namespace OHOS
             CONFIGMODEL_ITEM_FIRSTTIMESTART,//手表是否是第一次启动
             CONFIGMODEL_ITEM_OPEN_AI_API_KEYS,//API Keys
             CONFIGMODEL_ITEM_APPLIST_STYLE,//applist的显示样式
+            CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID,//绑定设备为安卓或者ios 0:安卓 1:苹果
             CONFIGMODEL_ITEM_MAX,
+
+           
         } ;
 
         struct configmodel_item{
@@ -381,6 +384,7 @@ namespace OHOS
             {ConfigDataType::DATATYPE_BOOL,     "is_first_time_start",       "true"    }, //CONFIGMODEL_ITEM_FIRSTTIMESTART true :手表第一次启动,否则不是
             {ConfigDataType::DATATYPE_STRING,     "open_ai_api_keys",       "-1"    }, //CONFIGMODEL_ITEM_OPEN_AI_API_KEYS 
             {ConfigDataType::DATATYPE_STRING,     "applist_style",       "list"    }, //CONFIGMODEL_ITEM_APPLIST_STYLE 
+            {ConfigDataType::DATATYPE_INT,     "android_or_ios",       "0"    },//CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID
         };
         ConfigModel();                                        // 私有构造函数,确保无法在外部实例化
         ConfigModel(const ConfigModel &) = delete;            // 禁止拷贝构造