支付宝蓝牙连接修改
authorhcj <1224667075@qq.com>
Sun, 29 Sep 2024 07:52:14 +0000 (15:52 +0800)
committerhcj <1224667075@qq.com>
Sun, 29 Sep 2024 07:52:14 +0000 (15:52 +0800)
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index 0c06b94..db33303 100644 (file)
@@ -49,10 +49,14 @@ AlipayMainView *AlipayMainView::GetInstance(void)
 \r
 void AlipayMainView::OnStart()\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::OnStart");\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::OnStart");\r
+    if(Alipay_is_init()==false)\r
+    return;\r
     View<AlipayPresenter>::OnStart();\r
     BaseView::RootView(Color::Black().full);\r
 \r
+    \r
+\r
     // 增加按键监听\r
     RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::AlipayPresenter::GetInstance();\r
     RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
index b8f08ac..cc5a953 100644 (file)
@@ -55,15 +55,19 @@ AlipayPresenter *AlipayPresenter::GetInstance()
 \r
 void AlipayPresenter::OnStart()\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStart");\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStart");\r
+    if(Alipay_is_init()==false)\r
+    return;\r
+    \r
     Presenter<AlipayMainView>::OnStart();\r
     /**启动alipay蓝牙服务*/\r
     start_alipay_ble_service();\r
     /* -------------------------------- 设置支付宝界面常亮 ------------------------------- */\r
     alipayMode_->AlipayScreenControl(true);\r
     /* -------------------------------------------------------------------------- */\r
-\r
     alipayMode_->AlipayExitLpm();\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " alipayMode_->AlipayExitLpm()");\r
+\r
     if (!alipayMode_->AlipayInitModel()) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::OnStart AlipayInitModel fail.");\r
         // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
@@ -71,6 +75,7 @@ void AlipayPresenter::OnStart()
         return;\r
     }\r
     svr_alipay_create_task();\r
+    \r
 }\r
 \r
 void AlipayPresenter::OnPause(void) {}\r
index 109e5c4..06b47a3 100644 (file)
@@ -119,9 +119,15 @@ uint16_t data2ae5Cmd = 0;
 uint16_t data2ae2Cmd = 0;//read\r
 uint16_t data2ae1Cmd = 0;//安卓消息来电\r
 uint16_t data2ae0Cmd = 0;//OTA\r
-\r
 uint16_t data2ae6Cmd = 0;//自定义OTA \r
 \r
+#define handle_max_len 40\r
+\r
+static uint16_t Is_value_handle[handle_max_len]={0};\r
+\r
+static uint32_t handle_num=0;\r
+\r
+\r
 void get_phone_addr(bd_addr_t *addr)\r
 {\r
     if (addr!=NULL)    memcpy(addr,&phone_addr,sizeof(bd_addr_t));\r
@@ -318,76 +324,51 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl
      "svr_ble_connstate_change_cb gap_ble_conn_state_t conn_state:%d  pair_state:%d disc_reason:%d\r\n",\r
      conn_state,pair_state,disc_reason);\r
 \r
-   \r
-\r
-    if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
-       \r
+    if (GAP_BLE_STATE_DISCONNECTED == conn_state) \r
+    { // restart ble adv when disconnected\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! \r\n");\r
-         bd_addr_t addr_;\r
-        get_phone_addr(&addr_);\r
-\r
-        if((addr_.addr[0]==addr->addr[0] && \r
-                addr_.addr[1]==addr->addr[1] && \r
-                addr_.addr[2]==addr->addr[2] && \r
-                addr_.addr[3]==addr->addr[3] && \r
-                addr_.addr[4]==addr->addr[4] && \r
-                addr_.addr[5]==addr->addr[5]  ))\r
+        if(conn_id==g_ble_conn_id)\r
         {\r
-            Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开\r
             free_ble_data(); \r
-            {\r
-                svr_ble_adv_start();\r
-\r
-            }            \r
+                \r
             ble_disconnect_ok();\r
+\r
+            svr_ble_adv_start();\r
+\r
+            g_ble_conn_id==0;\r
+\r
+            Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开\r
         }\r
         else\r
         {\r
-            //地址对不上就仅是支付宝断连,无需处理\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"支付宝绑定断连");\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "其他连接断开,不做多余处理 \r\n");\r
         }\r
-        // g_ble_conn_id = conn_id;\r
-\r
-    } else {\r
+     \r
+    }   \r
+    else \r
+    {\r
         devpair_state = 0;//\r
  \r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "exit_alipay_gui  !!! %d",exit_alipay_gui);\r
 \r
+        if( g_ble_conn_id !=0 && conn_id!=g_ble_conn_id)\r
         {\r
-            int ret =svr_ble_adv_stop();\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"%x",ret);\r
-        }              \r
-       \r
-       \r
-        if(Bleconnect==GAP_BLE_STATE_CONNECTED)\r
-        {\r
-            bd_addr_t addr_;\r
-            get_phone_addr(&addr_);\r
-            if(!(addr_.addr[0]==addr->addr[0] && \r
-                addr_.addr[1]==addr->addr[1] && \r
-                addr_.addr[2]==addr->addr[2] && \r
-                addr_.addr[3]==addr->addr[3] && \r
-                addr_.addr[4]==addr->addr[4] && \r
-                addr_.addr[5]==addr->addr[5]  ))\r
-            {\r
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"支付宝连接");\r
-            }\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"支付宝连接");\r
         }\r
         else\r
         {\r
-            g_ble_conn_id = conn_id;\r
-            set_phone_info(addr);\r
+            int ret =svr_ble_adv_stop();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"%x",ret);\r
         }\r
 \r
-        ble_connect_ok();;\r
+        set_phone_info(addr);\r
+        ble_connect_ok();\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x \n",\r
          addr->addr[3], addr->addr[2], addr->addr[1], addr->addr[0]); /* 3 2 1 0 idx */\r
 \r
+\r
         Bleconnect = GAP_BLE_STATE_CONNECTED;//蓝牙已连接\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_CONNECTED!!! 0x%x\r\n",pair_state);\r
-       \r
-       \r
-        \r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_CONNECTED!!! 0x%x\r\n",pair_state);  \r
     }\r
 \r
     uapi_dev_runtime_set_ble_connect_stat(Bleconnect);\r
@@ -409,14 +390,15 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s
             gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 20);\r
             if(get_ble_pair()&&( cm_get_A2DP_switch() || cm_get_HFP_switch()))\r
             {\r
-                int ret=gap_reconnect_media_device(&phone_addr);\r
+                int ret=gap_reconnect_media_device(addr);\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! %X\r\n",ret);\r
-                            }else{\r
-                \r
+            }\r
+            else\r
+            { \r
                 if(get_br_is_pair())\r
                 {\r
                     bd_addr_t bdaddr={0};\r
-                    uapi_get_br_address(&bdaddr);\r
+                    uapi_get_br_address(&addr);\r
                     if(false==(bt_is_acl_connected(&bdaddr)))\r
                     {\r
                         if(cm_get_A2DP_switch() || cm_get_HFP_switch())\r
@@ -919,20 +901,15 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
     bt_uuid_t hid_report_uuid_2ae6 = {0};\r
     bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_ID, &hid_report_uuid_2ae6);\r
 \r
-    // bt_uuid_t alipay_report_uuid = {0};\r
-    // bts_data_to_uuid_len2(ALIPAYY_CHARACTERISTIC_ID, &alipay_report_uuid);\r
 \r
-    // if(ble_gatts_cmp_uuid(uuid, &alipay_report_uuid))\r
-    // {\r
-    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " alipay_handle  %d\r\n",result->value_handle);\r
-    //     alipay_handle = result->value_handle;\r
-    // }\r
     if(ble_gatts_cmp_uuid(uuid, &hid_report_uuid_2ae6))\r
     {\r
         if(data2ae6Cmd==0)\r
         {\r
             data2ae6Cmd=result->value_handle;\r
         }\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
     }\r
     if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae5))\r
     {\r
@@ -943,6 +920,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         if(data2ae5Cmd == 0){\r
             data2ae5Cmd = result->value_handle;\r
         }\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
         \r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " 2ae5 result->value_handle1  %d\r\n",result->value_handle);\r
     }\r
@@ -954,6 +933,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         {\r
             data2ae3Cmd = result->value_handle;\r
         }\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
             \r
     }\r
     \r
@@ -964,6 +945,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         {\r
             data2ae0Cmd = result->value_handle;\r
         }\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
     }\r
     if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae1))\r
     {\r
@@ -971,6 +954,9 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         {\r
             data2ae1Cmd = result->value_handle;\r
         }\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
+\r
         // data2ae1Cmd = result->value_handle;\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2ae1 result->value_handle5  %d\r\n",result->value_handle);\r
         // shortCmdChara = result->value_handle;\r
@@ -982,6 +968,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
          if(data2ae2Cmd == 0){\r
             data2ae2Cmd = result->value_handle;\r
         }\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
     }\r
     if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae4))\r
     {\r
@@ -990,6 +978,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         {\r
             data2ae4Cmd = result->value_handle;\r
         }\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
         //  = result->value_handle;\r
     }\r
     if (ble_gatts_cmp_uuid(uuid, &hid_report_uuid_2a4d) == true) {\r
@@ -1006,9 +996,10 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
 \r
     if (ble_gatts_cmp_uuid(uuid, &factorytest_recv_uuid) == true) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->factorytest_recv_uuid  %d\r\n",result->value_handle);\r
-        // if(g_hid_server_handle == 0){\r
-            // g_hid_server_handle = result->value_handle;\r
-            // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_hid_server_handle  %d\r\n",g_hid_server_handle);\r
+\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
+\r
         ble_factorytest_store_recv_handle(result->value_handle) ;\r
         // }\r
     }\r
@@ -1018,9 +1009,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
 \r
     if (ble_gatts_cmp_uuid(uuid, &factorytest_report_uuid) == true) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->factorytest_report_uuid  %d\r\n",result->value_handle);\r
-        // if(g_hid_server_handle == 0){\r
-            // g_hid_server_handle = result->value_handle;\r
-            // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_hid_server_handle  %d\r\n",g_hid_server_handle);\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
         ble_factorytest_store_report_handle(result->value_handle);\r
         // }\r
     }\r
@@ -1030,9 +1020,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
 \r
     if (ble_gatts_cmp_uuid(uuid, &factorytest_ota_recv_uuid) == true) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->factorytest_ota_recv_uuid  %d\r\n",result->value_handle);\r
-        // if(g_hid_server_handle == 0){\r
-            // g_hid_server_handle = result->value_handle;\r
-            // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_hid_server_handle  %d\r\n",g_hid_server_handle);\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
         ble_factorytest_store_ota_recv_handle(result->value_handle) ;\r
         // }\r
     }\r
@@ -1042,9 +1031,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
 \r
     if (ble_gatts_cmp_uuid(uuid, &factorytest_ota_report_uuid) == true) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->factorytest_ota_report_uuid  %d\r\n",result->value_handle);\r
-        // if(g_hid_server_handle == 0){\r
-            // g_hid_server_handle = result->value_handle;\r
-            // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_hid_server_handle  %d\r\n",g_hid_server_handle);\r
+         Is_value_handle[handle_num];\r
+        handle_num++;\r
         ble_factorytest_store_ota_report_handle(result->value_handle);\r
         // }\r
     }\r
@@ -1054,6 +1042,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
     bts_data_to_uuid_len2(BLE_UUID_PPG_NOTIFY, &ppgtest_report_uuid);\r
     if (ble_gatts_cmp_uuid(uuid, &ppgtest_report_uuid) == true) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->ble_ppgtest_store_report_handle  %d\r\n",result->value_handle);\r
+         Is_value_handle[handle_num];\r
+        handle_num++;\r
         ble_ppgtest_store_report_handle(result->value_handle);\r
     }\r
     \r
@@ -1063,9 +1053,10 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
 \r
     if (ble_gatts_cmp_uuid(uuid, &cywee_report_uuid) == true) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->cywee_report_uuid  %d\r\n",result->value_handle);\r
-        // if(g_hid_server_handle == 0){\r
-            // g_hid_server_handle = result->value_handle;\r
-            // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_hid_server_handle  %d\r\n",g_hid_server_handle);\r
+\r
+        Is_value_handle[handle_num];\r
+        handle_num++;\r
+\r
         ble_cywee_store_report_handle(result->value_handle);\r
         // }\r
 \r
@@ -1211,22 +1202,13 @@ static uint8_t falg = 0;
 \r
 static bool Is_App_ble_handle(uint16_t handle)\r
 {\r
-    if(handle==data2ae3Cmd ||\r
-        handle==data2ae4Cmd||\r
-        handle==data2ae5Cmd||\r
-        handle==data2ae2Cmd||\r
-        handle==data2ae1Cmd||\r
-         handle==data2ae0Cmd||\r
-        handle==data2ae6Cmd\r
-                            )\r
+    for(int i=0;i<handle_max_len;i++)\r
     {\r
-\r
+        if(Is_value_handle[i]==handle)\r
         return true;\r
     }\r
-    else\r
-    {\r
-        return false;\r
-    }\r
+    return false;\r
+\r
 }\r
 \r
 static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para,\r
@@ -1245,8 +1227,9 @@ static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, g
             fclose(fp);\r
         }\r
     }\r
-    if(Is_App_ble_handle(write_cb_para->handle==data2ae0Cmd))\r
+    if(Is_App_ble_handle(write_cb_para->handle))\r
     {\r
+        printf(" %d %d\r\n",conn_id,write_cb_para->handle);\r
         g_ble_conn_id=conn_id;\r
     }\r
     blesrv_service_recv_msg_handler(write_cb_para->handle,write_cb_para->value,write_cb_para->length);\r