From d2a9efb6803302e2dfd1f6757e230e7ce6f0d1ff Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Fri, 16 May 2025 14:50:06 +0800 Subject: [PATCH] =?utf8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E4=BB=A3=E7=A0=81?= =?utf8?q?=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../fd230/nativeabilityfwk/include/Ability.h | 10 +- .../fd230/nativeabilityfwk/src/Ability.cpp | 3 + .../nativeui/alipay/include/AlipayBindAni.h | 1 + .../nativeui/alipay/include/AlipayC.h | 19 + .../nativeui/alipay/include/AlipayExitBind.h | 1 + .../include/AlipayList/AlipayListItem.h | 3 + .../include/AlipayList/AlipayListItemView.h | 1 + .../include/AlipayList/AlipayListView.h | 2 +- .../nativeui/alipay/include/AlipayMainView.h | 1 + .../nativeui/alipay/include/AlipayModel.h | 8 + .../nativeui/alipay/include/AlipayPresenter.h | 28 +- .../nativeui/alipay/include/AlipaySetting.h | 8 +- .../AlipayTrans/AlipayTransListItemView.h | 1 + .../nativeui/alipay/include/AlipayUnbind.h | 1 + .../nativeui/alipay/src/AlipayBindAni.cpp | 78 +- .../nativeui/alipay/src/AlipayBindRes.cpp | 33 +- .../nativeui/alipay/src/AlipayExitBind.cpp | 73 +- .../src/AlipayList/AlipayListItemView.cpp | 78 +- .../alipay/src/AlipayList/AlipayListView.cpp | 38 +- .../nativeui/alipay/src/AlipayMainView.cpp | 63 +- .../nativeui/alipay/src/AlipayModel.cpp | 178 +- .../nativeui/alipay/src/AlipayPayCode.cpp | 2 +- .../nativeui/alipay/src/AlipayPresenter.cpp | 87 +- .../nativeui/alipay/src/AlipaySetting.cpp | 64 +- .../src/AlipayTrans/AlipayTransCode.cpp | 2 +- .../AlipayTrans/AlipayTransListItemView.cpp | 49 +- .../src/AlipayTrans/AlipayTransListView.cpp | 32 +- .../src/AlipayTrans/AlipayTransTips.cpp | 30 +- .../nativeui/alipay/src/AlipayUnbind.cpp | 72 +- .../alipay/src/AlipayUnbindFinish.cpp | 53 +- .../nativeui/applist/src/ApplistPresenter.cpp | 10 +- .../nativeui/bluetooth/src/BluetoothModel.cpp | 2 +- .../nativeui/key/src/KeyInputListener.cpp | 9 + .../settings/src/SettingPresenter.cpp | 6 +- .../nativeui/settings/src/SettingView.cpp | 2 +- .../lib/libfwk_device_certificate_rv70_llvm.a | Bin 38256 -> 41446 bytes .../soc/se/hsec/hsc32i1/hs_private.c | 444 ++--- .../soc/se/hsec/hsc32i1/hs_private.h | 54 +- .../soc/se/hsec/vendor_ssp.c | 1438 ++++++++--------- 39 files changed, 1744 insertions(+), 1240 deletions(-) create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayC.h diff --git a/code/sdk/application/wearable/fd230/nativeabilityfwk/include/Ability.h b/code/sdk/application/wearable/fd230/nativeabilityfwk/include/Ability.h index 7231902fb..cfa5dd9b1 100644 --- a/code/sdk/application/wearable/fd230/nativeabilityfwk/include/Ability.h +++ b/code/sdk/application/wearable/fd230/nativeabilityfwk/include/Ability.h @@ -80,13 +80,13 @@ public: /// @param transitionId 切换的动画类型 /// @param priority 切换优先级 void EnterSlice(uint16_t sliceId,const TransitionType transitionId = TransitionType::TRANSITION_INVALID, - const uint16_t priority = gSliceDefaultPriority) { + const uint16_t priority = gSliceDefaultPriority,bool enableSlideBack = false) { // 获取当前SliceID uint16_t curSliceId = GetCurSliceId(); if (curSliceId != defaultSliceId_) { // 假定defaultSliceId_是“主页”或启动Slice的ID backStack_.push(curSliceId); } - ChangeSlice(sliceId,transitionId,priority); // 切换到新的Slice + ChangeSlice(sliceId,transitionId,priority,enableSlideBack); // 切换到新的Slice } uint16_t GettopSliceId(void) { @@ -103,19 +103,19 @@ public: /// @param transitionId 切换的动画类型 /// @param priority 切换优先级 bool Back(const TransitionType transitionId = TransitionType::TRANSITION_INVALID, - const uint16_t priority = gSliceDefaultPriority) { + const uint16_t priority = gSliceDefaultPriority,bool enableSlideBack = false) { if (!backStack_.empty()) { uint16_t preSlice = backStack_.top(); backStack_.pop(); - ChangeSlice(preSlice,transitionId,priority); + ChangeSlice(preSlice,transitionId,priority,enableSlideBack); return true; } else { backStack_.push(defaultSliceId_); // 将默认主界面的 ID 推入栈中 // 退回到defaultSliceId_ - ChangeSlice(defaultSliceId_, transitionId, priority); + ChangeSlice(defaultSliceId_, transitionId, priority,enableSlideBack); return false; // 返回false表示无前一个slice,退回到默认slice } } diff --git a/code/sdk/application/wearable/fd230/nativeabilityfwk/src/Ability.cpp b/code/sdk/application/wearable/fd230/nativeabilityfwk/src/Ability.cpp index 96368d19d..ff8ce558c 100644 --- a/code/sdk/application/wearable/fd230/nativeabilityfwk/src/Ability.cpp +++ b/code/sdk/application/wearable/fd230/nativeabilityfwk/src/Ability.cpp @@ -123,6 +123,8 @@ void Ability::ChangeSlice(const uint16_t targetSliceId, TransitionType type, } FreeElement(elementName); #endif + #ifdef FD230 + // showsStackSliceId(); if (targetSliceId == VIEW_MAIN) { ClearSliceIdStack(); /*凡是回到主界面都要清空栈*/ @@ -139,6 +141,7 @@ void Ability::ChangeSlice(const uint16_t targetSliceId, TransitionType type, if(id!=VIEW_INCOMING_CALL && id!=VIEW_BLUETOOTH_EARPHONE) make_phone_push(id); } + #endif TransitionTarget target; target.sliceInfo = targetSliceId | (priority << 16); bool runImmed = PageTransitionMgr::GetInstance().BeginTransition(TransitionCaller::CHANGE_SLICE, target, diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayBindAni.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayBindAni.h index ea2cc5820..d8c0cf65a 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayBindAni.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayBindAni.h @@ -30,6 +30,7 @@ private: UILabel *alipayLabel { nullptr }; UIImageAnimatorView *alipayImageAni { nullptr }; ImageAnimatorInfo searchImageInfo[ALIPAY_BIND_SEARCH_IMAGE_NUM]; + UIImageView *alipaylogImage { nullptr }; }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayC.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayC.h new file mode 100644 index 000000000..1d0cb6be7 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayC.h @@ -0,0 +1,19 @@ +#ifndef ALIPAY_C_H +#define ALIPAY_C_H + +#ifdef __cplusplus +#if __cplusplus +extern "C" +{ +#endif /* __cplusplus */ +#endif /* __cplusplus */ + +bool is_Alipay_bind(void); + +#ifdef __cplusplus +#if __cplusplus +} +#endif /* __cplusplus */ +#endif /* __cplusplus */ + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayExitBind.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayExitBind.h index 4b9321a60..95ae61c7e 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayExitBind.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayExitBind.h @@ -27,6 +27,7 @@ private: AlipayPresenter *presenter_; UILabel *alipayLabel[ALIPAY_SET_TWO] { nullptr }; UILabelButton *alipayButton[ALIPAY_SET_TWO] { nullptr }; + UIImageView *AttentionImage { nullptr }; }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListItem.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListItem.h index aef570a44..4782ae033 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListItem.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListItem.h @@ -15,10 +15,13 @@ namespace OHOS { /* * alipayList id. */ +#define SUPPORT_ALIPAY_TRANS 1 typedef enum : uint16_t { // alipayList item index ALIPAY_LIST_ITEM_PAY, +#if SUPPORT_ALIPAY_TRANS ALIPAY_LIST_ITEM_TRANS, +#endif ALIPAY_LIST_ITEM_SETTING, ALIPAY_LIST_ITEM_HELP, ALIPAY_LIST_ITEM_MAX diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListItemView.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListItemView.h index 74262222f..f7d4a9cf0 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListItemView.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListItemView.h @@ -28,6 +28,7 @@ private: UIImageView sIcon; UILabel sLabel; UIImageView sNextImage; + UIImageView back; AlipayListItem sItemInfo; }; } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListView.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListView.h index ef9dd02bf..60442a8e2 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListView.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayList/AlipayListView.h @@ -37,7 +37,7 @@ private: AlipayPresenter *presenter_; AlipayListAdapter *listAdapter { nullptr }; UIList *contentList { nullptr }; - AlipayListItem alipayLists[ALIPAY_LIST_ITEM_MAX]; + AlipayListItem alipayLists[ALIPAY_LIST_ITEM_MAX + 1] = {ALIPAY_LIST_ITEM_MAX,nullptr,nullptr,nullptr,false}; //加1是为了给标题一个位置(UI优化) }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayMainView.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayMainView.h index 325c47047..a5ffbd85c 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayMainView.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayMainView.h @@ -44,6 +44,7 @@ public: static AlipayMainView *GetInstance(void); void OnStart() 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/fd230/nativeapp/nativeui/alipay/include/AlipayModel.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayModel.h index 9cbbaf25a..99e22e427 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayModel.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayModel.h @@ -23,6 +23,7 @@ void AlipaySwitchTimerCallBackProc(void *argument); void AlipayMsgCallBack(uint32_t msgId, uint32_t actionRes); #define ALIPAY_BIND_STATUS_TIMER_LENGTH 2000 +#define ALIPAY_BIND_STATUS_DISCONNECT 3000 #define ALIPAY_GET_BIND_STR_MAX_LENGTH 256 #define ALIPAY_GET_PAY_STR_MAX_LENGTH 20 #define ALIPAY_GET_AID_STR_MAX_LENGTH 256 @@ -57,6 +58,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 AlipayFinishBind(void); bool AlipayStartSwitchTimer(uint16_t time); @@ -89,8 +92,13 @@ public: uint8_t* AlipayGetTransCode(void); uint32_t AlipayGetTransCodeLen(void); char* AlipayGetCardTitle(void); + + void AlipayScreenControl(bool turnOnFlag); + void delete_all_files_in_folder(const char *folder_path); 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/fd230/nativeapp/nativeui/alipay/include/AlipayPresenter.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayPresenter.h index 092ee45eb..1c038b948 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayPresenter.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayPresenter.h @@ -14,6 +14,9 @@ #include "color.h" #include "AlipayModel.h" +#include "KeyInputListener.h" +#include "common/key_code.h" + namespace OHOS { constexpr char *ALIPAY_LIST_PAY_BUTTON = (char *)"alipaylistpay"; constexpr char *ALIPAY_LIST_TRANS_BUTTON = (char *)"alipaylisttrans"; @@ -61,30 +64,30 @@ typedef enum { ALIPAY_PAY_VIEW, ALIPAY_PAY_BARCODE_VIEW, - ALIPAY_TRANS_VIEW, + ALIPAY_TRANS_VIEW, //具体的乘车码支付页面 ALIPAY_SETTING_VIEW, ALIPAY_HELP_VIEW, ALIPAY_SETTING_UNBIND_VIEW, ALIPAY_SETTING_FINISH_VIEW, ALIPAY_GET_BIND_FAILURE_VIEW, - ALIPAY_TRANS_LIST_VIEW, + ALIPAY_TRANS_LIST_VIEW, //交通卡列表视图 ALIPAY_TRANS_ENABLE_VIEW, ALIPAY_TRANS_TIPS_VIEW, - ALIPAY_TRANS_RES_VIEW, - ALIPAY_GET_TRANS_LIST_VIEW, - ALIPAY_TRANS_ANI_VIEW, + ALIPAY_TRANS_RES_VIEW, //提示网络异常视图 + ALIPAY_GET_TRANS_LIST_VIEW, //获取乘车码列表视图 + ALIPAY_TRANS_ANI_VIEW, //获取乘车码列表动画视图:加载动画 ALIPAY_INTERFACES_MAX } alipayInterfacesId; typedef enum { - ALIPAY_TRANS_TIPS_UNKNOW = 0, - ALIPAY_TRANS_TIPS_TO_MUCH, - ALIPAY_TRANS_TIPS_SECURE, - ALIPAY_TRANS_TIPS_LIST_UNKNOW, - ALIPAY_TRANS_TIPS_NOT_SUPPORT, + ALIPAY_TRANS_TIPS_UNKNOW = 0, //未知错误_具体错误码,请联系设备厂商解决 + ALIPAY_TRANS_TIPS_TO_MUCH, //开通的乘车码数量太多,清在手机支付宝-出行-管理中,管理后再用 + ALIPAY_TRANS_TIPS_SECURE, //存在安全风险,12小时内不可用,请切换到手机侧使用 + ALIPAY_TRANS_TIPS_LIST_UNKNOW, //未知错误_具体错误码,请联系设备厂商解决 + ALIPAY_TRANS_TIPS_NOT_SUPPORT, //暂不支持,请切换到手机侧使用 } alipayTransTipsId; typedef enum { @@ -93,13 +96,13 @@ typedef enum { } alipayTransResId; typedef enum { - ALIPAY_TRANS_GET_LIST_FIRST = 0, + ALIPAY_TRANS_GET_LIST_FIRST = 0, //首次获取交通卡交易列表索引 ALIPAY_TRANS_GET_LIST_CLICK_DETAIL, ALIPAY_TRANS_GET_LIST_CODE_DETAIL, } alipayTransGetListId; class AlipayMainView; -class AlipayPresenter : public Presenter, +class AlipayPresenter : public Presenter,public RootView::OnKeyActListener, public UIView::OnClickListener, public UIView::OnDragListener { public: @@ -140,6 +143,7 @@ public: ColorType CyanColor(void); bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; bool ClickFuncId(UIView &view); int32_t AlipayGetPayCode(uint8_t *payStr); int32_t AlipayGetNickName(uint8_t *nickName); diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipaySetting.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipaySetting.h index deb5a2da5..0f9d31445 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipaySetting.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipaySetting.h @@ -25,10 +25,10 @@ private: bool AlipayInitButton(); bool AlipayInitLabel(void); AlipayPresenter *presenter_; - UILabel *labelTitle { nullptr }; - UILabel *labelName { nullptr }; - UILabel *labelId { nullptr }; - UILabelButton *buttonSetting { nullptr }; + UILabel *labelTitle { nullptr }; // 标题:设置 + UILabel *labelName { nullptr }; // 用户名称 + UILabel *labelId { nullptr }; + UILabelButton *buttonSetting { nullptr }; // 解除绑定按钮 }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayTrans/AlipayTransListItemView.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayTrans/AlipayTransListItemView.h index 6a12a6a42..ca6886b97 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayTrans/AlipayTransListItemView.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayTrans/AlipayTransListItemView.h @@ -28,6 +28,7 @@ public: private: UILabel sLabel; UIImageView sNextImage; + UIView back; AlipayTransListItem sItemInfo; }; } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayUnbind.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayUnbind.h index 183b8066e..8118d59da 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayUnbind.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/include/AlipayUnbind.h @@ -27,6 +27,7 @@ private: AlipayPresenter *presenter_; UILabel *alipayLabel[ALIPAY_SET_TWO] { nullptr }; UILabelButton *alipayButton[ALIPAY_SET_TWO] { nullptr }; + UIImageView *AttentionImage { nullptr }; }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayBindAni.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayBindAni.cpp index 4574cb9f5..b5da85e05 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayBindAni.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayBindAni.cpp @@ -14,35 +14,46 @@ #include "graphic_service.h" namespace OHOS { -static const int16 ANILABEL_X_FIRST = 151; -static const int16 ANILABEL_Y_FIRST = 257; -static const int16 ANILABEL_WIDTH_FIRST = 151; -static const int16 ANILABEL_HEIGHT_FIRST = 48; +static const int16 ANILABEL_X_FIRST = 133; +static const int16 ANILABEL_Y_FIRST = 328; +static const int16 ANILABEL_WIDTH_FIRST = 200; +static const int16 ANILABEL_HEIGHT_FIRST = 60; static const char *ANILABEL_TEXT_FIRST = (char *)"正在绑定"; -static const int16 ANILABEL_FONT_FIRST = 38; +static const int16 ANILABEL_FONT_FIRST = 30; + +static constexpr const char *PNG_1_PATH = "user/res/alipay/1.bin"; +static constexpr const char *PNG_2_PATH = "user/res/alipay/2.bin"; +static constexpr const char *PNG_3_PATH = "user/res/alipay/3.bin"; +static constexpr const char *PNG_4_PATH = "user/res/alipay/4.bin"; +static constexpr const char *PNG_5_PATH = "user/res/alipay/5.bin"; +static constexpr const char *PNG_6_PATH = "user/res/alipay/6.bin"; +static constexpr const char *PNG_7_PATH = "user/res/alipay/7.bin"; +static constexpr const char *PNG_8_PATH = "user/res/alipay/8.bin"; + +static constexpr const char *PNG_LOG_PATH = "user/res/alipay/alipaylog.bin"; const char *searchImagePath[ALIPAY_BIND_SEARCH_IMAGE_NUM] = { - PNG_A019_080_IMAGE_PATH, - PNG_A019_081_IMAGE_PATH, - PNG_A019_082_IMAGE_PATH, - PNG_A019_083_IMAGE_PATH, - PNG_A019_084_IMAGE_PATH, - PNG_A019_085_IMAGE_PATH, - PNG_A019_086_IMAGE_PATH, - PNG_A019_087_IMAGE_PATH, + PNG_1_PATH, + PNG_2_PATH, + PNG_3_PATH, + PNG_4_PATH, + PNG_5_PATH, + PNG_6_PATH, + PNG_7_PATH, + PNG_8_PATH, }; -static const int16 ALIPAY_BIND_IMAGE_X = 162; -static const int16 ALIPAY_BIND_IMAGE_Y = 112; -static const int16 ALIPAY_BIND_IMAGE_WIDTH = 128; -static const int16 ALIPAY_BIND_IMAGE_HEIGHT = 128; +static const int16 ALIPAY_BIND_IMAGE_X = 149; +static const int16 ALIPAY_BIND_IMAGE_Y = 358; +static const int16 ALIPAY_BIND_IMAGE_WIDTH = 168; +static const int16 ALIPAY_BIND_IMAGE_HEIGHT = 40; -static const int16 ALIPAY_BIND_IMAGE_DELAY = 200; +static const int16 ALIPAY_BIND_IMAGE_DELAY = 100; -static const int16 RES_IMAGE_X = 162; -static const int16 RES_IMAGE_Y = 112; -static const int16 RES_IMAGE_WIDTH = 128; -static const int16 RES_IMAGE_HEIGHT = 128; +static const int16 RES_IMAGE_X = 149; +static const int16 RES_IMAGE_Y = 358; +static const int16 RES_IMAGE_WIDTH = 168; +static const int16 RES_IMAGE_HEIGHT = 40; AlipayBindAni::AlipayBindAni(AlipayPresenter *presenter) { @@ -63,6 +74,12 @@ AlipayBindAni::~AlipayBindAni() delete alipayImageAni; alipayImageAni = nullptr; } + if (alipaylogImage != nullptr) { + delete alipaylogImage; + alipaylogImage = nullptr; + } + + } bool AlipayBindAni::AlipayInitLabel(void) @@ -77,7 +94,7 @@ bool AlipayBindAni::AlipayInitLabel(void) alipayLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, ANILABEL_FONT_FIRST); alipayLabel->SetStyle(STYLE_TEXT_FONT, ANILABEL_FONT_FIRST); alipayLabel->SetAlign(TEXT_ALIGNMENT_CENTER); - alipayLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + alipayLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); Add(alipayLabel); return true; } @@ -98,14 +115,23 @@ bool AlipayBindAni::AlipayInitImageAni(void) searchImageInfo[i].height = ALIPAY_BIND_IMAGE_HEIGHT; } - alipayImageAni->SetPosition(RES_IMAGE_X, RES_IMAGE_Y, RES_IMAGE_WIDTH, RES_IMAGE_HEIGHT); + alipayImageAni->SetPosition(ALIPAY_BIND_IMAGE_X, ALIPAY_BIND_IMAGE_Y, ALIPAY_BIND_IMAGE_WIDTH, ALIPAY_BIND_IMAGE_HEIGHT); alipayImageAni->SetImageAnimatorSrc(searchImageInfo, ALIPAY_BIND_SEARCH_IMAGE_NUM, ALIPAY_BIND_IMAGE_DELAY); alipayImageAni->SetRepeat(true); alipayImageAni->SetAutoEnable(false); - alipayImageAni->SetResizeMode(UIImageView::FILL); + //alipayImageAni->SetResizeMode(UIImageView::FILL); Add(alipayImageAni); - alipayImageAni->Start(); + + alipaylogImage = new UIImageView(); + if (alipaylogImage == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindRes::AlipayInitImage new alipayImage fail"); + return false; + } + alipaylogImage->SetPosition(143, 130, 180, 180); + alipaylogImage->SetSrc(PNG_LOG_PATH); + Add(alipaylogImage); + return true; } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayBindRes.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayBindRes.cpp index 0a331982b..acde3eb94 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayBindRes.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayBindRes.cpp @@ -14,19 +14,20 @@ #include "AlipayModel.h" namespace OHOS { -static const int16 EXIT_LABEL_X_FIRST = 151; -static const int16 EXIT_LABEL_Y_FIRST = 257; -static const int16 EXIT_LABEL_WIDTH_FIRST = 151; -static const int16 EXIT_LABEL_HEIGHT_FIRST = 48; +static const int16 EXIT_LABEL_X_FIRST = 83; +static const int16 EXIT_LABEL_Y_FIRST = 350; + +static const int16 EXIT_LABEL_WIDTH_FIRST = 300; +static const int16 EXIT_LABEL_HEIGHT_FIRST = 50; static const char *EXIT_LABEL_TEXT_FIRST = (char *)"绑定失败"; -static const int16 EXIT_LABEL_FONT_FIRST = 38; +static const int16 EXIT_LABEL_FONT_FIRST = 35; static const char *EXIT_LABEL_TEXT_SEC = (char *)"绑定成功"; -static const int16 RES_IMAGE_X = 161; -static const int16 RES_IMAGE_Y = 110; -static const int16 RES_IMAGE_WIDTH = 135; -static const int16 RES_IMAGE_HEIGHT = 135; +static const int16 RES_IMAGE_X = 153; +static const int16 RES_IMAGE_Y = 140; +static const int16 RES_IMAGE_WIDTH = 160; +static const int16 RES_IMAGE_HEIGHT = 160; AlipayBindRes::AlipayBindRes(AlipayPresenter *presenter) { @@ -61,10 +62,10 @@ void AlipayBindRes::AlipayRefreshBindRes(void) // alipayLabel->Set if (presenter_->AlipayGetBindFlag()) { alipayLabel->SetText(EXIT_LABEL_TEXT_SEC); - alipayImage->SetSrc(PNG_ALIPAY_BIND_SUCCESS); + alipayImage->SetSrc(PNG_ALIPAY_YSE_ICON); } else { alipayLabel->SetText(EXIT_LABEL_TEXT_FIRST); - alipayImage->SetSrc(PNG_ALIPAY_BIND_FAILURE); + alipayImage->SetSrc(PNG_ALIPAY_NO_ICON); } alipayLabel->Invalidate(); alipayImage->Invalidate(); @@ -82,9 +83,9 @@ bool AlipayBindRes::AlipayInitLabel(const char *resStr) alipayLabel->SetPosition(EXIT_LABEL_X_FIRST, EXIT_LABEL_Y_FIRST, EXIT_LABEL_WIDTH_FIRST, EXIT_LABEL_HEIGHT_FIRST); alipayLabel->SetText(resStr); alipayLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_FIRST); - alipayLabel->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_FIRST); - alipayLabel->SetAlign(TEXT_ALIGNMENT_CENTER); - alipayLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + //alipayLabel->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_FIRST); + alipayLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + alipayLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); Add(alipayLabel); @@ -103,7 +104,7 @@ bool AlipayBindRes::AlipayInitImage(const char *imageSrc) // Set additional property alipayImage->SetAutoEnable(false); - alipayImage->SetResizeMode(UIImageView::FILL); + //alipayImage->SetResizeMode(UIImageView::FILL); Add(alipayImage); return true; @@ -122,7 +123,7 @@ bool AlipayBindRes::InitView() WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindRes::InitView AlipayInitLabel() false"); return false; } - if (!AlipayInitImage(PNG_ALIPAY_BIND_SUCCESS)) { + if (!AlipayInitImage(PNG_ALIPAY_YSE_ICON)) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindRes::InitView AlipayInitImage() false"); return false; } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayExitBind.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayExitBind.cpp index edf88e323..c24d18441 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayExitBind.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayExitBind.cpp @@ -12,33 +12,37 @@ #include "AlipayExitBind.h" namespace OHOS { -static const int16 EXIT_LABEL_X_FIRST = 132; -static const int16 EXIT_LABEL_X_SEC = 0; -static const int16 EXIT_LABEL_WIDTH_FIRST = 189; -static const int16 EXIT_LABEL_HEIGHT_FIRST = 48; - -static const int16 EXIT_LABEL_Y_FIRST = 57; -static const int16 EXIT_LABEL_Y_SECOND = 154; -static const int16 EXIT_LABEL_WIDTH_SEC = 454; -static const int16 EXIT_LABEL_HEIGHT_SEC = 83; -static const int16 EXIT_LABEL_FONT_FIRST = 38; + +static const int16 EXIT_LABEL_WIDTH_FIRST = 300; +static const int16 EXIT_LABEL_WIDTH_SEC = 360; + +static const int16 EXIT_LABEL_HEIGHT_FIRST = 35; +static const int16 EXIT_LABEL_HEIGHT_SEC = 70; + +static const int16 EXIT_LABEL_X_FIRST = (HORIZONTAL_RESOLUTION - EXIT_LABEL_WIDTH_FIRST) / 2; +static const int16 EXIT_LABEL_X_SEC = (HORIZONTAL_RESOLUTION - EXIT_LABEL_WIDTH_SEC) / 2; + +static const int16 EXIT_LABEL_Y_FIRST = 50; +static const int16 EXIT_LABEL_Y_SECOND = 222; + +static const int16 EXIT_LABEL_FONT_FIRST = 30; static const int16 EXIT_LABEL_FONT_SEC = 30; static const char *EXIT_LABEL_TEXT_FIRST = (char *)"未完成绑定"; -static const char *EXIT_LABEL_TEXT_SECOND = (char *)"当前未完成绑定,退出在进来\n需要重新扫码绑定"; +static const char *EXIT_LABEL_TEXT_SECOND = (char *)"当前未完成绑定,退出在进来需要重新扫码绑定"; -static const int16 EXIT_BUTTON_EXIT_X = 50; -static const int16 EXIT_BUTTON_EXIT_Y = 312; +static const int16 EXIT_BUTTON_EXIT_X = 58; +static const int16 EXIT_BUTTON_EXIT_Y = 320; -static const int16 EXIT_BUTTON_BIND_X = 233; -static const int16 EXIT_BUTTON_BIND_Y = 312; +static const int16 EXIT_BUTTON_BIND_X = 238; +static const int16 EXIT_BUTTON_BIND_Y = 320; static const char *EXIT_BUTTON_TEXT_FIRST = (char *)"退出"; static const char *EXIT_BUTTON_TEXT_SECOND = (char *)"去绑定"; -static const int16 EXIT_BUTTON_WIDTH = 169; -static const int16 EXIT_BUTTON_HEIGHT = 73; -static const int16 EXIT_BUTTON_FONT = 38; +static const int16 EXIT_BUTTON_WIDTH = 170; +static const int16 EXIT_BUTTON_HEIGHT = 90; +static const int16 EXIT_BUTTON_FONT = 26; AlipayExitBind::AlipayExitBind(AlipayPresenter *presenter) { @@ -62,6 +66,11 @@ AlipayExitBind::~AlipayExitBind() alipayButton[buttonNum] = nullptr; } } + if(AttentionImage) + { + delete AttentionImage; + AttentionImage =nullptr; + } } bool AlipayExitBind::AlipayInitLabel() @@ -78,7 +87,7 @@ bool AlipayExitBind::AlipayInitLabel() alipayLabel[ALIPAY_SET_ZERO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_FIRST); alipayLabel[ALIPAY_SET_ZERO]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_FIRST); alipayLabel[ALIPAY_SET_ZERO]->SetAlign(TEXT_ALIGNMENT_CENTER); - alipayLabel[ALIPAY_SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + alipayLabel[ALIPAY_SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); Add(alipayLabel[ALIPAY_SET_ZERO]); @@ -91,12 +100,23 @@ bool AlipayExitBind::AlipayInitLabel() EXIT_LABEL_HEIGHT_SEC); alipayLabel[ALIPAY_SET_ONE]->SetText(EXIT_LABEL_TEXT_SECOND); alipayLabel[ALIPAY_SET_ONE]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_SEC); - alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_LINE_SPACE, 6); - alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_SEC); + //alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_LINE_SPACE, 12); + //alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_SEC); + alipayLabel[ALIPAY_SET_ONE]->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xFF)); alipayLabel[ALIPAY_SET_ONE]->SetAlign(TEXT_ALIGNMENT_CENTER); - alipayLabel[ALIPAY_SET_ONE]->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); + alipayLabel[ALIPAY_SET_ONE]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); Add(alipayLabel[ALIPAY_SET_ONE]); + AttentionImage=new UIImageView(); + if (AttentionImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new FactoryResetImage fail!"); + return false; + } + AttentionImage->SetPosition(193, 110); + AttentionImage->SetSrc(PNG_ATTENTION_IMAGE); + Add(AttentionImage); + return true; } @@ -111,11 +131,12 @@ bool AlipayExitBind::InitSimilarButton(int16 num, int16 alipayX, int16 alipayY, int64_t backColor = 0; if (num == 0) { - backColor = 0xff4a83bf; - alipayButton[num]->SetTextColor(Color::GetColorFromRGBA(0x00, 0x00, 0x00, 0xff)); - alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + backColor = 0xff191919; + //alipayButton[num]->SetTextColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0x19)); + alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); } else if (num == 1) { - backColor = 0xff0b1928; + backColor = 0xff0176ff; + alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff0176ff); } alipayButton[num]->SetPosition(alipayX, alipayY, EXIT_BUTTON_WIDTH, EXIT_BUTTON_HEIGHT); alipayButton[num]->SetText(buttonStr); diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayList/AlipayListItemView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayList/AlipayListItemView.cpp index 4cd238d8a..c7722640d 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayList/AlipayListItemView.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayList/AlipayListItemView.cpp @@ -9,16 +9,24 @@ #include "AlipayListItemView.h" namespace OHOS { -static constexpr int16 ALIPAY_LIST_ICON_X = 20; -static constexpr int16 NUM_22 = 22; -static constexpr int16_t ALIPAY_LIST_ICON_WIDTH = 64; -static constexpr int16_t ALIPAY_LIST_ICON_HEIGHT = 64; -static constexpr int16_t ALIPAY_LIST_ITEM_BUTTON_HEIGHT = 100; -static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_WIDTH = 122; -static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_HEIGHT = 100; -static constexpr int16_t ALIPAY_LIST_ITEM_FONT_SIZE = 40; -static constexpr int16_t ALIPAY_LISTS_RESIZE_SIZE = 100; -static constexpr int16_t ALIPAY_LIST_SICON_Y = 15; +static constexpr int16_t ALIPAY_LIST_ITEM_BUTTON_HEIGHT = 120; + +static constexpr int16 ALIPAY_LIST_BACK_X = 43; +static constexpr int16 ALIPAY_LIST_BACK_Y = 0; +static constexpr int16_t ALIPAY_LIST_BACK_WIDTH = 380; +static constexpr int16_t ALIPAY_LIST_BACK_HEIGHT = 100; + +static constexpr int16 ALIPAY_LIST_ICON_X = 19 + ALIPAY_LIST_BACK_X; +static constexpr int16 ALIPAY_LIST_ICON_Y = 19; +static constexpr int16_t ALIPAY_LIST_ICON_WIDTH = 62; +static constexpr int16_t ALIPAY_LIST_ICON_HEIGHT = 62; + +static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_X = 115 + ALIPAY_LIST_BACK_X; +static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_Y = 33; +static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_WIDTH = 180; +static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_HEIGHT = 35; +static constexpr int16_t ALIPAY_LIST_ITEM_FONT_SIZE = 30; + static constexpr int16 NUMS_2 = 2; static constexpr int16 NUMS_50 = 50; @@ -31,6 +39,7 @@ AlipayListItemView::AlipayListItemView() SetTouchable(true); SetUpChild(); + Add(&back); Add(&sIcon); Add(&sLabel); Add(&sNextImage); @@ -38,6 +47,7 @@ AlipayListItemView::AlipayListItemView() AlipayListItemView::~AlipayListItemView() { + Remove(&back); Remove(&sIcon); Remove(&sLabel); Remove(&sNextImage); @@ -50,30 +60,60 @@ void AlipayListItemView::SetItemInfo(const AlipayListItem &itemInfo) sIcon.SetSrc(itemInfo.icon); sLabel.SetText(itemInfo.label); sNextImage.SetVisible(itemInfo.hasSecondMenu); + if(!sItemInfo.hasSecondMenu) + { + back.SetVisible(false); + sIcon.SetVisible(false); + sNextImage.SetVisible(false); + sLabel.SetPosition((HORIZONTAL_RESOLUTION - ALIPAY_LIST_ITEM_LABEL_WIDTH) / NUMS_2, ALIPAY_LIST_ITEM_LABEL_Y + 17); + sLabel.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + SetHeight(120); + } + else + { + back.SetVisible(true); + sIcon.SetVisible(true); + sNextImage.SetVisible(true); + sLabel.SetPosition(ALIPAY_LIST_ITEM_LABEL_X, ALIPAY_LIST_ITEM_LABEL_Y); + sLabel.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + if(sItemInfo.index == ALIPAY_LIST_ITEM_HELP) + { + SetHeight(180); + } + else + { + SetHeight(120); + } + } } void AlipayListItemView::SetUpChild() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayListItemView::SetUpChild()"); - sIcon.SetPosition(ALIPAY_LIST_ICON_X, ALIPAY_LIST_SICON_Y); + sIcon.SetPosition(ALIPAY_LIST_ICON_X, ALIPAY_LIST_ICON_Y); sIcon.Resize(ALIPAY_LIST_ICON_WIDTH, ALIPAY_LIST_ICON_HEIGHT); - sIcon.SetAutoEnable(false); - sIcon.SetResizeMode(UIImageView::FILL); + sIcon.SetResizeMode(UIImageView::CENTER); sIcon.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE); - sLabel.SetPosition(ALIPAY_LIST_ITEM_LABEL_WIDTH, 0); + sLabel.SetPosition(ALIPAY_LIST_ITEM_LABEL_X, ALIPAY_LIST_ITEM_LABEL_Y); sLabel.Resize(ALIPAY_LIST_ITEM_LABEL_WIDTH, ALIPAY_LIST_ITEM_LABEL_HEIGHT); sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, ALIPAY_LIST_ITEM_FONT_SIZE); - sLabel.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - sLabel.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE); - sLabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full); - sLabel.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); - sLabel.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + sLabel.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + sLabel.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + // sLabel.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE); + // sLabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full); + // sLabel.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + // sLabel.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); sNextImage.SetSrc(PNG_SETTING_NEXT_IMAGE); sNextImage.SetPosition(LA_HORIZONTAL_RESOLUTION - NUMS_50, (SETTING_ITEM_HEIGHT - sNextImage.GetHeight()) / NUMS_2); sNextImage.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE); + + back.SetPosition(ALIPAY_LIST_BACK_X, ALIPAY_LIST_BACK_Y, ALIPAY_LIST_BACK_WIDTH, ALIPAY_LIST_BACK_HEIGHT); + back.SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + back.SetStyle(STYLE_BACKGROUND_OPA, 0xff); + back.SetStyle(STYLE_BORDER_RADIUS, 100); } } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayList/AlipayListView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayList/AlipayListView.cpp index e96e47030..91be991f2 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayList/AlipayListView.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayList/AlipayListView.cpp @@ -6,8 +6,10 @@ */ #include -#include "AlipayListView.h" -#include "AlipayListItem.h" +// #include "AlipayListView.h" +// #include "AlipayListItem.h" +#include "alipay/include/AlipayList/AlipayListView.h" +#include "alipay/include/AlipayList/AlipayListItem.h" #include "cmsis_os2.h" namespace OHOS { @@ -53,9 +55,11 @@ bool AlipayList::AlipayInitList() WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayList::OnStart::contentList is nullptr"); return false; } - contentList->SetPosition(ALIPAY_LIST_POSITION_X, ALIPAY_LIST_POSITION_Y); - contentList->Resize(HORIZONTAL_RESOLUTION - ALIPAY_LIST_POSITION_X, VERTICAL_RESOLUTION - ALIPAY_LIST_POSITION_Y); - contentList->SetScrollBlankSize(ALIPAY_LIST_SCROLLBLANKSIZE); + // contentList->SetPosition(ALIPAY_LIST_POSITION_X, ALIPAY_LIST_POSITION_Y); + // contentList->Resize(HORIZONTAL_RESOLUTION - ALIPAY_LIST_POSITION_X, VERTICAL_RESOLUTION - ALIPAY_LIST_POSITION_Y); + contentList->SetPosition(0, 0); + contentList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + // contentList->SetScrollBlankSize(ALIPAY_LIST_SCROLLBLANKSIZE); contentList->SetSelectPosition(ALIPAY_LIST_POSITION_Y); contentList->SetDraggable(true); contentList->SetThrowDrag(false); @@ -70,11 +74,33 @@ bool AlipayList::AlipayInitList() void AlipayList::InitAlipayListItem() { +#if 0 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayListModel::InitAlipayListItem()"); alipayLists[0] = {ALIPAY_LIST_ITEM_PAY, ALIPAY_LIST_PAY_BUTTON, PNG_ALIPAY_LIST_PAY, "付款码", true}; +#if SUPPORT_ALIPAY_TRANS alipayLists[1] = {ALIPAY_LIST_ITEM_TRANS, ALIPAY_LIST_TRANS_BUTTON, PNG_ALIPAY_LIST_TRANS, "乘车码", true}; alipayLists[2] = {ALIPAY_LIST_ITEM_SETTING, ALIPAY_LIST_SETTING_BUTTON, PNG_ALIPAY_LIST_SETTING, "设置", true}; alipayLists[3] = {ALIPAY_LIST_ITEM_HELP, ALIPAY_LIST_HELP_BUTTON, PNG_ALIPAY_LIST_HELP, "帮助", true}; +#else + alipayLists[1] = {ALIPAY_LIST_ITEM_SETTING, ALIPAY_LIST_SETTING_BUTTON, PNG_ALIPAY_LIST_SETTING, "设置", true}; + alipayLists[2] = {ALIPAY_LIST_ITEM_HELP, ALIPAY_LIST_HELP_BUTTON, PNG_ALIPAY_LIST_HELP, "帮助", true}; +#endif +#else + /* -------------------------------------------------------------------------- */ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayListModel::InitAlipayListItem()"); + alipayLists[0] = {ALIPAY_LIST_ITEM_MAX, nullptr, nullptr, "支付宝", false}; + alipayLists[1] = {ALIPAY_LIST_ITEM_PAY, ALIPAY_LIST_PAY_BUTTON, PNG_ALIPAY_LIST_PAY, "付款码", true}; + #if SUPPORT_ALIPAY_TRANS + alipayLists[2] = {ALIPAY_LIST_ITEM_TRANS, ALIPAY_LIST_TRANS_BUTTON, PNG_ALIPAY_LIST_TRANS, "乘车码", true}; + alipayLists[3] = {ALIPAY_LIST_ITEM_SETTING, ALIPAY_LIST_SETTING_BUTTON, PNG_ALIPAY_LIST_SETTING, "设置", true}; + alipayLists[4] = {ALIPAY_LIST_ITEM_HELP, ALIPAY_LIST_HELP_BUTTON, PNG_ALIPAY_LIST_HELP, "帮助", true}; + #else + alipayLists[2] = {ALIPAY_LIST_ITEM_SETTING, ALIPAY_LIST_SETTING_BUTTON, PNG_ALIPAY_LIST_SETTING, "设置", true}; + alipayLists[3] = {ALIPAY_LIST_ITEM_HELP, ALIPAY_LIST_HELP_BUTTON, PNG_ALIPAY_LIST_HELP, "帮助", true}; + #endif + /* -------------------------------------------------------------------------- */ + +#endif } bool AlipayList::InitListView() @@ -97,7 +123,7 @@ bool AlipayList::InitListView() void AlipayList::AddAlipayListItemToList(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayList::AddAlipayListItemToList"); - for (uint8_t i = 0; i < ALIPAY_LIST_ITEM_MAX; i++) { + for (uint8_t i = 0; i < ALIPAY_LIST_ITEM_MAX + 1; i++) { listAdapter->AddListItem(alipayLists[i]); } } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayMainView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayMainView.cpp index 76c9385ff..8757eb61b 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayMainView.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayMainView.cpp @@ -8,6 +8,25 @@ #include "AlipayMainView.h" #include "UiConfig.h" #include "alipay_feature.h" +#include "custom_utils.h" +#include "AlipayC.h" + +bool is_Alipay_bind(void) +{ + if( OHOS:: AlipayMainView::GetInstance()) + { + int16 theView = OHOS::AlipayMainView::GetInstance()->GetWhichInter(); + if(theView==OHOS::ALIPAY_BIND_VIEW) + { + return true; + } + else + { + return false; + } + } + return false; +} namespace OHOS { #define ALIPAY_BIND_SUCCESS_RES_TIMER_LENGTH 3000 @@ -49,6 +68,12 @@ AlipayMainView *AlipayMainView::GetInstance(void) void AlipayMainView::OnStart() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::OnStart"); + if(Alipay_is_init()==false) + return; + // 增加按键监听 + RootView::GetInstance()->SetOnKeyActListener(presenter_); + alipayInterfacesId startView; bool bindFlag = AlipayModel::GetInstance()->AlipayGetBindstate(); if (!bindFlag) { @@ -60,6 +85,8 @@ void AlipayMainView::OnStart() alipayBind->InitView(); startView = ALIPAY_BIND_VIEW; container[startView] = alipayBind; + //如果是绑定界面则打开广播 + start_alipay_ble_service(); AlipayModel::GetInstance()->AlipayStartBind(); } else { alipayList = new AlipayList(presenter_); @@ -175,7 +202,22 @@ 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().Back(); + } +} void AlipayMainView::DropView(UIView &view) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView"); @@ -200,8 +242,9 @@ void AlipayMainView::DropView(UIView &view) AlipayModel::GetInstance()->AlipayFinishBind(); } AlipayModel::GetInstance()->AlipayStopSwitchTimer(); - NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); - + AlipayModel::GetInstance()->AlipayStopBindTimer(); + AlipayModel::GetInstance()->AlipayStopdisconnecTimer(); + NativeAbility::GetInstance().Back(); } else if (&view == container[ALIPAY_TRANS_LIST_VIEW]) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_LIST_VIEW]"); ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_LIST_VIEW); @@ -433,6 +476,11 @@ bool AlipayMainView::ChangeBindView(int16 thisView) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::ChangeBindView"); AlipayModel::GetInstance()->AlipayStartBind(); + + /**启动alipay蓝牙服务*/ + //需要重新打开广播 + start_alipay_ble_service(); + if (container[thisView] == nullptr) { alipayBind = new AlipayBind(presenter_); if (alipayBind == nullptr) { @@ -730,6 +778,12 @@ void AlipayMainView::DestroyTempView(int16 hideView) } } if (hideView == ALIPAY_TRANS_TIPS_VIEW) { + + if(AlipayModel::GetInstance()->AlipayGetSwitchIndex() == ALIPAY_TRANS_TIPS_LIST_UNKNOW) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DestroyTempView ALIPAY_TRANS_TIPS_UNKNOW"); + AlipayModel::GetInstance()->delete_all_files_in_folder("/user/alipay/"); + } delete alipayTransTips; alipayTransTips = nullptr; } else if (hideView == ALIPAY_TRANS_RES_VIEW) { @@ -772,6 +826,11 @@ void AlipayMainView::ChangeView(int16 hideView, int16 showView) container[hideView]->SetVisible(false); container[showView]->SetVisible(true); + if(hideView==ALIPAY_BIND_VIEW) + { + stop_alipay_ble_service(); + } + AlipayModel::GetInstance()->SetAlipayInterLis(showView); Draw(); diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayModel.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayModel.cpp index 0414fd48b..5142312e5 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayModel.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayModel.cpp @@ -11,6 +11,10 @@ #include "AlipayMainView.h" #include "graphic_service.h" +#include "power_display_service.h" +#include "custom_utils.h" +#include "bleService.h" +#include "ConfigModel.h" namespace OHOS { AlipayModel::AlipayModel() : alipayApi(alipay_svr_get_api()) { @@ -37,6 +41,7 @@ int16 AlipayModel::GetAlipayInterLis(void) { return alipayInterLis; } +static uint8_t disconnectfalg=0; void AlipayBindCallBackProc(void *argument) { @@ -61,6 +66,7 @@ void AlipayBindCallBackProc(void *argument) } else if (ALIPAY_INTER_STATUS_BINDING_OK == status && reFlag == 1) { AlipayModel::GetInstance()->AlipaySetRefreshFlag(0); AlipayModel::GetInstance()->AlipayFinishBind(); + AlipayModel::GetInstance()->AlipayStopBindTimer(); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_OK"); AlipayModel::GetInstance()->AlipaySetBindFlag(true); AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW); @@ -71,13 +77,95 @@ void AlipayBindCallBackProc(void *argument) AlipayModel::GetInstance()->AlipaySetRefreshFlag(0); AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW); } + else if (ALIPAY_INTER_STATUS_START_BINDING == status && reFlag == 1) { + if(get_Alipay_ble_connect()==false) + { + disconnectfalg++; + if(disconnectfalg>=2) + { + + AlipayModel::GetInstance()->AlipaySetBindFlag(false); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_FAIL"); + AlipayModel::GetInstance()->AlipaySetRefreshFlag(0); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "ble 断开连接 "); + AlipayModel::GetInstance()->AlipayStopBindTimer(); + AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW); + } + + //AlipayModel::GetInstance()->ble_disconnect_AlipayStartBind(); + } + + } } +void AlipayBindCallBackProcdisconnect(void *argument) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProcdisconnect 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 ) { + if(get_Alipay_ble_connect()==false) + { + AlipayModel::GetInstance()->AlipayStopBindTimer(); + AlipayModel::GetInstance()->AlipaySetBindFlag(false); + WEARABLE_LOGE(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_DISCONNECT); + // if (retcode != 0) { + // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStartBind Start timer fail"); + // return false; + // } + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::ble_disconnect_AlipayStartBind"); + // } + + 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) { @@ -87,6 +175,7 @@ bool AlipayModel::AlipayStartBind(void) return false; } } + disconnectfalg=0; int32_t retcode = osTimerStart(bindTimerId, ALIPAY_BIND_STATUS_TIMER_LENGTH); if (retcode != 0) { @@ -94,7 +183,7 @@ bool AlipayModel::AlipayStartBind(void) return false; } - alipayApi->bind_start(); + alipayApi->bind_start(); //调用支付宝API开始绑定流程 uint8_t str[ALIPAY_GET_BIND_STR_MAX_LENGTH] = { 0 }; AlipayGetBindCode(str); return true; @@ -178,12 +267,14 @@ void AlipayModel::AlipayStopSwitchTimer() return; } +//通过 alipay_get_bind_status 获取绑定状态,判断是否需要跳转绑定页面 bool AlipayModel::AlipayGetBindstate(void) { bool state = alipayApi->get_bind_state(); return state; } +//通过 alipay_get_bind_str 获取绑定码串生成二维码 int32_t AlipayModel::AlipayGetBindCode(uint8_t *bindStr) { int32_t bindStrLen = ALIPAY_GET_BIND_STR_MAX_LENGTH; @@ -192,6 +283,7 @@ int32_t AlipayModel::AlipayGetBindCode(uint8_t *bindStr) return ret; } +//通过 alipay_get_pay_str 获取支付码串生成二维码 int32_t AlipayModel::AlipayGetPayCode(uint8_t *payStr) { uint32_t payStrLen = ALIPAY_GET_PAY_STR_MAX_LENGTH; @@ -200,6 +292,7 @@ int32_t AlipayModel::AlipayGetPayCode(uint8_t *payStr) return ret; } +//通过 alipay_get_nickname 获取用户昵称 int32_t AlipayModel::AlipayGetNickName(uint8_t *nickName) { uint32_t nickNameLen = ALIPAY_GET_NICKNAME_MAX_LENGTH; @@ -208,6 +301,7 @@ int32_t AlipayModel::AlipayGetNickName(uint8_t *nickName) return ret; } +//通过 alipay_get_logon_id 获取用户登录账号 int32_t AlipayModel::AlipayGetIdName(uint8_t *idStr) { uint32_t idStrLen = ALIPAY_GET_ID_STR_MAX_LENGTH; @@ -216,6 +310,7 @@ int32_t AlipayModel::AlipayGetIdName(uint8_t *idStr) return ret; } +//通过 alipay_get_aid_code 获取帮助码串生成二维码 int32_t AlipayModel::AlipayGetAidCode(int8_t *aidStr) { uint32_t aidStrLen = ALIPAY_GET_AID_STR_MAX_LENGTH; @@ -224,6 +319,7 @@ int32_t AlipayModel::AlipayGetAidCode(int8_t *aidStr) return ret; } +//通过 alipay_remove_bind 解除绑定关系 void AlipayModel::AlipayUnbind(void) { int32_t ret = alipayApi->remove_bind(); @@ -233,6 +329,8 @@ void AlipayModel::AlipayUnbind(void) void AlipayModel::AlipayStopBindTimer(void) { + disconnectfalg=0; + if (bindTimerId == nullptr) { return; } @@ -253,6 +351,7 @@ void AlipayModel::AlipayExitLpm(void) return; } +/*从支付宝获取最后一次交易的交易码和交易卡标题,并将结果存储在相应的数组中*/ int32_t AlipayModel::AlipayGetLastTranscode() { memset_s(transCode_, ALIPAY_TRANS_CODE_MAX_LEN, 0, ALIPAY_TRANS_CODE_MAX_LEN); @@ -260,10 +359,11 @@ int32_t AlipayModel::AlipayGetLastTranscode() uint32_t len = ALIPAY_TRANS_CODE_MAX_LEN; int32_t ret = alipayApi->get_last_transcode(cardTitle_, transCode_, &len); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:ret:%u,len:%u.", ret, len); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:ret:%u,len:%u.", ret, len); return ret; } +/*获取本地交易列表*/ int32_t AlipayModel::AlipayGetLocalTranslist() { cardInfo_ = AlipayTransGetCardList(); @@ -271,7 +371,7 @@ int32_t AlipayModel::AlipayGetLocalTranslist() sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH); uint32_t localListSize = sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH; int32_t ret = alipayApi->get_local_translist(cardInfo_, &localListSize, &cardSum_); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:%u.", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "获取本地交易列表 in:%u.", ret); return ret; } @@ -291,7 +391,7 @@ int32_t AlipayModel::AlipayGetOnlineTranslist() uint32_t onListSize = sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH; uint32_t onLineNum = 0; int32_t ret = alipayApi->get_online_translist(onLineList, &onListSize, &onLineNum); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetOnlineTranslist in,ret:%u,num:%u.", ret, onLineNum); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetOnlineTranslist in,ret:%u,num:%u.", ret, onLineNum); if (ret == 0) { memset_s(cardInfo_, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, 0, @@ -311,25 +411,29 @@ int32_t AlipayModel::AlipayUpdateTransCard(uint32_t index) return ret; } +// 检查指定索引的交易卡状态 int32_t AlipayModel::AlipayCheckTransCard(uint32_t index) { mc_alipay_tans_card_status_t cardStatus = { 0 }; + //检查指定索引的交易卡状态 int32_t ret = alipayApi->check_trans_cartstatus(&cardInfo_[index], &cardStatus); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret); + // 如果交易卡存在且剩余使用次数大于等于最小有效次数,返回成功 if (cardStatus.card_exits && cardStatus.remain_use_count >= ALIPAY_TRANS_CARD_MIN_VALID_NUM) { return 0; } return -1; } +// 获取指定索引的交易码 int32_t AlipayModel::AlipayGetTransCode(uint32_t index) { - cardInfo_ = AlipayTransGetCardList(); + cardInfo_ = AlipayTransGetCardList(); //获取交易卡列表 memset_s(transCode_, ALIPAY_TRANS_CODE_MAX_LEN, 0, ALIPAY_TRANS_CODE_MAX_LEN); memset_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, 0, ALIPAY_TRANS_CARD_MEMBER_LEN); transCodeLen_ = ALIPAY_TRANS_CODE_MAX_LEN; - int32_t ret = alipayApi->get_transcode(&cardInfo_[index], transCode_, &transCodeLen_); - if (ret == 0) { + int32_t ret = alipayApi->get_transcode(&cardInfo_[index], transCode_, &transCodeLen_); //获取指定索引的交易码 + if (ret == 0) { //如果获取成功,复制卡标题 memcpy_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, cardInfo_[index].title, ALIPAY_TRANS_CARD_MEMBER_LEN); } WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret); @@ -581,4 +685,62 @@ char* AlipayModel::AlipayGetCardTitle(void) return cardTitle_; } +/// @brief 支付宝屏幕控制 +/// @param turnOnFlag +void AlipayModel::AlipayScreenControl(bool turnOnFlag) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayScreenControl %d",turnOnFlag); + const power_display_svr_api_t *display_api = power_display_svr_get_api(); + if(turnOnFlag) + { + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); + uapi_setScreenBrightness(MAX_BRIGHTNESS); //最高亮度 + } + else + { + ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); + uapi_setScreenBrightness(ConfigModel::GetInstance()->GetBrightness());//退出APP将亮度恢复到ConfigModel中设置的亮度值 + } +} + +#include +#include +#include +#include + +// 删除指定文件夹下的所有文件 +void AlipayModel::delete_all_files_in_folder(const char *folder_path) { + DIR *dir; + struct dirent *entry; + struct stat statbuf; + char path[1024]; + + if ((dir = opendir(folder_path)) == NULL) { + printf("无法打开文件夹"); + return; + } + + while ((entry = readdir(dir)) != NULL) { + if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) { + continue; + } + + snprintf(path, sizeof(path), "%s/%s", folder_path, entry->d_name); + + if (stat(path, &statbuf) == -1) { + printf("无法获取文件状态"); + continue; + } + + if (S_ISREG(statbuf.st_mode)) { + if (unlink(path) == -1) { + printf("无法删除文件"); + } + } + } + + closedir(dir); + printf("文件夹 %s 下的所有文件已成功删除。\n", folder_path); +} + } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayPayCode.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayPayCode.cpp index 79e738f0f..80f52fa27 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayPayCode.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayPayCode.cpp @@ -204,7 +204,7 @@ bool AlipayPayCode::InitView() SetOnDragListener(presenter_); SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); SetStyle(STYLE_BACKGROUND_COLOR, 0xff1677ff); - SetStyle(STYLE_BACKGROUND_OPA, 0xff); + //SetStyle(STYLE_BACKGROUND_OPA, 0xff); if (!AlipayInitLabel()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPayCode::InitView AlipayInitLabel() false"); diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayPresenter.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayPresenter.cpp index a58470e2d..eb1bff420 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayPresenter.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayPresenter.cpp @@ -19,7 +19,10 @@ #include "AlipayTransListItemView.h" #include "AlipayTransListView.h" #include "NativeRegisterManager.h" - +#include "custom_utils.h" +#include "common/key_code.h" +#include "gfx_utils/mem_check.h" +#include "AlipayC.h" namespace OHOS { REGIST_MENU(VIEW_MAIN_ALIPAY, AlipayMainView, AlipayPresenter, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_DEFAULT_IMG, "支付宝"); @@ -51,10 +54,18 @@ AlipayPresenter *AlipayPresenter::GetInstance() void AlipayPresenter::OnStart() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStart"); + if(Alipay_is_init()==false) + return; + /* -------------------------------- 设置支付宝界面常亮 ------------------------------- */ + alipayMode_->AlipayScreenControl(true); + /* -------------------------------------------------------------------------- */ alipayMode_->AlipayExitLpm(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " alipayMode_->AlipayExitLpm()"); + if (!alipayMode_->AlipayInitModel()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::OnStart AlipayInitModel fail."); - NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + NativeAbility::GetInstance().Back(); return; } } @@ -67,9 +78,15 @@ void AlipayPresenter::OnResume(void) void AlipayPresenter::OnStop(void) { + + /**关闭alipay蓝牙服务*/ + stop_alipay_ble_service(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStop"); svr_alipay_destroy_task(); alipayMode_->AlipayDeinitModel(); alipayMode_->AlipayEnterLpm(); + /* -------------------------------- 恢复屏幕保持亮屏的时间 ------------------------------- */ + alipayMode_->AlipayScreenControl(false); } bool AlipayPresenter::OnDrag(UIView &view, const DragEvent &event) @@ -88,8 +105,7 @@ void AlipayPresenter::ClickExitAlipay(UIView &view) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickExitAlipay start"); AlipayModel::GetInstance()->AlipayFinishBind(); - uint16 preSlice = NativeAbility::GetInstance().GetPreSliceId(); - NativeAbility::GetInstance().ChangeSlice(preSlice); + NativeAbility::GetInstance().Back(); return; } @@ -100,15 +116,25 @@ void AlipayPresenter::ClickJumpPay(UIView &view) return; } +/** + * @brief 点击跳转到交通卡相关视图的处理函数 + * + * 当用户点击跳转到交通卡相关视图的按钮时,此函数会被调用。 + * 它会尝试获取本地交通卡交易列表,根据获取结果决定跳转到不同的视图。 + * + * @param view 被点击的视图对象 + */ void AlipayPresenter::ClickJumpTrans(UIView &view) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickJumpTrans start"); - int32_t ret = alipayMode_->AlipayGetLocalTranslist(); - if (ret != 0) { - AlipaySetSwitchIndex(ALIPAY_TRANS_GET_LIST_FIRST); - view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_GET_TRANS_LIST_VIEW); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "点击跳转到交通卡相关视图的操作开始"); + int32_t ret = alipayMode_->AlipayGetLocalTranslist(); //获取本地交通卡交易列表 + if (ret != 0) { //获取本地交通卡交易列表失败 + AlipaySetSwitchIndex(ALIPAY_TRANS_GET_LIST_FIRST); //设置切换索引为首次获取交通卡交易列表 + view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_GET_TRANS_LIST_VIEW); //将当前视图从列表视图切换到获取交通卡交易列表视图 } else if (ret == 0) { - int32_t get_res = alipayMode_->AlipayGetLastTranscode(); + int32_t get_res = alipayMode_->AlipayGetLastTranscode(); //从支付宝获取最后一次交易的交易码 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickJumpTrans get_res:%d", get_res); if (get_res == 0) { view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_TRANS_VIEW); } else { @@ -120,6 +146,7 @@ void AlipayPresenter::ClickJumpTrans(UIView &view) void AlipayPresenter::ClickRefreshList(UIView &view) { + //刷新交通卡列表 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickRefreshList start"); alipayMode_->AlipaySendMsg(ALIPAY_MSG_UPDATA_TRANS_LIST); view_->ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_TRANS_ANI_VIEW); @@ -128,6 +155,7 @@ void AlipayPresenter::ClickRefreshList(UIView &view) void AlipayPresenter::ClickBackList(UIView &view) { + //获取乘车码列表视图退回到列表视图 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickBackList start"); view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_LIST_VIEW); return; @@ -135,8 +163,11 @@ void AlipayPresenter::ClickBackList(UIView &view) void AlipayPresenter::ClickUpdateList(UIView &view) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickUpdateList start"); + //获取交通卡列表 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickUpdateList start"); + // 发送更新交通卡列表的消息 alipayMode_->AlipaySendMsg(ALIPAY_MSG_UPDATA_TRANS_LIST); + // 从获取交通卡列表视图切换到交通卡动画视图 view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_ANI_VIEW); return; } @@ -164,6 +195,7 @@ void AlipayPresenter::ClickTransToTransList(UIView &view) return; } +//点击刷新按钮 void AlipayPresenter::ClickTransToTransCode(UIView &view) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickTransToTransCode start"); @@ -200,25 +232,27 @@ void AlipayPresenter::ClickTransToTransCode(UIView &view) return; } +/// @brief 处理用户点击重试获取支付宝交易码 +/// @param view void AlipayPresenter::ClickRetryTransCode(UIView &view) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickRetryTransCode start"); - uint32_t index = AlipayGetCardNum(); - int32_t ret = alipayMode_->AlipayGetTransCode(index); + uint32_t index = AlipayGetCardNum(); //获取当前选中的交通卡索引 + int32_t ret = alipayMode_->AlipayGetTransCode(index); //尝试重新获取交易码 if (ret == 0) { - view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_VIEW); + view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_VIEW); //成功获取交易码,跳转到交易码视图 } else if (ret == ALIPAY_TRANS_CODE_NET_ERROR) { AlipaySetSwitchIndex(ALIPAY_TRANS_RES_CODE); - view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_RES_VIEW); + view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_RES_VIEW); //网络错误,跳转到交易码获取失败视图 } else { if (ret == ALIPAY_TRANS_CODE_DATA_LIMIT) { - AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE); + AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE); //数据限制错误:设置安全提示 } else if (ret == ALIPAY_TRANS_CODE_NOT_SUPPORT) { - AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT); + AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT); //不支持的错误:设置不支持提示 } else { - AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW); + AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW); //未知错误:设置未知错误提示 } - view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW); + view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW); //切换到相应的错误提示视图 } return; } @@ -412,6 +446,21 @@ bool AlipayPresenter::OnClick(UIView &view, const ClickEvent &event) return true; } +bool AlipayPresenter::OnKeyAct(UIView &view, const KeyEvent &event) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::OnKeyAct"); + uint16 keyID = event.GetKeyId(); + uint16_t keyState = event.GetState(); + // 如果是power键就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0) + { + view_->DropView(0); + + } + return true; + +} + int32_t AlipayPresenter::AlipayGetPayCode(uint8_t *payStr) { return alipayMode_->AlipayGetPayCode(payStr); @@ -432,6 +481,7 @@ int32_t AlipayPresenter::AlipayGetIdName(uint8_t *idStr) return alipayMode_->AlipayGetIdName(idStr); } +//通过获取帮助码串生成二维码 int32_t AlipayPresenter::AlipayGetAidCode(int8_t *aidStr) { return alipayMode_->AlipayGetAidCode(aidStr); @@ -456,6 +506,7 @@ void AlipayPresenter::AlipaySetSwitchIndex(uint32_t switchIndex) alipayMode_->AlipaySetSwitchIndex(switchIndex); } +//获取 uint32_t AlipayPresenter::AlipayGetCardNum(void) { return alipayMode_->AlipayGetCardNum(); diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipaySetting.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipaySetting.cpp index c889eff58..1431015d9 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipaySetting.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipaySetting.cpp @@ -8,36 +8,39 @@ #include "UiConfig.h" #include #include "cmsis_os.h" -#include "AlipaySetting.h" -#include "AlipayModel.h" +// #include "AlipaySetting.h" +// #include "AlipayModel.h" +#include "alipay/include/AlipaySetting.h" +#include "alipay/include/AlipayModel.h" +#include "uicomponents/UIComponents.h" namespace OHOS { -static const char *SETTING_TITLE = (char *)"设置"; -static const char *SETTING_BUTTON = (char *)"解除绑定"; +static const char *SETTING_TITLE = (char *)"设置"; +static const char *SETTING_BUTTON = (char *)"解除绑定"; -static const int16 SETTING_TITLE_FONT = 38; -static const int16 SETTING_TITLE_X = 0; -static const int16 SETTING_TITLE_Y = 35; -static const int16 SETTING_TITLE_WIDTH = 454; -static const int16 SETTING_TITLE_HEIGHT = 53; +static const int16 SETTING_TITLE_FONT = 30; +static const int16 SETTING_TITLE_X = (HORIZONTAL_RESOLUTION - 300) / 2; +static const int16 SETTING_TITLE_Y = 50; +static const int16 SETTING_TITLE_WIDTH = 300; +static const int16 SETTING_TITLE_HEIGHT = 35; -static const int16 SETTING_NAME_FONT = 38; -static const int16 SETTING_NAME_X = 0; -static const int16 SETTING_NAME_Y = 142; -static const int16 SETTING_NAME_WIDTH = 454; -static const int16 SETTING_NAME_HEIGHT = 53; +static const int16 SETTING_NAME_FONT = 30; +static const int16 SETTING_NAME_X = (HORIZONTAL_RESOLUTION - 360) / 2; +static const int16 SETTING_NAME_Y = 155; +static const int16 SETTING_NAME_WIDTH = 360; +static const int16 SETTING_NAME_HEIGHT = 35; static const int16 SETTING_ID_FONT = 30; -static const int16 SETTING_ID_X = 0; -static const int16 SETTING_ID_Y = 198; -static const int16 SETTING_ID_WIDTH = 454; -static const int16 SETTING_ID_HEIGHT = 109; +static const int16 SETTING_ID_X = (HORIZONTAL_RESOLUTION - 360) / 2; +static const int16 SETTING_ID_Y = 210; +static const int16 SETTING_ID_WIDTH = 360; +static const int16 SETTING_ID_HEIGHT = 35; -static const int16 SETTING_BUTTON_X = 121; -static const int16 SETTING_BUTTON_Y = 320; -static const int16 SETTING_BUTTON_WIDTH = 212; -static const int16 SETTING_BUTTON_HEIGHT = 73; -static const int16 SETTING_BUTTON_FONT = 38; +static const int16 SETTING_BUTTON_X = (HORIZONTAL_RESOLUTION - 280) / 2; +static const int16 SETTING_BUTTON_Y = 315; +static const int16 SETTING_BUTTON_WIDTH = 280; +static const int16 SETTING_BUTTON_HEIGHT = 90; +static const int16 SETTING_BUTTON_FONT = 30; AlipaySetting::AlipaySetting(AlipayPresenter *presenter) { @@ -111,13 +114,16 @@ bool AlipaySetting::AlipayInitLabel(void) } uint8_t str[ALIPAY_GET_NICKNAME_MAX_LENGTH] = {0}; presenter_->AlipayGetNickName(str); - labelName->SetText((const char *)str); - labelName->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SETTING_NAME_FONT); + uint8_t str_[ALIPAY_GET_NICKNAME_MAX_LENGTH] = {0}; + updata_char((char *)str_,(char *)str,ALIPAY_GET_NICKNAME_MAX_LENGTH); + labelName->SetText((const char *)str_); + labelName->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, SETTING_NAME_FONT); + labelName->SetPosition(SETTING_NAME_X, SETTING_NAME_Y, SETTING_NAME_WIDTH, SETTING_NAME_HEIGHT); - labelName->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + labelName->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); labelName->SetStyle(STYLE_TEXT_FONT, SETTING_NAME_FONT); labelName->SetAlign(TEXT_ALIGNMENT_CENTER); - labelName->SetRollSpeed(30); + labelName->SetRollSpeed(23); labelName->SetRollStartPos(SETTING_NAME_X); Add(labelName); @@ -132,11 +138,11 @@ bool AlipaySetting::AlipayInitLabel(void) labelId->SetText((const char *)strID); labelId->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SETTING_ID_FONT); labelId->SetPosition(SETTING_ID_X, SETTING_ID_Y, SETTING_ID_WIDTH, SETTING_ID_HEIGHT); - labelId->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + labelId->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); labelId->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); labelId->SetStyle(STYLE_TEXT_FONT, SETTING_ID_FONT); labelId->SetAlign(TEXT_ALIGNMENT_CENTER); - labelId->SetRollSpeed(30); + labelId->SetRollSpeed(23); labelId->SetRollStartPos(SETTING_ID_X); Add(labelId); diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransCode.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransCode.cpp index 2f0459546..b32347cde 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransCode.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransCode.cpp @@ -85,7 +85,7 @@ bool AlipayTransCode::AlipayInitLabel(void) labelPayCode->SetPosition(TRANSCODE_TITLE_X, TRANSCODE_TITLE_Y, TRANSCODE_TITLE_WIDTH, TRANSCODE_TITLE_HEIGHT); labelPayCode->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); labelPayCode->SetAlign(TEXT_ALIGNMENT_CENTER); - labelPayCode->SetRollSpeed(30); + labelPayCode->SetRollSpeed(23); labelPayCode->SetRollStartPos(TRANSCODE_TITLE_X); Add(labelPayCode); diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransListItemView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransListItemView.cpp index aa4b0f0c7..96fe00d11 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransListItemView.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransListItemView.cpp @@ -6,16 +6,25 @@ */ #include "wearable_log.h" -#include "AlipayTransListItemView.h" +// #include "AlipayTransListItemView.h" +#include "alipay/include/AlipayTrans/AlipayTransListItemView.h" namespace OHOS { -static constexpr int16_t ALIPAY_TRANS_LIST_ITEM_BUTTON_HEIGHT = 95; -static constexpr int16_t ALIPAY_TRANS_LIST_ITEM_LABEL_X = 53; +static constexpr int16_t ALIPAY_TRANS_LIST_ITEM_BUTTON_HEIGHT = 120; -static constexpr int16_t ALIPAY_TRANS_LIST_ITEM_LABEL_WIDTH = 347; -static constexpr int16_t ALIPAY_TRANS_LIST_ITEM_LABEL_HEIGHT = 90; +static constexpr int16 ALIPAY_LIST_BACK_X = 0; +static constexpr int16 ALIPAY_LIST_BACK_Y = 0; +static constexpr int16_t ALIPAY_LIST_BACK_WIDTH = 380; +static constexpr int16_t ALIPAY_LIST_BACK_HEIGHT = 100; -static constexpr int16_t ALIPAY_TRANS_LIST_ITEM_FONT_SIZE = 35; +static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_X = 47 + ALIPAY_LIST_BACK_X; +static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_Y = 32; +static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_WIDTH = 250; +static constexpr int16_t ALIPAY_LIST_ITEM_LABEL_HEIGHT = 35; +static constexpr int16_t ALIPAY_LIST_ITEM_FONT_SIZE = 30; + +static constexpr int16 NUMS_2 = 2; +static constexpr int16 NUMS_50 = 50; AlipayTransListItemView::AlipayTransListItemView() { @@ -26,12 +35,16 @@ AlipayTransListItemView::AlipayTransListItemView() SetTouchable(true); SetUpChild(); + Add(&back); Add(&sLabel); + Add(&sNextImage); } AlipayTransListItemView::~AlipayTransListItemView() { + Remove(&back); Remove(&sLabel); + Remove(&sNextImage); } void AlipayTransListItemView::SetItemInfo(const AlipayTransListItem &itemInfo) @@ -45,14 +58,24 @@ void AlipayTransListItemView::SetUpChild() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayTransListItemView::SetUpChild()"); - sLabel.SetPosition(ALIPAY_TRANS_LIST_ITEM_LABEL_X, 0); - sLabel.Resize(ALIPAY_TRANS_LIST_ITEM_LABEL_WIDTH, ALIPAY_TRANS_LIST_ITEM_LABEL_HEIGHT); - sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, ALIPAY_TRANS_LIST_ITEM_FONT_SIZE); + sLabel.SetPosition(ALIPAY_LIST_ITEM_LABEL_X, ALIPAY_LIST_ITEM_LABEL_Y); + sLabel.Resize(ALIPAY_LIST_ITEM_LABEL_WIDTH, ALIPAY_LIST_ITEM_LABEL_HEIGHT); + sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, ALIPAY_LIST_ITEM_FONT_SIZE); sLabel.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); - sLabel.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE); - sLabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full); - sLabel.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); - sLabel.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + sLabel.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + // sLabel.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE); + // sLabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full); + // sLabel.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + // sLabel.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + + + sNextImage.SetSrc(PNG_SETTING_NEXT_IMAGE); + sNextImage.SetPosition(ALIPAY_LIST_BACK_X + 326, 37); + + back.SetPosition(ALIPAY_LIST_BACK_X, ALIPAY_LIST_BACK_Y, ALIPAY_LIST_BACK_WIDTH, ALIPAY_LIST_BACK_HEIGHT); + back.SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + back.SetStyle(STYLE_BACKGROUND_OPA, 0xff); + back.SetStyle(STYLE_BORDER_RADIUS, 100); } uint8_t AlipayTransListItemView::GetAlipayTransListIndex() diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransListView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransListView.cpp index b77752179..b5307c5b7 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransListView.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransListView.cpp @@ -13,18 +13,18 @@ #include "common_def.h" namespace OHOS { -static constexpr int16_t ALIPAY_TRANS_LIST_POSITION_X = 33; -static constexpr int16_t ALIPAY_TRANS_LIST_POSITION_Y = 59; +static constexpr int16_t ALIPAY_TRANS_LIST_POSITION_X = 43; +static constexpr int16_t ALIPAY_TRANS_LIST_POSITION_Y = 90; static constexpr int16_t ALIPAY_TRANS_LIST_SCROLLBLANKSIZE = 50; static constexpr int16 MAX_SCR_DIS = 900; static constexpr int16 LIST_POS = 20; static constexpr int16 SNUM_2 = 2; static const int16 REFRESH_BUTTON_FONT = 38; -static const int16 REFRESH_BUTTON_X = 189; +static const int16 REFRESH_BUTTON_X = 133; static const int16 REFRESH_BUTTON_Y = 400; -static const int16 REFRESH_BUTTON_WIDTH = 76; -static const int16 REFRESH_BUTTON_HEIGHT = 53; +static const int16 REFRESH_BUTTON_WIDTH = 200; +static const int16 REFRESH_BUTTON_HEIGHT = 60; static const char *REFRESH_BUTTON = (char *)"刷新"; AlipayTransList::AlipayTransList(AlipayPresenter *presenter) @@ -67,14 +67,15 @@ bool AlipayTransList::AlipayInitList() return false; } contentList->SetPosition(ALIPAY_TRANS_LIST_POSITION_X, ALIPAY_TRANS_LIST_POSITION_Y); - contentList->Resize(HORIZONTAL_RESOLUTION - ALIPAY_TRANS_LIST_POSITION_X, VERTICAL_RESOLUTION - 115); - contentList->SetScrollBlankSize(ALIPAY_TRANS_LIST_SCROLLBLANKSIZE); + contentList->Resize(380, 300); + // contentList->SetScrollBlankSize(ALIPAY_TRANS_LIST_SCROLLBLANKSIZE); + contentList->SetReboundSize(15); contentList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position contentList->SetDraggable(true); contentList->SetThrowDrag(false); contentList->EnableAutoAlign(true); contentList->SetMaxScrollDistance(MAX_SCR_DIS); - contentList->SetYScrollBarVisible(true); + contentList->SetYScrollBarVisible(false); AddAlipayTransListItemToList(); Add(contentList); contentList->SetAdapter(listAdapter); @@ -108,7 +109,9 @@ bool AlipayTransList::AlipayInitButton() buttonRefresh->SetTextColor(Color::Blue()); buttonRefresh->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + buttonRefresh->SetStyle(STYLE_BACKGROUND_OPA, 0xff); buttonRefresh->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + buttonRefresh->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); buttonRefresh->SetOnClickListener(presenter_); Add(buttonRefresh); @@ -136,6 +139,19 @@ bool AlipayTransList::InitListView() return false; } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cardCount = %d", listLen); + if(listLen > 3) + { + contentList->SetHeight(300); + int16_t y = contentList->GetY() + contentList->GetHeight() + 10; + buttonRefresh->SetY(y); + } + else + { + contentList->SetHeight(listLen * 100); + buttonRefresh->SetY(REFRESH_BUTTON_Y); + } + return true; } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransTips.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransTips.cpp index 11706660a..79ffdd814 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransTips.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayTrans/AlipayTransTips.cpp @@ -10,14 +10,16 @@ #include "font/ui_font.h" #include #include "cmsis_os.h" -#include "AlipayTransTips.h" -#include "AlipayModel.h" +// #include "AlipayTransTips.h" +// #include "AlipayModel.h" +#include "alipay/include/AlipayTrans/AlipayTransTips.h" +#include "alipay/include/AlipayModel.h" namespace OHOS { -static const int16 TIPS_LABEL_X_FIRST = 38; -static const int16 TIPS_LABEL_Y_FIRST = 179; -static const int16 TIPS_LABEL_WIDTH_FIRST = 378; -static const int16 TIPS_LABEL_HEIGHT_FIRST = 84; +static const int16 TIPS_LABEL_X_FIRST = (HORIZONTAL_RESOLUTION - 360) / 2; +static const int16 TIPS_LABEL_Y_FIRST = 180; +static const int16 TIPS_LABEL_WIDTH_FIRST = 360; +static const int16 TIPS_LABEL_HEIGHT_FIRST = 70; static const int16 TIPS_LABEL_FONT_FIRST = 30; static const char *TIPS_LABEL_TEXT_1 = (char *)"未知错误_具体错误码,请联系设备厂商解决"; @@ -26,17 +28,17 @@ static const char *TIPS_LABEL_TEXT_3 = (char *)"存在安全风险,12小时内 static const char *TIPS_LABEL_TEXT_4 = (char *)"未知错误_具体错误码,请联系设备厂商解决"; static const char *TIPS_LABEL_TEXT_5 = (char *)"暂不支持,请切换到手机侧使用"; -static const int16 RES_IMAGE_X = 170; -static const int16 RES_IMAGE_Y = 55; +static const int16 RES_IMAGE_X = (HORIZONTAL_RESOLUTION - 112) / 2; +static const int16 RES_IMAGE_Y = 50; static const int16 RES_IMAGE_WIDTH = 112; static const int16 RES_IMAGE_HEIGHT = 112; static const char *RECOGNIZE_BUTTON = (char *)"确定"; -static const int16 RECOGNIZE_BUTTON_FONT = 38; -static const int16 RECOGNIZE_BUTTON_X = 120; -static const int16 RECOGNIZE_BUTTON_Y = 320; -static const int16 RECOGNIZE_BUTTON_WIDTH = 212; -static const int16 RECOGNIZE_BUTTON_HEIGHT = 73; +static const int16 RECOGNIZE_BUTTON_FONT = 30; +static const int16 RECOGNIZE_BUTTON_X = (HORIZONTAL_RESOLUTION - 280) / 2; +static const int16 RECOGNIZE_BUTTON_Y = 315; +static const int16 RECOGNIZE_BUTTON_WIDTH = 280; +static const int16 RECOGNIZE_BUTTON_HEIGHT = 90; typedef struct AlipayTransTipsInfo { const char *str; @@ -120,7 +122,7 @@ bool AlipayTransTips::AlipayInitImage(const char *imageSrc) // Set additional property alipayImage->SetAutoEnable(false); - alipayImage->SetResizeMode(UIImageView::FILL); + alipayImage->SetResizeMode(UIImageView::CENTER); Add(alipayImage); return true; diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayUnbind.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayUnbind.cpp index 2c081cae3..0107e26cf 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayUnbind.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayUnbind.cpp @@ -10,37 +10,39 @@ #include "font/ui_font.h" #include #include "cmsis_os.h" -#include "AlipayUnbind.h" +// #include "AlipayUnbind.h" +#include "alipay/include/AlipayUnbind.h" namespace OHOS { -static const int16 EXIT_LABEL_X_FIRST = 132; -static const int16 EXIT_LABEL_Y_FIRST = 57; -static const int16 EXIT_LABEL_WIDTH_FIRST = 189; -static const int16 EXIT_LABEL_HEIGHT_FIRST = 48; +static const int16 EXIT_LABEL_X_FIRST = 83; +static const int16 EXIT_LABEL_Y_FIRST = 50; +static const int16 EXIT_LABEL_WIDTH_FIRST = 300; +static const int16 EXIT_LABEL_HEIGHT_FIRST = 35; -static const int16 EXIT_LABEL_X_SEC = 44; -static const int16 EXIT_LABEL_Y_SECOND = 126; -static const int16 EXIT_LABEL_WIDTH_SEC = 365; -static const int16 EXIT_LABEL_HEIGHT_SEC = 128; +static const int16 EXIT_LABEL_X_SEC = 53; +static const int16 EXIT_LABEL_Y_SECOND = 222; -static const int16 EXIT_LABEL_FONT_FIRST = 38; +static const int16 EXIT_LABEL_WIDTH_SEC = 360; +static const int16 EXIT_LABEL_HEIGHT_SEC = 70; + +static const int16 EXIT_LABEL_FONT_FIRST = 30; static const int16 EXIT_LABEL_FONT_SEC = 30; static const char *UNBIND_LABEL_TEXT_FIRST = (char *)"解除绑定"; -static const char *UNBIND_LABEL_TEXT_SECOND = (char *)"解绑后将无法使用支付宝各项解锁功能,确认解绑?"; +static const char *UNBIND_LABEL_TEXT_SECOND = (char *)"解绑后将无法使用支付宝各项功能,确认解绑?"; -static const int16 EXIT_BUTTON_EXIT_X = 50; -static const int16 EXIT_BUTTON_EXIT_Y = 312; +static const int16 EXIT_BUTTON_EXIT_X = 58; +static const int16 EXIT_BUTTON_EXIT_Y = 320; -static const int16 EXIT_BUTTON_BIND_X = 233; -static const int16 EXIT_BUTTON_BIND_Y = 312; +static const int16 EXIT_BUTTON_BIND_X = 238; +static const int16 EXIT_BUTTON_BIND_Y = 320; static const char *UNBIND_BUTTON_TEXT_FIRST = (char *)"确认"; static const char *UNBIND_BUTTON_TEXT_SECOND = (char *)"取消"; -static const int16 EXIT_BUTTON_WIDTH = 169; -static const int16 EXIT_BUTTON_HEIGHT = 73; -static const int16 EXIT_BUTTON_FONT = 38; +static const int16 EXIT_BUTTON_WIDTH = 170; +static const int16 EXIT_BUTTON_HEIGHT = 90; +static const int16 EXIT_BUTTON_FONT = 26; AlipayUnbind::AlipayUnbind(AlipayPresenter *presenter) { @@ -64,6 +66,11 @@ AlipayUnbind::~AlipayUnbind() alipayButton[buttonNum] = nullptr; } } + if(AttentionImage) + { + delete AttentionImage; + AttentionImage =nullptr; + } } bool AlipayUnbind::AlipayInitLabel() @@ -80,7 +87,7 @@ bool AlipayUnbind::AlipayInitLabel() alipayLabel[ALIPAY_SET_ZERO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_FIRST); alipayLabel[ALIPAY_SET_ZERO]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_FIRST); alipayLabel[ALIPAY_SET_ZERO]->SetAlign(TEXT_ALIGNMENT_CENTER); - alipayLabel[ALIPAY_SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + alipayLabel[ALIPAY_SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); Add(alipayLabel[ALIPAY_SET_ZERO]); @@ -93,11 +100,25 @@ bool AlipayUnbind::AlipayInitLabel() EXIT_LABEL_HEIGHT_SEC); alipayLabel[ALIPAY_SET_ONE]->SetText(UNBIND_LABEL_TEXT_SECOND); alipayLabel[ALIPAY_SET_ONE]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_SEC); - alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_LINE_SPACE, 12); - alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_SEC); + //alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_LINE_SPACE, 12); + //alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_SEC); + alipayLabel[ALIPAY_SET_ONE]->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xFF)); + alipayLabel[ALIPAY_SET_ONE]->SetAlign(TEXT_ALIGNMENT_CENTER); alipayLabel[ALIPAY_SET_ONE]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); Add(alipayLabel[ALIPAY_SET_ONE]); + AttentionImage=new UIImageView(); + if (AttentionImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new FactoryResetImage fail!"); + return false; + } + AttentionImage->SetPosition(193, 110); + AttentionImage->SetSrc(PNG_ATTENTION_IMAGE); + Add(AttentionImage); + + + return true; } @@ -110,11 +131,12 @@ bool AlipayUnbind::InitSimilarButton(int16 num, int16 alipayX, int16 alipayY, co } int64_t backColor = 0; if (num == 0) { - backColor = 0xff4a83bf; - alipayButton[num]->SetTextColor(Color::GetColorFromRGBA(0x00, 0x00, 0x00, 0xff)); - alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + backColor = 0xff191919; + //alipayButton[num]->SetTextColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0x19)); + alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); } else if (num == 1) { - backColor = 0xff0b1928; + backColor = 0xff0176ff; + alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff0176ff); } alipayButton[num]->SetPosition(alipayX, alipayY, EXIT_BUTTON_WIDTH, EXIT_BUTTON_HEIGHT); alipayButton[num]->SetText(buttonStr); diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayUnbindFinish.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayUnbindFinish.cpp index 817d90bf3..9a3c629c4 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayUnbindFinish.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alipay/src/AlipayUnbindFinish.cpp @@ -8,8 +8,8 @@ #include "UiConfig.h" #include #include "cmsis_os.h" -#include "AlipayUnbindFinish.h" - +// #include "AlipayUnbindFinish.h" +#include "alipay/include/AlipayUnbindFinish.h" namespace OHOS { static AlipayUnbindFinish *g_alipayUnbindFinish = nullptr; @@ -19,23 +19,23 @@ static const char *UNBIND_FINISH_TEXT = static const char *UNBIND_FINISH_BUTTON = (char *)"确认"; -static const int16 UNBIND_FINISH_TITLE_FONT = 38; -static const int16 UNBIND_FINISH_TITLE_X = 0; -static const int16 UNBIND_FINISH_TITLE_Y = 35; -static const int16 UNBIND_FINISH_TITLE_WIDTH = 454; -static const int16 UNBIND_FINISH_TITLE_HEIGHT = 53; +static const int16 UNBIND_FINISH_TITLE_FONT = 30; +static const int16 UNBIND_FINISH_TITLE_X = (HORIZONTAL_RESOLUTION - 300) / 2; +static const int16 UNBIND_FINISH_TITLE_Y = 50; +static const int16 UNBIND_FINISH_TITLE_WIDTH = 300; +static const int16 UNBIND_FINISH_TITLE_HEIGHT = 35; static const int16 UNBIND_FINISH_TEXT_FONT = 30; -static const int16 UNBIND_FINISH_TEXT_X = 38; -static const int16 UNBIND_FINISH_TEXT_Y = 126; -static const int16 UNBIND_FINISH_TEXT_WIDTH = 380; -static const int16 UNBIND_FINISH_TEXT_HEIGHT = 166; +static const int16 UNBIND_FINISH_TEXT_X = (HORIZONTAL_RESOLUTION - 360) / 2 ; +static const int16 UNBIND_FINISH_TEXT_Y = 130; +static const int16 UNBIND_FINISH_TEXT_WIDTH = 360; +static const int16 UNBIND_FINISH_TEXT_HEIGHT = 140; -static const int16 UNBIND_FINISH_BUTTON_FONT = 38; -static const int16 UNBIND_FINISH_BUTTON_X = 120; -static const int16 UNBIND_FINISH_BUTTON_Y = 320; -static const int16 UNBIND_FINISH_BUTTON_WIDTH = 212; -static const int16 UNBIND_FINISH_BUTTON_HEIGHT = 73; +static const int16 UNBIND_FINISH_BUTTON_FONT = 30; +static const int16 UNBIND_FINISH_BUTTON_X = (HORIZONTAL_RESOLUTION - 280) / 2; +static const int16 UNBIND_FINISH_BUTTON_Y = 315; +static const int16 UNBIND_FINISH_BUTTON_WIDTH = 280; +static const int16 UNBIND_FINISH_BUTTON_HEIGHT = 90; AlipayUnbindFinish::AlipayUnbindFinish(AlipayPresenter *presenter) { @@ -79,20 +79,21 @@ bool AlipayUnbindFinish::AlipayInitLabel(void) Add(titleUnbind); - titleUnbind = new UILabel(); - if (titleUnbind == nullptr) { + textUnbind = new UILabel(); + if (textUnbind == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayUnbindFinish::AlipayInitLabel new label fail"); return false; } - titleUnbind->SetText(UNBIND_FINISH_TEXT); - titleUnbind->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UNBIND_FINISH_TEXT_FONT); - titleUnbind->SetPosition(UNBIND_FINISH_TEXT_X, UNBIND_FINISH_TEXT_Y, UNBIND_FINISH_TEXT_WIDTH, + textUnbind->SetText(UNBIND_FINISH_TEXT); + textUnbind->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UNBIND_FINISH_TEXT_FONT); + textUnbind->SetPosition(UNBIND_FINISH_TEXT_X, UNBIND_FINISH_TEXT_Y, UNBIND_FINISH_TEXT_WIDTH, UNBIND_FINISH_TEXT_HEIGHT); - titleUnbind->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); - titleUnbind->SetStyle(STYLE_TEXT_FONT, UNBIND_FINISH_TEXT_FONT); - titleUnbind->SetStyle(STYLE_LINE_SPACE, 6); - - Add(titleUnbind); + textUnbind->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + textUnbind->SetStyle(STYLE_TEXT_FONT, UNBIND_FINISH_TEXT_FONT); + // textUnbind->SetStyle(STYLE_LINE_SPACE, 6); + textUnbind->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xFF)); + textUnbind->SetAlign(TEXT_ALIGNMENT_CENTER); + Add(textUnbind); return true; } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/applist/src/ApplistPresenter.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/applist/src/ApplistPresenter.cpp index a6c141f17..2d450a201 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/applist/src/ApplistPresenter.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/applist/src/ApplistPresenter.cpp @@ -119,14 +119,10 @@ REGIST_SLICE(VIEW_APPLIST, ApplistView, ApplistPresenter); } WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d", viewId); if (viewId < VIEW_MAX_INTER_APP) { -#ifdef FD230_650 if (viewId == VIEW_SETTING && style == AppListStyle::APPLIST_STYLE) { - //TODO EnterSlice 需要适配新函数 需要增加新特效 是否增加? - NativeAbility::GetInstance().ChangeSlice(viewId, type, gSliceDefaultPriority, true); - } else - #endif - { - NativeAbility::GetInstance().EnterSlice(viewId, type); + NativeAbility::GetInstance().EnterSlice(viewId, type, gSliceDefaultPriority, true); + } else { + NativeAbility::GetInstance().EnterSlice(viewId, type, gSliceDefaultPriority, true); } return true; } else if (viewId == VIEW_EXTERN_APP) { diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/bluetooth/src/BluetoothModel.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/bluetooth/src/BluetoothModel.cpp index ccf14147d..e39d1e2d6 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/bluetooth/src/BluetoothModel.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/bluetooth/src/BluetoothModel.cpp @@ -55,7 +55,7 @@ //#include "hfp_hf_service.h" #include "uiservice/include/ui_service.h" #include "PhoneService.h" -#ifdef SUPPORT_AT_OHOSFWK +#ifdef SUPPORT_OHOSFWK #include "BluetoothWrapper.h" #endif #include "Bluetooyhpabpserver.h" diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/key/src/KeyInputListener.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/key/src/KeyInputListener.cpp index cef7b173d..5c0a1ea20 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/key/src/KeyInputListener.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/key/src/KeyInputListener.cpp @@ -35,6 +35,7 @@ void KeyInputListener::OnKeyPress(const KeyEvent &event) { pressFlag = 1; // 短按标志 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnKeyPress: pressFlag = %d", pressFlag); + #if 0 uint16_t currentViewId = NativeAbility::GetInstance().GetCurSliceId(); uint16 keyID = event.GetKeyId(); if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER)) @@ -44,6 +45,7 @@ void KeyInputListener::OnKeyPress(const KeyEvent &event) HandlePowerKeyPress(currentViewId); } } + #endif return; } @@ -61,6 +63,13 @@ void KeyInputListener::OnKeyRelease(const KeyEvent& event) uint16 keyID = event.GetKeyId(); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnKeyRelease: keyID = %d, currentViewId = %d, longPressFlag = %d, pressFlag = %d", keyID, currentViewId, longPressFlag, pressFlag); + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER)) + { + if (longPressFlag == 0 && pressFlag == 1) + { + HandlePowerKeyPress(currentViewId); + } + } // 重置标志 pressFlag = 0; longPressFlag = 0; diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/settings/src/SettingPresenter.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/settings/src/SettingPresenter.cpp index 90913ce37..2b41e696c 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/settings/src/SettingPresenter.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/settings/src/SettingPresenter.cpp @@ -124,7 +124,7 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDragEnd"); if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) { - NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + NativeAbility::GetInstance().Back(); X_DRAG_FLAG = false; } return true; @@ -133,12 +133,12 @@ namespace OHOS // 增加按键事件 bool SettingPresenter::OnKeyAct(UIView &view, const KeyEvent &event) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct"); uint16 keyID = event.GetKeyId(); uint16 keyState = event.GetState(); if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0) { - NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + NativeAbility::GetInstance().Back(); } return true; } diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/settings/src/SettingView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/settings/src/SettingView.cpp index e8fe9f7d2..f67b80df0 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/settings/src/SettingView.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/settings/src/SettingView.cpp @@ -204,7 +204,7 @@ namespace OHOS void SettingView:: RefreshSettingList(const SettingItem *item){ for (uint8_t i = 0; i < SettingModel::GetInstance().GetSettingListNum(); i++) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnStart itemInfo[i].itemName:%d", i); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnStart itemInfo[i].itemName:%d", i); AddSettingItemToList(item[i]); } contentList->SetAdapter(listAdapter); diff --git a/code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/lib/rv70_llvm/fwk/device_certificate/lib/libfwk_device_certificate_rv70_llvm.a b/code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/lib/rv70_llvm/fwk/device_certificate/lib/libfwk_device_certificate_rv70_llvm.a index f22a6bbd9a28bc425d48a1ff4d6468e2505359d8..3db4102b849a29630aa68a66265a8763b36e60b2 100644 GIT binary patch literal 41446 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 literal 38256 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
V0Bxp945EZ)wud{c~_Ut-9v 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 UrhWk?)iLe5n^2~}4z%C@2jTHQ*Z=?k diff --git a/code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/soc/se/hsec/hsc32i1/hs_private.c b/code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/soc/se/hsec/hsc32i1/hs_private.c index 19ac74f31..357aee406 100644 --- a/code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/soc/se/hsec/hsc32i1/hs_private.c +++ b/code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/soc/se/hsec/hsc32i1/hs_private.c @@ -1,222 +1,222 @@ -#include "IIC_Master_Driver.h" -#include "hs_private.h" - -unsigned char *g_HSI2CBuf; -unsigned char gHSEncTransSign; //ͨÐÅÊÇ·ñ¼ÓÃÜ£¬0 = Ã÷ÎÄͨÐÅ£¬1 = ¼ÓÃÜͨÐÅ -unsigned char g_DefTransKey[16] = {0x54,0x8E,0x8D,0x7A,0x26,0x35,0x85,0x11,0x25,0x2E,0xF8,0xD6,0xB7,0x17,0xA4,0xE4}; -unsigned char g_TransTmpKey[16]; - -//extern unsigned char * IIC_Master_Init(void); - -//extern void IIC_Master_Send(unsigned char byAddr, unsigned char *pData, unsigned short wLen); - -//extern void IIC_Master_Receive(unsigned char byAddr, unsigned char *pData, unsigned short wLen); - - - - -//CRCµ¥×Ö½Ú¼ÆË㡪¡ªÑ­»·×óÒÆ£¬ÏÈÒÆ×î¸ßbit -unsigned short LeftShift_CRC(unsigned char byValue, unsigned short *lpwCrc) -{ - byValue ^= (unsigned char)(*lpwCrc>>8); - byValue ^= (byValue>>4); - - *lpwCrc = (*lpwCrc<<8) ^ (unsigned short)(byValue); - *lpwCrc ^= (unsigned short)byValue<<12; - *lpwCrc ^= (unsigned short)byValue<<5; - - return (*lpwCrc); -} - -void ComputeCRC(unsigned char *Data, unsigned short Length, unsigned char *pbyOut) -{ - unsigned char chBlock; - unsigned short wCrc; - - wCrc = 0x0000; // ITU-V.41 - - while(Length--) - { - chBlock = *Data++; - LeftShift_CRC(chBlock, &wCrc); - } - - pbyOut[0] = (unsigned char) ((wCrc >> 8) & 0xFF); - pbyOut[1] = (unsigned char) (wCrc & 0xFF); - - return; -} - -void lmemset(unsigned char *pBuf, unsigned char byVal, unsigned short wLen) -{ - unsigned short i; - - for(i=0; i 0x1000) - { - return 4; - } - IIC_Master_Receive(0xC9, g_HSI2CBuf, 1); - } - - IIC_Master_Receive(0xC9, g_HSI2CBuf, wLen+6); - - wRspLen = g_HSI2CBuf[0]; - wRspLen <<= 8; - wRspLen |= g_HSI2CBuf[1]; - if(wRspLen != wLen+2) - { - return 2; - } - - ComputeCRC(g_HSI2CBuf+2, wLen+2, crc); - if((g_HSI2CBuf[wLen+4] != crc[0]) || (g_HSI2CBuf[wLen+5] != crc[1])) - { - return 1; - } - - if(gHSEncTransSign == 0x01) - { - for(i=0; i>8); + byValue ^= (byValue>>4); + + *lpwCrc = (*lpwCrc<<8) ^ (unsigned short)(byValue); + *lpwCrc ^= (unsigned short)byValue<<12; + *lpwCrc ^= (unsigned short)byValue<<5; + + return (*lpwCrc); +} + +void ComputeCRC(unsigned char *Data, unsigned short Length, unsigned char *pbyOut) +{ + unsigned char chBlock; + unsigned short wCrc; + + wCrc = 0x0000; // ITU-V.41 + + while(Length--) + { + chBlock = *Data++; + LeftShift_CRC(chBlock, &wCrc); + } + + pbyOut[0] = (unsigned char) ((wCrc >> 8) & 0xFF); + pbyOut[1] = (unsigned char) (wCrc & 0xFF); + + return; +} + +void lmemset(unsigned char *pBuf, unsigned char byVal, unsigned short wLen) +{ + unsigned short i; + + for(i=0; i 0x1000) + { + return 4; + } + IIC_Master_Receive(0xC9, g_HSI2CBuf, 1); + } + + IIC_Master_Receive(0xC9, g_HSI2CBuf, wLen+6); + + wRspLen = g_HSI2CBuf[0]; + wRspLen <<= 8; + wRspLen |= g_HSI2CBuf[1]; + if(wRspLen != wLen+2) + { + return 2; + } + + ComputeCRC(g_HSI2CBuf+2, wLen+2, crc); + if((g_HSI2CBuf[wLen+4] != crc[0]) || (g_HSI2CBuf[wLen+5] != crc[1])) + { + return 1; + } + + if(gHSEncTransSign == 0x01) + { + for(i=0; i 4096) - { - return CSI_ERROR; - } - if(data == 0) - { - return CSI_ERROR; - } - - //Ïȸù¾ÝfdÑ¡ÔñÎļþ - g_HSI2CBuf[0] = 0x00; - g_HSI2CBuf[1] = 0x07; - g_HSI2CBuf[2] = 0x00; - g_HSI2CBuf[3] = 0xA4; - g_HSI2CBuf[4] = 0x00; - g_HSI2CBuf[5] = 0x00; - g_HSI2CBuf[6] = 0x02; - g_HSI2CBuf[7] = (unsigned char)((unsigned int)fd / 256); - g_HSI2CBuf[8] = (unsigned int)fd % 256; - - if(gHSEncTransSign == 0x01) - { - for(i=0; i<7; ++i) - { - g_HSI2CBuf[2+i] ^= g_TransTmpKey[i]; - } - } - - ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9); - HS_IIC_Send_Cmd(g_HSI2CBuf, 11); - if(0 != HS_IIC_Recv_Resp(abyBuf, 2)) - { - return CSI_ERROR; - } - - if(data_len == 0) - { - return CSI_OK; - } - - dwBufOff = 0; - while(data_len > 1024) - { - g_HSI2CBuf[0] = 0x04; - g_HSI2CBuf[1] = 0x07; - g_HSI2CBuf[2] = 0x00; - g_HSI2CBuf[3] = 0xd6; - g_HSI2CBuf[4] = (unsigned char)(offset / 256); - g_HSI2CBuf[5] = (unsigned char)(offset % 256); - g_HSI2CBuf[6] = 0x00; - g_HSI2CBuf[7] = 0x04; - g_HSI2CBuf[8] = 0x00; - lmemcpy(g_HSI2CBuf+9, (unsigned char *)data + dwBufOff, 1024); - - if(gHSEncTransSign == 0x01) - { - for(i=0; i<1031; ++i) - { - g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16]; - } - } - - ComputeCRC(g_HSI2CBuf, 1033, g_HSI2CBuf+1033); - HS_IIC_Send_Cmd(g_HSI2CBuf, 1035); - if(0 != HS_IIC_Recv_Resp(abyBuf, 0)) - { - return CSI_ERROR; - } - offset += 1024; - data_len -= 1024; - dwBufOff += 1024; - } - - g_HSI2CBuf[0] = (unsigned char)((data_len+7) / 256); - g_HSI2CBuf[1] = (unsigned char)((data_len+7) % 256); - g_HSI2CBuf[2] = 0x80; - g_HSI2CBuf[3] = 0xd6; - g_HSI2CBuf[4] = (unsigned char)(offset / 256); - g_HSI2CBuf[5] = (unsigned char)(offset % 256); - g_HSI2CBuf[6] = 0x00; - g_HSI2CBuf[7] = (unsigned char)(data_len / 256); - g_HSI2CBuf[8] = (unsigned char)(data_len % 256); - lmemcpy(g_HSI2CBuf+9, (unsigned char *)data + dwBufOff, data_len); - - if(gHSEncTransSign == 0x01) - { - for(i=0; i= wFileLen) - { - return CSI_ERROR; - } - - if(offset + *data_len > wFileLen) - { - *data_len = wFileLen - offset; - } - - dwOff = 0; - dwTmpLen = *data_len; - while(dwTmpLen > 1024) - { - g_HSI2CBuf[0] = 0x00; - g_HSI2CBuf[1] = 0x07; - g_HSI2CBuf[2] = 0x00; - g_HSI2CBuf[3] = 0xB0; - g_HSI2CBuf[4] = (unsigned char)(offset / 256); - g_HSI2CBuf[5] = (unsigned char)(offset % 256); - g_HSI2CBuf[6] = 0x00; - g_HSI2CBuf[7] = 0x04; - g_HSI2CBuf[8] = 0x00; - if(gHSEncTransSign == 0x01) - { - for(i=0; i<7; ++i) - { - g_HSI2CBuf[2+i] ^= g_TransTmpKey[i]; - } - } - - ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9); - HS_IIC_Send_Cmd(g_HSI2CBuf, 11); - if(0 == HS_IIC_Recv_Resp((unsigned char *)buffer + dwOff, 1024)) - { - offset += 1024; - dwOff += 1024; - dwTmpLen -= 1024; - } - else - { - return CSI_ERROR; - } - } - - g_HSI2CBuf[0] = 0x00; - g_HSI2CBuf[1] = 0x07; - g_HSI2CBuf[2] = 0x00; - g_HSI2CBuf[3] = 0xB0; - g_HSI2CBuf[4] = (unsigned char)(offset / 256); - g_HSI2CBuf[5] = (unsigned char)(offset % 256); - g_HSI2CBuf[6] = 0x00; - g_HSI2CBuf[7] = (unsigned char)(dwTmpLen / 256); - g_HSI2CBuf[8] = (unsigned char)(dwTmpLen % 256); - if(gHSEncTransSign == 0x01) - { - for(i=0; i<7; ++i) - { - g_HSI2CBuf[2+i] ^= g_TransTmpKey[i]; - } - } - ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9); - HS_IIC_Send_Cmd(g_HSI2CBuf, 11); - if(0 != HS_IIC_Recv_Resp((unsigned char *)buffer + dwOff, dwTmpLen)) - { - return CSI_ERROR; - } - - return CSI_OK; -} - -/*¡ð ¹¦ÄÜÃèÊö - ¡ö ¹Ø±ÕÖ¸¶¨µÄ×ʲú¾ä±ú - ¡ð ½Ó¿Ú²ÎÊý - ¡ö fd - ´æ·Å×ʲú¾ä±ú - ¡ð ·µ»ØÖµ - ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/ -csi_error_t csi_close_asset(void* fd) -{ - unsigned char abySW[2]; - unsigned char i; - - - g_HSI2CBuf[0] = 0x00; - g_HSI2CBuf[1] = 0x07; - g_HSI2CBuf[2] = 0x80; - g_HSI2CBuf[3] = 0xA6; - g_HSI2CBuf[4] = 0x00; - g_HSI2CBuf[5] = 0x00; - g_HSI2CBuf[6] = 0x02; - g_HSI2CBuf[7] = (unsigned char)((unsigned int)fd / 256); - g_HSI2CBuf[8] = (unsigned int)fd % 256; - if(gHSEncTransSign == 0x01) - { - for(i=0; i<7; ++i) - { - g_HSI2CBuf[2+i] ^= g_TransTmpKey[i]; - } - } - - ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9); - HS_IIC_Send_Cmd(g_HSI2CBuf, 11); - if(0 != HS_IIC_Recv_Resp(abySW, 0)) - { - return CSI_ERROR; - } - - return CSI_OK; -} - -/*¡ð ¹¦ÄÜÃèÊö - ¡ö È·ÈÏÖ¸¶¨µÄ×ʲúÊÇ·ñ¿É·ÃÎÊ - ¡ð ½Ó¿Ú²ÎÊý - ¡ö access-flag - ×ʲú·ÃÎʽá¹û±êʶ: ×ʲú´æÔÚÉèÖÃΪ1£¬×ʲú²»´æÔÚÉèÖÃΪ0 - ¡ö asset_name - ×ʲúÃû×Ö - ¡ð ·µ»ØÖµ - ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/ -csi_error_t csi_access_asset(uint32_t *access_flag, char asset_name[36]) -{ - unsigned char i; - unsigned char abyBuf[10]; - unsigned short j; - - for(i=0; i<36; ++i) - { - if(asset_name[i] == 0) - { - break; - } - } - if(i == 0) - { - return CSI_ERROR; - } - - g_HSI2CBuf[0] = 0x00; - g_HSI2CBuf[1] = i+5; - g_HSI2CBuf[2] = 0x80; - g_HSI2CBuf[3] = 0xA4; - g_HSI2CBuf[4] = 0x04; - g_HSI2CBuf[5] = 0x00; - g_HSI2CBuf[6] = i; - lmemcpy(g_HSI2CBuf+7, (unsigned char *)asset_name, i); - if(gHSEncTransSign == 0x01) - { - for(j=0; j 1024) - { - return CSI_ERROR; - } - - g_HSI2CBuf[0] = (unsigned char)((req_len+5) / 256); - g_HSI2CBuf[1] = (unsigned char)((req_len+5) % 256); - g_HSI2CBuf[2] = 0x80; - g_HSI2CBuf[3] = 0xC2; - g_HSI2CBuf[4] = 0x00; - g_HSI2CBuf[5] = (unsigned char)(req_len / 256); - g_HSI2CBuf[6] = (unsigned char)(req_len % 256); - lmemcpy(g_HSI2CBuf+7, (unsigned char *)req, req_len); - if(gHSEncTransSign == 0x01) - { - for(i=0; i 0x1000) - { - return CSI_ERROR; - } - IIC_Master_Receive(0xC9, g_HSI2CBuf, 1); - } - - IIC_Master_Receive(0xC9, g_HSI2CBuf, 256); - wRspLen = g_HSI2CBuf[0]; - wRspLen <<= 8; - wRspLen |= g_HSI2CBuf[1]; - - ComputeCRC(g_HSI2CBuf+2, wRspLen, crc); - if((g_HSI2CBuf[wRspLen+2] != crc[0]) || (g_HSI2CBuf[wRspLen+3] != crc[1])) - { - return CSI_ERROR; - } - - if(gHSEncTransSign == 0x01) - { - for(i=0; i 4096) + { + return CSI_ERROR; + } + if(data == 0) + { + return CSI_ERROR; + } + + //先根据fd选择文件 + g_HSI2CBuf[0] = 0x00; + g_HSI2CBuf[1] = 0x07; + g_HSI2CBuf[2] = 0x00; + g_HSI2CBuf[3] = 0xA4; + g_HSI2CBuf[4] = 0x00; + g_HSI2CBuf[5] = 0x00; + g_HSI2CBuf[6] = 0x02; + g_HSI2CBuf[7] = (unsigned char)((unsigned int)fd / 256); + g_HSI2CBuf[8] = (unsigned int)fd % 256; + + if(gHSEncTransSign == 0x01) + { + for(i=0; i<7; ++i) + { + g_HSI2CBuf[2+i] ^= g_TransTmpKey[i]; + } + } + + ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9); + HS_IIC_Send_Cmd(g_HSI2CBuf, 11); + if(0 != HS_IIC_Recv_Resp(abyBuf, 2)) + { + return CSI_ERROR; + } + + if(data_len == 0) + { + return CSI_OK; + } + + dwBufOff = 0; + while(data_len > 1024) + { + g_HSI2CBuf[0] = 0x04; + g_HSI2CBuf[1] = 0x07; + g_HSI2CBuf[2] = 0x00; + g_HSI2CBuf[3] = 0xd6; + g_HSI2CBuf[4] = (unsigned char)(offset / 256); + g_HSI2CBuf[5] = (unsigned char)(offset % 256); + g_HSI2CBuf[6] = 0x00; + g_HSI2CBuf[7] = 0x04; + g_HSI2CBuf[8] = 0x00; + lmemcpy(g_HSI2CBuf+9, (unsigned char *)data + dwBufOff, 1024); + + if(gHSEncTransSign == 0x01) + { + for(i=0; i<1031; ++i) + { + g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16]; + } + } + + ComputeCRC(g_HSI2CBuf, 1033, g_HSI2CBuf+1033); + HS_IIC_Send_Cmd(g_HSI2CBuf, 1035); + if(0 != HS_IIC_Recv_Resp(abyBuf, 0)) + { + return CSI_ERROR; + } + offset += 1024; + data_len -= 1024; + dwBufOff += 1024; + } + + g_HSI2CBuf[0] = (unsigned char)((data_len+7) / 256); + g_HSI2CBuf[1] = (unsigned char)((data_len+7) % 256); + g_HSI2CBuf[2] = 0x80; + g_HSI2CBuf[3] = 0xd6; + g_HSI2CBuf[4] = (unsigned char)(offset / 256); + g_HSI2CBuf[5] = (unsigned char)(offset % 256); + g_HSI2CBuf[6] = 0x00; + g_HSI2CBuf[7] = (unsigned char)(data_len / 256); + g_HSI2CBuf[8] = (unsigned char)(data_len % 256); + lmemcpy(g_HSI2CBuf+9, (unsigned char *)data + dwBufOff, data_len); + + if(gHSEncTransSign == 0x01) + { + for(i=0; i= wFileLen) + { + return CSI_ERROR; + } + + if(offset + *data_len > wFileLen) + { + *data_len = wFileLen - offset; + } + + dwOff = 0; + dwTmpLen = *data_len; + while(dwTmpLen > 1024) + { + g_HSI2CBuf[0] = 0x00; + g_HSI2CBuf[1] = 0x07; + g_HSI2CBuf[2] = 0x00; + g_HSI2CBuf[3] = 0xB0; + g_HSI2CBuf[4] = (unsigned char)(offset / 256); + g_HSI2CBuf[5] = (unsigned char)(offset % 256); + g_HSI2CBuf[6] = 0x00; + g_HSI2CBuf[7] = 0x04; + g_HSI2CBuf[8] = 0x00; + if(gHSEncTransSign == 0x01) + { + for(i=0; i<7; ++i) + { + g_HSI2CBuf[2+i] ^= g_TransTmpKey[i]; + } + } + + ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9); + HS_IIC_Send_Cmd(g_HSI2CBuf, 11); + if(0 == HS_IIC_Recv_Resp((unsigned char *)buffer + dwOff, 1024)) + { + offset += 1024; + dwOff += 1024; + dwTmpLen -= 1024; + } + else + { + return CSI_ERROR; + } + } + + g_HSI2CBuf[0] = 0x00; + g_HSI2CBuf[1] = 0x07; + g_HSI2CBuf[2] = 0x00; + g_HSI2CBuf[3] = 0xB0; + g_HSI2CBuf[4] = (unsigned char)(offset / 256); + g_HSI2CBuf[5] = (unsigned char)(offset % 256); + g_HSI2CBuf[6] = 0x00; + g_HSI2CBuf[7] = (unsigned char)(dwTmpLen / 256); + g_HSI2CBuf[8] = (unsigned char)(dwTmpLen % 256); + if(gHSEncTransSign == 0x01) + { + for(i=0; i<7; ++i) + { + g_HSI2CBuf[2+i] ^= g_TransTmpKey[i]; + } + } + ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9); + HS_IIC_Send_Cmd(g_HSI2CBuf, 11); + if(0 != HS_IIC_Recv_Resp((unsigned char *)buffer + dwOff, dwTmpLen)) + { + return CSI_ERROR; + } + + return CSI_OK; +} + +/*○ 功能描述 + ■ 关闭指定的资产句柄 + ○ 接口参数 + ■ fd - 存放资产句柄 + ○ 返回值 + ■ 0表示成功,非0表示失败*/ +csi_error_t csi_close_asset(void* fd) +{ + unsigned char abySW[2]; + unsigned char i; + + + g_HSI2CBuf[0] = 0x00; + g_HSI2CBuf[1] = 0x07; + g_HSI2CBuf[2] = 0x80; + g_HSI2CBuf[3] = 0xA6; + g_HSI2CBuf[4] = 0x00; + g_HSI2CBuf[5] = 0x00; + g_HSI2CBuf[6] = 0x02; + g_HSI2CBuf[7] = (unsigned char)((unsigned int)fd / 256); + g_HSI2CBuf[8] = (unsigned int)fd % 256; + if(gHSEncTransSign == 0x01) + { + for(i=0; i<7; ++i) + { + g_HSI2CBuf[2+i] ^= g_TransTmpKey[i]; + } + } + + ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9); + HS_IIC_Send_Cmd(g_HSI2CBuf, 11); + if(0 != HS_IIC_Recv_Resp(abySW, 0)) + { + return CSI_ERROR; + } + + return CSI_OK; +} + +/*○ 功能描述 + ■ 确认指定的资产是否可访问 + ○ 接口参数 + ■ access-flag - 资产访问结果标识: 资产存在设置为1,资产不存在设置为0 + ■ asset_name - 资产名字 + ○ 返回值 + ■ 0表示成功,非0表示失败*/ +csi_error_t csi_access_asset(uint32_t *access_flag, char asset_name[36]) +{ + unsigned char i; + unsigned char abyBuf[10]; + unsigned short j; + + for(i=0; i<36; ++i) + { + if(asset_name[i] == 0) + { + break; + } + } + if(i == 0) + { + return CSI_ERROR; + } + + g_HSI2CBuf[0] = 0x00; + g_HSI2CBuf[1] = i+5; + g_HSI2CBuf[2] = 0x80; + g_HSI2CBuf[3] = 0xA4; + g_HSI2CBuf[4] = 0x04; + g_HSI2CBuf[5] = 0x00; + g_HSI2CBuf[6] = i; + lmemcpy(g_HSI2CBuf+7, (unsigned char *)asset_name, i); + if(gHSEncTransSign == 0x01) + { + for(j=0; j 1024) + { + return CSI_ERROR; + } + + g_HSI2CBuf[0] = (unsigned char)((req_len+5) / 256); + g_HSI2CBuf[1] = (unsigned char)((req_len+5) % 256); + g_HSI2CBuf[2] = 0x80; + g_HSI2CBuf[3] = 0xC2; + g_HSI2CBuf[4] = 0x00; + g_HSI2CBuf[5] = (unsigned char)(req_len / 256); + g_HSI2CBuf[6] = (unsigned char)(req_len % 256); + lmemcpy(g_HSI2CBuf+7, (unsigned char *)req, req_len); + if(gHSEncTransSign == 0x01) + { + for(i=0; i 0x1000) + { + return CSI_ERROR; + } + IIC_Master_Receive(0xC9, g_HSI2CBuf, 1); + } + + IIC_Master_Receive(0xC9, g_HSI2CBuf, 256); + wRspLen = g_HSI2CBuf[0]; + wRspLen <<= 8; + wRspLen |= g_HSI2CBuf[1]; + + ComputeCRC(g_HSI2CBuf+2, wRspLen, crc); + if((g_HSI2CBuf[wRspLen+2] != crc[0]) || (g_HSI2CBuf[wRspLen+3] != crc[1])) + { + return CSI_ERROR; + } + + if(gHSEncTransSign == 0x01) + { + for(i=0; i