From 04cf54a1d023e800192913be05a93d986181efee Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Mon, 14 Oct 2024 11:23:01 +0800 Subject: [PATCH] =?utf8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E7=BB=BC=E5=90=88?= =?utf8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../alipay/service/alipay_bluetooth.c | 10 +++ .../alipay/service/alipay_bluetooth.h | 5 ++ .../nativeui/alipay/include/AlipayMainView.h | 1 + .../nativeui/alipay/include/AlipayModel.h | 4 + .../nativeui/alipay/src/AlipayMainView.cpp | 40 +++++++--- .../nativeui/alipay/src/AlipayModel.cpp | 78 +++++++++++++++++++ .../nativeui/alipay/src/AlipayPresenter.cpp | 9 ++- .../ble_service/bleservice/bleService.c | 27 ++++++- .../ble_service/bleservice/bleService.h | 2 + 9 files changed, 162 insertions(+), 14 deletions(-) diff --git a/code/sdk/application/wearable/alipay/service/alipay_bluetooth.c b/code/sdk/application/wearable/alipay/service/alipay_bluetooth.c index 1237fa0a8..b718cc7f4 100644 --- a/code/sdk/application/wearable/alipay/service/alipay_bluetooth.c +++ b/code/sdk/application/wearable/alipay/service/alipay_bluetooth.c @@ -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"); } +bool is_alipay_handle(uint16_t hande) +{ + if ((g_alipay_characteristic_handle == hande) || + (g_alipay_descriptor_handle[0] == hande) || + (g_alipay_descriptor_handle[1] == hande)) + { + return true; + } + return false; +} 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, errcode_t status) { diff --git a/code/sdk/application/wearable/alipay/service/alipay_bluetooth.h b/code/sdk/application/wearable/alipay/service/alipay_bluetooth.h index 7da8ac99f..c4cdd583c 100644 --- a/code/sdk/application/wearable/alipay/service/alipay_bluetooth.h +++ b/code/sdk/application/wearable/alipay/service/alipay_bluetooth.h @@ -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 diff --git a/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayMainView.h b/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayMainView.h index f88514a8c..70632c274 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayMainView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayMainView.h @@ -48,6 +48,7 @@ public: void OnTearDownView() override; void OnStop() override; void DropView(UIView &view); + void DropView(uint8_t type); void SwitchView(UIView &view); void ChangeView(int16 hideView, int16 showView); diff --git a/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h b/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h index 4cf1d026e..1895f63ad 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h @@ -57,6 +57,8 @@ public: int32_t AlipayGetIdName(uint8_t *idStr); int32_t AlipayGetAidCode(int8_t *aidStr); void AlipayUnbind(void); + bool ble_disconnect_AlipayStartBind(void); + void AlipayStopdisconnecTimer(void); bool AlipayStartBind(void); bool AlipayStartSwitchTimer(uint16_t time); void AlipayStopBindTimer(void); @@ -92,6 +94,8 @@ public: void AlipayScreenControl(bool turnOnFlag); private: osTimerId_t bindTimerId = nullptr; + osTimerId_t ble_disconnect_bindTimerId = nullptr; + osTimerId_t switchTimerId = nullptr; osTimerId_t transTimerId = nullptr; int16 alipayInterLis; diff --git a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp index 398a05dee..0cb51957a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp @@ -236,42 +236,62 @@ int16 AlipayMainView::GetListenInter(void) { return interListen; } +//当前定义为给按键专用 +void AlipayMainView::DropView(uint8_t type) +{ + if(alipayWhichInter==ALIPAY_BIND_ANI_VIEW) + { + ChangeView(ALIPAY_BIND_ANI_VIEW, ALIPAY_BIND_EXIT_VIEW); + } + else + { + AlipayModel::GetInstance()->AlipayStopSwitchTimer(); + AlipayModel::GetInstance()->AlipayStopBindTimer(); + AlipayModel::GetInstance()->AlipayStopdisconnecTimer(); + // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + } + + +} void AlipayMainView::DropView(UIView &view) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView"); if (&view == container[ALIPAY_PAY_BARCODE_VIEW]) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_PAY_BARCODE_VIEW]"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_PAY_BARCODE_VIEW]"); ChangeView(ALIPAY_PAY_BARCODE_VIEW, ALIPAY_PAY_VIEW); } else if (&view == container[ALIPAY_PAY_VIEW]) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_PAY_VIEW]"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_PAY_VIEW]"); AlipayModel::GetInstance()->AlipayStopSwitchTimer(); ChangeView(ALIPAY_PAY_VIEW, ALIPAY_LIST_VIEW); } else if (&view == container[ALIPAY_SETTING_VIEW]) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_SETTING_VIEW]"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_SETTING_VIEW]"); ChangeView(ALIPAY_SETTING_VIEW, ALIPAY_LIST_VIEW); } else if (&view == container[ALIPAY_HELP_VIEW]) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_HELP_VIEW]"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_HELP_VIEW]"); ChangeView(ALIPAY_HELP_VIEW, ALIPAY_LIST_VIEW); } else if (&view == container[ALIPAY_BIND_ANI_VIEW]) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_BIND_ANI_VIEW]"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_BIND_ANI_VIEW]"); ChangeView(ALIPAY_BIND_ANI_VIEW, ALIPAY_BIND_EXIT_VIEW); } else if (&view == container[ALIPAY_LIST_VIEW] || &view == container[ALIPAY_BIND_VIEW]) { AlipayModel::GetInstance()->AlipayStopSwitchTimer(); AlipayModel::GetInstance()->AlipayStopBindTimer(); + AlipayModel::GetInstance()->AlipayStopdisconnecTimer(); // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); } else if (&view == container[ALIPAY_TRANS_LIST_VIEW]) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_LIST_VIEW]"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_LIST_VIEW]"); ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_LIST_VIEW); } else if (&view == container[ALIPAY_TRANS_VIEW]) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_VIEW]"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_VIEW]"); ChangeView(ALIPAY_TRANS_VIEW, ALIPAY_TRANS_LIST_VIEW); } else if (&view == container[ALIPAY_TRANS_ENABLE_VIEW]) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_ENABLE_VIEW]"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_ENABLE_VIEW]"); AlipayModel::GetInstance()->AlipayTransStopGetListsTimer(); ChangeView(ALIPAY_TRANS_ENABLE_VIEW, ALIPAY_LIST_VIEW); } + return; } @@ -840,7 +860,7 @@ void AlipayMainView::ChangeView(int16 hideView, int16 showView) { stop_alipay_ble_service(); } - + AlipayModel::GetInstance()->SetAlipayInterLis(showView); Draw(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp index e065f1c95..f5e948a84 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp @@ -13,6 +13,7 @@ #include "power_display_service.h" #include "custom_utils.h" +#include "bleService.h" namespace OHOS { AlipayModel::AlipayModel() : alipayApi(alipay_svr_get_api()) { @@ -67,20 +68,94 @@ void AlipayBindCallBackProc(void *argument) AlipayModel::GetInstance()->AlipaySetBindFlag(true); AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW); + + AlipayModel::GetInstance()->AlipayStopdisconnecTimer(); } else if (ALIPAY_INTER_STATUS_BINDING_FAIL == status && reFlag == 1) { AlipayModel::GetInstance()->AlipayStopBindTimer(); AlipayModel::GetInstance()->AlipaySetBindFlag(false); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_FAIL"); AlipayModel::GetInstance()->AlipaySetRefreshFlag(0); AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW); + AlipayModel::GetInstance()->AlipayStopdisconnecTimer(); + } + else if (ALIPAY_INTER_STATUS_START_BINDING == status && reFlag == 1 && currentView==ALIPAY_BIND_ANI_VIEW) { + if(get_Alipay_ble_connect()==false) + { + AlipayModel::GetInstance()->ble_disconnect_AlipayStartBind(); + } + } } +void AlipayBindCallBackProcdisconnect(void *argument) +{ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc in."); + const alipay_svr_api_t *alipay_api = alipay_svr_get_api(); + int32_t status = 0; + int32_t ret = alipay_api->get_bind_status(&status); + if (AlipayMainView::GetInstance() == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::GetInstance is null, do nothing."); + return; + } + int16_t currentView = AlipayModel::GetInstance()->GetAlipayInterLis(); + uint32_t reFlag = AlipayModel::GetInstance()->AlipayGetRefreshFlag(); + + if (ALIPAY_INTER_STATUS_START_BINDING == status && reFlag == 1 && currentView==ALIPAY_BIND_ANI_VIEW) { + if(get_Alipay_ble_connect()==false) + { + + AlipayModel::GetInstance()->AlipayStopBindTimer(); + AlipayModel::GetInstance()->AlipaySetBindFlag(false); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_FAIL"); + AlipayModel::GetInstance()->AlipaySetRefreshFlag(0); + AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW); + } + + } +} void AlipayBindTimerCallBack(void *argument) { GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipayBindCallBackProc, argument)); } + +void AlipayBindTimerCallBackbledisconnect(void *argument) +{ + GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipayBindCallBackProcdisconnect, argument)); +} + +bool AlipayModel::ble_disconnect_AlipayStartBind(void) +{ + if (ble_disconnect_bindTimerId == nullptr) { + ble_disconnect_bindTimerId = osTimerNew(AlipayBindTimerCallBackbledisconnect, osTimerOnce, (void *)0, nullptr); + if (ble_disconnect_bindTimerId == nullptr) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStartBind Create timer fail."); + return false; + } + } + + int32_t retcode = osTimerStart(ble_disconnect_bindTimerId, ALIPAY_BIND_STATUS_TIMER_LENGTH*2); + if (retcode != 0) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStartBind Start timer fail"); + return false; + } + return true; +} + + +void AlipayModel::AlipayStopdisconnecTimer(void) +{ + if (ble_disconnect_bindTimerId == nullptr) { + return; + } + int32_t ret = osTimerStop(ble_disconnect_bindTimerId); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStopBindTimer in,%u.", ret); + ble_disconnect_bindTimerId=nullptr; + return; +} + + + bool AlipayModel::AlipayStartBind(void) { if (bindTimerId == nullptr) { @@ -145,6 +220,9 @@ void AlipaySwitchTimerCallBack(void *argument) GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipaySwitchTimerCallBackProc, argument)); } + + + bool AlipayModel::AlipayStartSwitchTimer(uint16_t time) { if (switchTimerId == nullptr) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp index aade43587..9dcbec9f1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp @@ -21,6 +21,7 @@ #include "custom_utils.h" #include "common/key_code.h" #include "gfx_utils/mem_check.h" +#include "AlipayC.h" namespace OHOS { static AlipayPresenter *g_alipayPresenter = nullptr; @@ -444,8 +445,12 @@ bool AlipayPresenter::OnKeyAct(UIView &view, const KeyEvent &event) // 如果是power键就返回上一级 if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0) { - uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); - NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_BIND_ANI_VIEW]"); + view_->DropView(0); + } + } return true; diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c index a6bb65ff9..a8171ed6e 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -97,6 +97,7 @@ uint16_t g_ble_server_id = 1; static uint16_t g_ble_read_handle = 0; uint16_t g_ble_conn_id = 0; +uint16_t g_ble_Alipay_conn_id = 0; uint16_t g_ble_server_handle = 0; static uint8_t g_ble_character_buf[BLE_CHARACTERISTIC_MAX_LENGTH] = {0}; static const uint8_t ble_adv_type[BLE_ADV_TYPE_LENTH] = {2, 1, 0xA}; @@ -191,6 +192,24 @@ bool get_ble_connect(void)//保存手机信息 包含手机mac地址 return false; } +bool get_Alipay_ble_connect(void)//保存手机信息 包含手机mac地址 +{ + uint8_t connect=0; + for(int i=0;ihandle); g_ble_conn_id=conn_id; } - else + if(is_alipay_handle(write_cb_para->handle)) { - printf(" ?????\r\n"); + g_ble_Alipay_conn_id=conn_id; } + // else + // { + // printf(" ?????\r\n"); + // } blesrv_service_recv_msg_handler(write_cb_para->handle,write_cb_para->value,write_cb_para->length); } diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h index 84970023f..893a5c115 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h @@ -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 } -- 2.17.1