支付宝综合修改
authorhcj <1224667075@qq.com>
Mon, 14 Oct 2024 03:23:01 +0000 (11:23 +0800)
committerhcj <1224667075@qq.com>
Mon, 14 Oct 2024 03:23:01 +0000 (11:23 +0800)
code/sdk/application/wearable/alipay/service/alipay_bluetooth.c
code/sdk/application/wearable/alipay/service/alipay_bluetooth.h
code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayMainView.h
code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.h

index 1237fa0..b718cc7 100644 (file)
@@ -307,6 +307,16 @@ static void svr_alipay_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id,
     ALIPAY_PRINT_DEBUG(0, "BtGattsRequestReadCallback");\r
 }\r
 \r
+bool is_alipay_handle(uint16_t hande)\r
+{\r
+     if ((g_alipay_characteristic_handle == hande) ||\r
+        (g_alipay_descriptor_handle[0] == hande) ||\r
+        (g_alipay_descriptor_handle[1] == hande)) \r
+        {\r
+            return true;\r
+        }\r
+        return false;\r
+}\r
 static void svr_alipay_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
index 7da8ac9..c4cdd58 100644 (file)
@@ -33,5 +33,10 @@ bool svr_alipay_get_adv_start_state(void);
 void svr_alipay_bt_init_gatts(uint8_t);
 void svr_alipay_ble_adv_start_t(void);
 void ble_add_alipay_service(uint8_t server_id);
+
+uint16_t get_g_alipay_conn_id(void);
+
+bool is_alipay_handle(uint16_t hande);
+
 #endif
 
index f88514a..70632c2 100644 (file)
@@ -48,6 +48,7 @@ public:
     void OnTearDownView() override;\r
     void OnStop() override;\r
     void DropView(UIView &view);\r
+    void DropView(uint8_t type);\r
     void SwitchView(UIView &view);\r
 \r
     void ChangeView(int16 hideView, int16 showView);\r
index 4cf1d02..1895f63 100644 (file)
@@ -57,6 +57,8 @@ public:
     int32_t AlipayGetIdName(uint8_t *idStr);\r
     int32_t AlipayGetAidCode(int8_t *aidStr);\r
     void AlipayUnbind(void);\r
+    bool ble_disconnect_AlipayStartBind(void);\r
+    void AlipayStopdisconnecTimer(void);\r
     bool AlipayStartBind(void);\r
     bool AlipayStartSwitchTimer(uint16_t time);\r
     void AlipayStopBindTimer(void);\r
@@ -92,6 +94,8 @@ public:
     void AlipayScreenControl(bool turnOnFlag);\r
 private:\r
     osTimerId_t bindTimerId = nullptr;\r
+    osTimerId_t ble_disconnect_bindTimerId = nullptr;\r
+\r
     osTimerId_t switchTimerId = nullptr;\r
     osTimerId_t transTimerId = nullptr;\r
     int16 alipayInterLis;\r
index 398a05d..0cb5195 100644 (file)
@@ -236,42 +236,62 @@ int16 AlipayMainView::GetListenInter(void)
 {\r
     return interListen;\r
 }\r
+//当前定义为给按键专用\r
+void AlipayMainView::DropView(uint8_t type)\r
+{\r
 \r
+    if(alipayWhichInter==ALIPAY_BIND_ANI_VIEW)\r
+    {\r
+        ChangeView(ALIPAY_BIND_ANI_VIEW, ALIPAY_BIND_EXIT_VIEW);\r
+    }\r
+    else\r
+    {\r
+        AlipayModel::GetInstance()->AlipayStopSwitchTimer();\r
+        AlipayModel::GetInstance()->AlipayStopBindTimer();\r
+         AlipayModel::GetInstance()->AlipayStopdisconnecTimer();\r
+        // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+    }\r
+        \r
+    \r
+}\r
 void AlipayMainView::DropView(UIView &view)\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView");\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView");\r
     if (&view == container[ALIPAY_PAY_BARCODE_VIEW]) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_PAY_BARCODE_VIEW]");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_PAY_BARCODE_VIEW]");\r
         ChangeView(ALIPAY_PAY_BARCODE_VIEW, ALIPAY_PAY_VIEW);\r
     } else if (&view == container[ALIPAY_PAY_VIEW]) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_PAY_VIEW]");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_PAY_VIEW]");\r
         AlipayModel::GetInstance()->AlipayStopSwitchTimer();\r
         ChangeView(ALIPAY_PAY_VIEW, ALIPAY_LIST_VIEW);\r
     } else if (&view == container[ALIPAY_SETTING_VIEW]) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_SETTING_VIEW]");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_SETTING_VIEW]");\r
         ChangeView(ALIPAY_SETTING_VIEW, ALIPAY_LIST_VIEW);\r
     } else if (&view == container[ALIPAY_HELP_VIEW]) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_HELP_VIEW]");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_HELP_VIEW]");\r
         ChangeView(ALIPAY_HELP_VIEW, ALIPAY_LIST_VIEW);\r
     } else if (&view == container[ALIPAY_BIND_ANI_VIEW]) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_BIND_ANI_VIEW]");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_BIND_ANI_VIEW]");\r
         ChangeView(ALIPAY_BIND_ANI_VIEW, ALIPAY_BIND_EXIT_VIEW);\r
     } else if (&view == container[ALIPAY_LIST_VIEW] || &view == container[ALIPAY_BIND_VIEW]) {\r
         AlipayModel::GetInstance()->AlipayStopSwitchTimer();\r
         AlipayModel::GetInstance()->AlipayStopBindTimer();\r
+        AlipayModel::GetInstance()->AlipayStopdisconnecTimer();\r
         // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
         NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
     } else if (&view == container[ALIPAY_TRANS_LIST_VIEW]) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_LIST_VIEW]");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_LIST_VIEW]");\r
         ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_LIST_VIEW);\r
     } else if (&view == container[ALIPAY_TRANS_VIEW]) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_VIEW]");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_VIEW]");\r
         ChangeView(ALIPAY_TRANS_VIEW, ALIPAY_TRANS_LIST_VIEW);\r
     } else if (&view == container[ALIPAY_TRANS_ENABLE_VIEW]) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_ENABLE_VIEW]");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_ENABLE_VIEW]");\r
         AlipayModel::GetInstance()->AlipayTransStopGetListsTimer();\r
         ChangeView(ALIPAY_TRANS_ENABLE_VIEW, ALIPAY_LIST_VIEW);\r
     }\r
+   \r
 \r
     return;\r
 }\r
@@ -840,7 +860,7 @@ void AlipayMainView::ChangeView(int16 hideView, int16 showView)
     {\r
         stop_alipay_ble_service();\r
     }\r
-    \r
+\r
     AlipayModel::GetInstance()->SetAlipayInterLis(showView);\r
 \r
     Draw();\r
index e065f1c..f5e948a 100644 (file)
@@ -13,6 +13,7 @@
 \r
 #include "power_display_service.h"\r
 #include "custom_utils.h"\r
+#include "bleService.h"\r
 namespace OHOS {\r
 AlipayModel::AlipayModel() : alipayApi(alipay_svr_get_api())\r
 {\r
@@ -67,20 +68,94 @@ void AlipayBindCallBackProc(void *argument)
         AlipayModel::GetInstance()->AlipaySetBindFlag(true);\r
         \r
         AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW);\r
+        \r
+        AlipayModel::GetInstance()->AlipayStopdisconnecTimer();\r
     } else if (ALIPAY_INTER_STATUS_BINDING_FAIL == status && reFlag == 1) {\r
         AlipayModel::GetInstance()->AlipayStopBindTimer();\r
         AlipayModel::GetInstance()->AlipaySetBindFlag(false);\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_FAIL");\r
         AlipayModel::GetInstance()->AlipaySetRefreshFlag(0);\r
         AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW);\r
+         AlipayModel::GetInstance()->AlipayStopdisconnecTimer();\r
+    }\r
+    else if (ALIPAY_INTER_STATUS_START_BINDING == status && reFlag == 1 && currentView==ALIPAY_BIND_ANI_VIEW) {\r
+        if(get_Alipay_ble_connect()==false)\r
+        {\r
+              AlipayModel::GetInstance()->ble_disconnect_AlipayStartBind();\r
+        }\r
+       \r
     }\r
 }\r
+void AlipayBindCallBackProcdisconnect(void *argument)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc in.");\r
+    const alipay_svr_api_t *alipay_api = alipay_svr_get_api();\r
+    int32_t status = 0;\r
+    int32_t ret = alipay_api->get_bind_status(&status);\r
+    if (AlipayMainView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::GetInstance is null, do nothing.");\r
+        return;\r
+    }\r
 \r
+    int16_t currentView = AlipayModel::GetInstance()->GetAlipayInterLis();\r
+    uint32_t reFlag = AlipayModel::GetInstance()->AlipayGetRefreshFlag();\r
+\r
+    if (ALIPAY_INTER_STATUS_START_BINDING == status && reFlag == 1 && currentView==ALIPAY_BIND_ANI_VIEW) {\r
+    if(get_Alipay_ble_connect()==false)\r
+    {\r
+\r
+        AlipayModel::GetInstance()->AlipayStopBindTimer();\r
+        AlipayModel::GetInstance()->AlipaySetBindFlag(false);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_FAIL");\r
+        AlipayModel::GetInstance()->AlipaySetRefreshFlag(0);\r
+        AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW);\r
+    }\r
+       \r
+    }\r
+}   \r
 void AlipayBindTimerCallBack(void *argument)\r
 {\r
     GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipayBindCallBackProc, argument));\r
 }\r
 \r
+\r
+void AlipayBindTimerCallBackbledisconnect(void *argument)\r
+{\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipayBindCallBackProcdisconnect, argument));\r
+}\r
+\r
+bool AlipayModel::ble_disconnect_AlipayStartBind(void)\r
+{\r
+    if (ble_disconnect_bindTimerId == nullptr) {\r
+        ble_disconnect_bindTimerId = osTimerNew(AlipayBindTimerCallBackbledisconnect, osTimerOnce, (void *)0, nullptr);\r
+        if (ble_disconnect_bindTimerId == nullptr) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStartBind Create timer fail.");\r
+            return false;\r
+        }\r
+    }\r
+\r
+    int32_t retcode = osTimerStart(ble_disconnect_bindTimerId, ALIPAY_BIND_STATUS_TIMER_LENGTH*2);\r
+    if (retcode != 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStartBind Start timer fail");\r
+        return false;\r
+    }\r
+    return true;\r
+}\r
+\r
+\r
+void AlipayModel::AlipayStopdisconnecTimer(void)\r
+{\r
+    if (ble_disconnect_bindTimerId == nullptr) {\r
+        return;\r
+    }\r
+    int32_t ret = osTimerStop(ble_disconnect_bindTimerId);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStopBindTimer in,%u.", ret);\r
+    ble_disconnect_bindTimerId=nullptr;\r
+    return;\r
+}\r
+\r
+\r
+\r
 bool AlipayModel::AlipayStartBind(void)\r
 {\r
     if (bindTimerId == nullptr) {\r
@@ -145,6 +220,9 @@ void AlipaySwitchTimerCallBack(void *argument)
     GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipaySwitchTimerCallBackProc, argument));\r
 }\r
 \r
+\r
+\r
+\r
 bool AlipayModel::AlipayStartSwitchTimer(uint16_t time)\r
 {\r
     if (switchTimerId == nullptr) {\r
index aade435..9dcbec9 100644 (file)
@@ -21,6 +21,7 @@
 #include "custom_utils.h"\r
 #include "common/key_code.h"\r
 #include "gfx_utils/mem_check.h"\r
+#include "AlipayC.h"\r
 namespace OHOS {\r
 static AlipayPresenter *g_alipayPresenter = nullptr;\r
 \r
@@ -444,8 +445,12 @@ bool AlipayPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
     // 如果是power键就返回上一级\r
     if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) &&  keyState == 1 && uapi_get_screen_state() == 0)\r
     {\r
-        uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_BIND_ANI_VIEW]");\r
+            view_->DropView(0);\r
+        }\r
+       \r
     }\r
     return true;\r
 \r
index a6bb65f..a8171ed 100644 (file)
@@ -97,6 +97,7 @@ uint16_t g_ble_server_id = 1;
 \r
 static uint16_t g_ble_read_handle = 0;\r
 uint16_t g_ble_conn_id = 0;\r
+uint16_t g_ble_Alipay_conn_id = 0;\r
 uint16_t g_ble_server_handle = 0;\r
 static uint8_t g_ble_character_buf[BLE_CHARACTERISTIC_MAX_LENGTH] = {0};\r
 static const uint8_t ble_adv_type[BLE_ADV_TYPE_LENTH] = {2, 1, 0xA};\r
@@ -191,6 +192,24 @@ bool get_ble_connect(void)//保存手机信息 包含手机mac地址
    return false;\r
 }\r
 \r
+bool get_Alipay_ble_connect(void)//保存手机信息 包含手机mac地址\r
+{\r
+    uint8_t connect=0;\r
+   for(int i=0;i<ble_add_max_num;i++)\r
+   {\r
+        if(ble_conn_id[i]!=0)\r
+        {\r
+            if(g_ble_Alipay_conn_id==ble_conn_id[i])\r
+            return true;\r
+        }\r
+   }\r
+\r
+   {\r
+        return false;\r
+   }\r
+\r
+}\r
+\r
 enum{\r
     BLE_CHARACTERISTIC_RECV_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,\r
     BLE_CHARACTERISTIC_SNED_SHORT_ID_PROPERTIES =  GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
@@ -1370,10 +1389,14 @@ static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, g
         printf(" %d %d\r\n",conn_id,write_cb_para->handle);\r
         g_ble_conn_id=conn_id;\r
     }\r
-    else\r
+    if(is_alipay_handle(write_cb_para->handle))\r
     {\r
-        printf(" ?????\r\n");\r
+         g_ble_Alipay_conn_id=conn_id;\r
     }\r
+    // else\r
+    // {\r
+    //     printf(" ?????\r\n");\r
+    // }\r
     blesrv_service_recv_msg_handler(write_cb_para->handle,write_cb_para->value,write_cb_para->length);\r
 }\r
 \r
index 8497002..893a5c1 100644 (file)
@@ -77,6 +77,8 @@ void get_adv_data(char *data);
 
 void uapi_ble_connect_param_update(uint16_t data);
 
+bool get_Alipay_ble_connect(void);
+
 
 #ifdef __cplusplus
 }