1.优化支付宝和ble服务之间控制的流程 2.暂时不需要切换广播数据 52/1 52/head
authorDXY <1731678236@qq.com>
Fri, 19 Apr 2024 10:04:05 +0000 (18:04 +0800)
committerDXY <1731678236@qq.com>
Fri, 19 Apr 2024 10:04:05 +0000 (18:04 +0800)
code/sdk/application/wearable/alipay/service/alipay_feature.c [changed mode: 0755->0644]
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/drivers/peripheral/utils/custom_utils.c

old mode 100755 (executable)
new mode 100644 (file)
index bcc71ae..8d3a53b
@@ -74,12 +74,9 @@ static int32_t svr_alipay_notify_bt(bool value)
 {
     if (value) {
         printf("svr_alipay_notify_bt true:%d",value);
-        // ble_avd_mode_change(1);
-               // svr_alipay_ble_adv_start();
+        ble_avd_mode_change(1);
     } else {
         printf("svr_alipay_notify_bt false:%d",value);
-
-        // svr_alipay_ble_adv_stop();
     }
     return 0;
 }
index 388d10f..1f06248 100644 (file)
@@ -51,7 +51,7 @@ void AlipayPresenter::OnStart()
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStart");\r
     Presenter<AlipayMainView>::OnStart();\r
     /**启动alipay蓝牙服务*/\r
-    start_alipay_ble_service();\r
+    // start_alipay_ble_service();\r
     /* -------------------------------- 设置支付宝界面常亮 ------------------------------- */\r
     alipayMode_->AlipayScreenControl(true);\r
     /* -------------------------------------------------------------------------- */\r
index b08205e..578680b 100644 (file)
@@ -67,6 +67,8 @@ extern "C" {
 #define BLE_DEFAULT_NAME_LEN 32\r
 #define BLE_MAC_MAX_LEN 6 //蓝牙mac地址最大个数6个\r
 \r
+#define BLE_CHANGE_MODE //开启是不需要切换广播数据 屏蔽掉就需要切换广播模式数据\r
+\r
 static uint8_t exit_alipay_gui = 0;\r
 //  蓝牙模块全局变量\r
 static gap_ble_callbacks_t g_ble_gapble_cbs;\r
@@ -117,13 +119,15 @@ enum{
     BLE_CHARACTERISTIC_SNED_ANDRIOD_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
     BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ,\r
 };\r
-\r
+static uint8_t ble_adv_falg = 0;\r
 void svr_ble_adv_stop(void)\r
 {\r
+    ble_adv_falg = 0;\r
     gap_ble_stop_adv(BLE_ADV_ID);\r
 }\r
 void svr_ble_adv_start(void)\r
 {\r
+    ble_adv_falg = 1;\r
     gap_ble_start_adv(BLE_ADV_ID);\r
 }\r
 bool get_ble_status(void)\r
@@ -203,10 +207,12 @@ static void svr_ble_adv_data_set(int adv_id)
     }\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble_info:%02x:%02x:%02x:%02x:%02x:%02x", ble_data_mac_switch[0], ble_data_mac_switch[1],\r
         ble_data_mac_switch[2], ble_data_mac_switch[3], ble_data_mac_switch[4], ble_data_mac_switch[5]);\r
-    // memcpy_s(adv_mac_head + BLE_ADV_MAC_HEAD_LENTH, BD_ADDR_LEN, ble_data_mac_switch, BD_ADDR_LEN);\r
+    #ifdef BLE_CHANGE_MODE\r
+    memcpy_s(adv_mac_head + BLE_ADV_MAC_HEAD_LENTH, BD_ADDR_LEN, ble_data_mac_switch, BD_ADDR_LEN);\r
 \r
-    // memcpy_s(adv_data + adv_data_len, sizeof(adv_mac_head), adv_mac_head, sizeof(adv_mac_head));\r
-    // adv_data_len = adv_data_len + sizeof(adv_mac_head);\r
+    memcpy_s(adv_data + adv_data_len, sizeof(adv_mac_head), adv_mac_head, sizeof(adv_mac_head));\r
+    adv_data_len = adv_data_len + sizeof(adv_mac_head);\r
+    #endif\r
 \r
     scan_data[0] = 0x0f;//长度\r
     scan_data[1] = 0xff;//数据类型 manufactory data\r
@@ -263,6 +269,7 @@ void svr_ble_adv_start_param(void)
     gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
     gap_ble_set_local_appearance(GAP_BLE_APPEARANCE_TYPE_GENERIC_WATCH);//仅是手表\r
     svr_ble_adv_data_set(adv_id);//开始广播和扫描数据\r
+    ble_adv_falg = 1;\r
     int32_t ret = gap_ble_start_adv(adv_id);\r
     if (ret) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_adv_start bt gap_ble_start_adv1  ret = 0x%x", ret);\r
@@ -281,26 +288,43 @@ static void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr,
     g_ble_conn_id = conn_id;\r
     if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
         Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! 0x%x exit_alipay_gui:%d\r\n",pair_state,exit_alipay_gui);\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
 \r
-            if(exit_alipay_gui==0)\r
+            #ifdef BLE_CHANGE_MODE\r
+            svr_ble_adv_start();\r
+            #else\r
+            if(svr_alipay_get_adv_start_state())//如果绑定二维码识图界面并且没有绑定成功断开连接还是广播alipay服务\r
             {\r
-                if(svr_alipay_get_adv_start_state())\r
-                {\r
-                    svr_alipay_set_adv_start_state(0);\r
-                    svr_alipay_ble_adv_stop();\r
-                    svr_ble_adv_start_param();\r
-\r
-                }\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "alipay_get_binding_status  error!!!");\r
+                svr_alipay_ble_adv_start_t();\r
+            }else{\r
                 svr_ble_adv_start();\r
             }\r
             \r
+            #endif\r
             free_ble_data();\r
         // }    \r
     } else {\r
         devpair_state = 0;//\r
-        svr_ble_adv_stop();\r
+        #ifdef BLE_CHANGE_MODE\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "exit_alipay_gui  error!!! %d",exit_alipay_gui);\r
+        if(!exit_alipay_gui)//如果进入了绑定二维码界面 正在连接app 不需要停止广播数据\r
+        {\r
+            svr_ble_adv_stop();\r
+        }\r
+        #else\r
+        if(svr_alipay_get_adv_start_state())//进了支付宝二维码界面没有绑定连接才停止当前alipay的服务\r
+        {\r
+            if(alipay_get_binding_status() == false)//如果还在绑定二维码码所有的识图界面没有绑定成功都不需要关闭广播数据还是继续广播数据\r
+            {   \r
+                svr_alipay_ble_adv_stop();\r
+            }\r
+        }else{\r
+            svr_ble_adv_stop();\r
+        }\r
+        #endif\r
+        \r
         set_phone_info(addr);\r
         Bleconnect = GAP_BLE_STATE_CONNECTED;//蓝牙已连接\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_CONNECTED!!! 0x%x\r\n",pair_state);\r
@@ -1361,8 +1385,7 @@ void ble_unregist_server(void)
 \r
 void svr_bluetooth_init(void)\r
 {\r
-\r
-    AdverFlag = true;\r
+    memset(&phone_addr,0,sizeof(bd_addr_t));\r
     bool ret = enable_bt_stack();\r
     // bool ret = enable_ble();\r
     if (ret != ERRCODE_SUCC) {\r
@@ -1432,32 +1455,54 @@ void openBle(void)
 #define MODE_ALIPAY_ADV_SRV (1)\r
 void ble_avd_mode_change(uint8_t mode)\r
 {\r
+    uint8_t adv_ok = 0;\r
     switch(mode)\r
     {\r
         case MODE_BLE_ADV_SRV:\r
-            if(AdverFlag != true)\r
+            #ifdef BLE_CHANGE_MODE \r
+            if(exit_alipay_gui == 1)//如果进了绑定二维码界面就走这里\r
             {\r
                 exit_alipay_gui = 0;\r
+                printf("ble_advd_start!!!!!!!!! %d %d Bleconnect:%d\r\n",ble_adv_falg,AdverFlag,Bleconnect);\r
+                if(ble_adv_falg == false && AdverFlag == true)//关闭ble 并且没有广播不需要广播数据了\r
+                {\r
+                    adv_ok = 1;\r
+                    svr_ble_adv_start(); \r
+                }\r
+                if(Bleconnect == true && adv_ok != 1)//退出识图还在连接app需要关闭广播数据\r
+                {\r
+                    svr_ble_adv_stop();\r
+                }\r
+            }\r
+            #else\r
+            if(alipay_get_binding_status() == false)//已经绑定了就不需要再开关蓝牙服务了\r
+            {\r
                 printf("ble_advd_start!!!!!!!!!");\r
+\r
+                exit_alipay_gui= 0;\r
+                printf("svr_alipay_ble_adv stop !!!!!!!!!");\r
                 svr_alipay_ble_adv_stop();\r
                 svr_alipay_set_adv_start_state(0);\r
-                errcode_t ret = gap_ble_disconnect_remote_device((const bd_addr_t *)&phone_addr);\r
                 svr_ble_adv_start_param();\r
             }\r
-            \r
+            #endif\r
             break;\r
         case MODE_ALIPAY_ADV_SRV:\r
-            if(svr_alipay_get_adv_start_state() != true)\r
+\r
+            #ifdef BLE_CHANGE_MODE\r
+            exit_alipay_gui = 1;\r
+            printf("alipay_ble_advd_start!!!!!!!!! %d %d",ble_adv_falg,AdverFlag);\r
+            svr_ble_adv_start(); \r
+            #else\r
+            if(alipay_get_binding_status() == false)//已经绑定了就不需要再开关蓝牙服务了 未绑定就需要切换开启服务\r
             {\r
                 exit_alipay_gui = 1;\r
                 printf("alipay_advd_start!!!!!!!!!");\r
-                AdverFlag = false;\r
                 svr_ble_adv_stop();\r
-                errcode_t ret = gap_ble_disconnect_remote_device((const bd_addr_t *)&phone_addr);\r
                 svr_alipay_set_adv_start_state(1);\r
                 svr_alipay_ble_adv_start();\r
             }\r
-            \r
+            #endif\r
             break;\r
         default:\r
             break;\r
index 0e8d678..12af27d 100644 (file)
@@ -182,7 +182,7 @@ bool stop_custom_ble_service(void)
 
 bool start_alipay_ble_service(void)
 {
-    ble_avd_mode_change(1);
+    // ble_avd_mode_change(1);
     // if(get_ble_status())
     // {
     //     PRINT("stop custom protocol classic bt ble service first !\r\n");