ble服务修改适配支付宝绑定
authorhcj <1224667075@qq.com>
Sun, 29 Sep 2024 03:01:50 +0000 (11:01 +0800)
committerhcj <1224667075@qq.com>
Sun, 29 Sep 2024 03:01:50 +0000 (11:01 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index aada71f..109e5c4 100644 (file)
@@ -164,7 +164,6 @@ void br_adv_start(uint8_t sec)
 \r
     if(!get_br_is_pair())\r
     { \r
-        //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, sec);    \r
     }\r
 }\r
 \r
@@ -319,41 +318,71 @@ 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
-    g_ble_conn_id = conn_id;\r
+   \r
+\r
     if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
-        Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开\r
+       \r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! \r\n");\r
-        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! svr_alipay_get_adv_start_state %d alipay_get_binding_status:%d\r\n",svr_alipay_get_adv_start_state(),alipay_get_binding_status());\r
-        // if(AdverFlag == true){\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
+        {\r
+            Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开\r
             free_ble_data(); \r
-            //if(uapi_dev_runtime_get_bt_powerstat()) \r
             {\r
                 svr_ble_adv_start();\r
-                //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0); \r
+\r
             }            \r
-            ble_disconnect_ok();                 \r
-        // }    \r
+            ble_disconnect_ok();\r
+        }\r
+        else\r
+        {\r
+            //地址对不上就仅是支付宝断连,无需处理\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"支付宝绑定断连");\r
+        }\r
+        // g_ble_conn_id = conn_id;\r
+\r
     } else {\r
         devpair_state = 0;//\r
  \r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "exit_alipay_gui  !!! %d",exit_alipay_gui);\r
-        //if(!exit_alipay_gui)//如果进入了绑定二维码界面 正在连接app 不需要停止广播数据\r
+\r
         {\r
-            svr_ble_adv_stop();\r
+            int ret =svr_ble_adv_stop();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"%x",ret);\r
         }              \r
-        set_phone_info(addr);\r
-\r
-\r
-        ble_connect_ok();\r
-        //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0); \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
+        }\r
+        else\r
+        {\r
+            g_ble_conn_id = conn_id;\r
+            set_phone_info(addr);\r
+        }\r
 \r
-        //int ret= a2dp_snk_connect(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
-        //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"state(int): %x\n", ret);\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
@@ -373,7 +402,7 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s
     if(status==ERRCODE_SUCC)\r
     {\r
         if(get_ble_pair())\r
-        ble_ancs_client_cmd_setup_and_subscribe(g_ble_conn_id);\r
+        ble_ancs_client_cmd_setup_and_subscribe(conn_id);\r
 \r
         if(get_ctkd_flag() && uapi_dev_runtime_get_bt_powerstat())\r
         {\r
@@ -1129,6 +1158,8 @@ static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, ga
     //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_req_read_cb ret:is_long:%d  2ae2 %d read_cb_para->handle :%d",read_cb_para->is_long,data2ae2Cmd,read_cb_para->handle);\r
     if(read_cb_para->handle==data2ae2Cmd)\r
     {\r
+        g_ble_conn_id=conn_id;\r
+\r
     static uint8_t battery_point_val[20] = {0};\r
     // 获取电池电压值\r
     float voltage = 0.0F;\r
@@ -1177,6 +1208,27 @@ static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, ga
 \r
 static uint8_t falg = 0;\r
 \r
+\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
+    {\r
+\r
+        return true;\r
+    }\r
+    else\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
     errcode_t status)\r
 { \r
@@ -1192,14 +1244,28 @@ static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, g
             fwrite("x",1,1,fp);\r
             fclose(fp);\r
         }\r
-   \r
+    }\r
+    if(Is_App_ble_handle(write_cb_para->handle==data2ae0Cmd))\r
+    {\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
 }\r
+\r
+void ble_test_ANCS(void)\r
+{\r
+    ble_ancs_client_cmd_setup_and_subscribe(g_ble_conn_id);\r
+}\r
+\r
+\r
+void ble_test_ANCS_notify(uint8_t type)\r
+{\r
+    ble_ancs_client_subscribe_notify(g_ble_conn_id,type);\r
+}\r
+\r
 static void svr_ble_mtu_exchange(uint8_t server_id, uint16_t conn_id, uint16_t mtu_size, errcode_t status)\r
 {\r
     ble_nus_max_data_len = mtu_size-3;\r
-\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_mtu_exchange %d %d %d\r\n",server_id,conn_id,mtu_size);\r
 }\r
 /*******************  gap_ble  ************************************/\r