memcpy_s(buf,max_len,path.c_str(),path.length());
}
+
//在此处实现,给UI回复消息。
void ble_app_reply(bool data)
{
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);
+
+}
void get_music_path(char *buf,uint8_t max_len);
+/////////////////设备绑定相关//////////////
+void ble_set_pair(uint8_t falg);
+
+uint8_t get_ble_pair(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
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
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
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
\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
{\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
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
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
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{
{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; // 禁止拷贝构造