#endif\r
BtInitCallBacksEx();\r
BtInitGatts();\r
- BtInitSpp();\r
+ // BtInitSpp();\r
InitBtHeadsetEvent(); // 蓝牙ct和tg适配初始化\r
// PhoneServiceInit();\r
+ gap_remove_all_pairs();\r
+ BtA2dpInit();\r
\r
/* 实验室测试需要,开机开广播 */\r
BleAdvStart();\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_remove_pair %d", ret);\r
if(ret == false)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UnBindRemoteDevice gap_remove_pair ret = 0");\r
- char *bluetoothStatus = "UNBIND_FAILED";\r
- do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
- }\r
- else\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UnBindRemoteDevice gap_remove_pair ret = 1");\r
- char *bluetoothStatus = "UNBIND_SUCCESS";\r
- do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ // 只有在已连接状态下才能发送状态报告\r
+ if (ln_ws_get_connection_state() == 2)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UnBindRemoteDevice gap_remove_pair ret = 0");\r
+ char *bluetoothStatus = "UNBIND_FAILED";\r
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ }\r
}\r
return ret;\r
}\r
bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], status); /* addr下标 0 1 2 3 */\r
if(status == GAP_PAIR_NONE){\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "取消配对");\r
- // char *bluetoothStatus = "UNBIND_SUCCESS";\r
- // do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ if (ln_ws_get_connection_state() == 2)\r
+ {\r
+ char *bluetoothStatus = "UNBIND_SUCCESS";\r
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ }\r
} else if(status == GAP_PAIR_PAIRING){\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "正在配对");\r
} else if(status == GAP_PAIR_PAIRED){\r
//亮屏操作\r
uapi_set_screen_on_api();\r
\r
- //蓝牙已连接,上报蓝牙状态\r
- char *bluetoothStatus = "CONNECTED";\r
- do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
- \r
+ if (ln_ws_get_connection_state() == 2)\r
+ {\r
+ //蓝牙已连接,上报蓝牙状态\r
+ char *bluetoothStatus = "CONNECTED";\r
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ }\r
+\r
ThunderBirdMainView *thunderBirdMainView = ThunderBirdMainView::GetInstance();\r
if (thunderBirdMainView == nullptr)\r
{\r
if(strcmp((const char *)caseInfo.deviceName, "") == 0){\r
return;\r
}\r
- if(strcmp((const char *)caseInfo.deviceName, BluetoothModel::GetInstance()->GetLastConnedDeviceName()) == 0){\r
+ if(strcmp((const char *)caseInfo.deviceName, BluetoothModel::GetInstance()->GetLastConnedDeviceName()) == 0)\r
+ {\r
\r
//亮屏操作\r
uapi_set_screen_on_api();\r
\r
- //蓝牙已断开,上报蓝牙状态\r
- char *bluetoothStatus = "DISCONNECTED";\r
- do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
-\r
+ if (ln_ws_get_connection_state() == 2)\r
+ {\r
+ //蓝牙已断开,上报蓝牙状态\r
+ char *bluetoothStatus = "DISCONNECTED";\r
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ }\r
+ \r
ThunderBirdMainView *thunderBirdMainView = ThunderBirdMainView::GetInstance();\r
if (thunderBirdMainView == nullptr)\r
{\r
if ((!tag) && (memcmp(info->addr, bdAddr.addr, BD_ADDR_LEN) == 0)) {\r
AddConnedDevicesCase(*info);\r
}\r
- } else {\r
- ACLConnectionFail(bdAddr);\r
}\r
\r
if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {\r
g_btGapCallBacks.remote_battery_level_changed_callback = BtGapRemoteBatteryLevelChangedCallback;\r
gap_register_callbacks(&g_btGapCallBacks);\r
\r
+}\r
+\r
+void BtA2dpInit(void)\r
+{\r
+ /* a2dp source */\r
g_a2dpSrcCallbacks.connectstate_changed_cb = A2dpSrcConnectstateChanged;\r
g_a2dpSrcCallbacks.configuration_changed_cb = A2dpSrcConfigureChanged;\r
g_a2dpSrcCallbacks.playing_state_changed_cb = A2dpSrcPlayingStateChanged;\r
a2dp_src_register_callbacks(&g_a2dpSrcCallbacks);\r
-\r
/* a2dp sink */\r
a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks);\r
}\r
BluetoothModel::GetInstance()->SetTempMacValue(selectedDevice);
BluetoothModel::GetInstance()->SetTagScanDeviceClicked(true);
+ // 判断是否已有连接
+ bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
+ if (bt_is_acl_connected(lastAddr))
+ {
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "LastDevice addr: %02x%02x%02x%02x%02x%02x is connected",
+ lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3],
+ lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]);
+ BluetoothModel::GetInstance()->DisconnectRemoteDevice();
+ BluetoothModel::GetInstance()->SetTagConnectNew(true);
+ }
// 发起连接
int ret = BluetoothModel::GetInstance()->ConnectRemoteDevice(
(const bd_addr_t*)&selectedDevice->addr);
- if (ret != 0) {
+ if (ret != true) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice failed: %d", ret);
// 可以在这里显示连接失败提示
if(ThunderBirdMainView::GetInstance()) {
}
// 重新发送连接操作
- OnKeyConfirm();
+ if (deviceListAdapter_ == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deviceListAdapter_ nullptr");
+ return;
+ }
+
+ // 获取临时MAC值并发起连接
+ OHOS::BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
+ if (caseInfo == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetTempMacValue failed");
+ return;
+ }
+
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "OnKeyConfirm: connecting to %s",
+ caseInfo->deviceName);
+
+ // 判断是否已有连接
+ bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
+ if (bt_is_acl_connected(lastAddr))
+ {
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "LastDevice addr: %02x%02x%02x%02x%02x%02x is connected",
+ lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3],
+ lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]);
+ BluetoothModel::GetInstance()->DisconnectRemoteDevice();
+ BluetoothModel::GetInstance()->SetTagConnectNew(true);
+ }
+
+ // 发起连接
+ int ret = BluetoothModel::GetInstance()->ConnectRemoteDevice(
+ (const bd_addr_t*)&caseInfo->addr);
+
+ if (ret != true) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice failed: %d", ret);
+ // 可以在这里显示连接失败提示
+ if(ThunderBirdMainView::GetInstance()) {
+ int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
+ ThunderBirdMainView::GetInstance()->ChangeView(currentView,
+ THUNDERBIRD_BLUEVIEW,
+ ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_CONNECT_FAILED);
+ }
+ }
}
// 获取当前选中的设备索引