/// @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) {
/// @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
}
}
}
FreeElement(elementName);
#endif
+ #ifdef FD230
+ // showsStackSliceId();
if (targetSliceId == VIEW_MAIN)
{
ClearSliceIdStack(); /*凡是回到主界面都要清空栈*/
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,
UILabel *alipayLabel { nullptr };\r
UIImageAnimatorView *alipayImageAni { nullptr };\r
ImageAnimatorInfo searchImageInfo[ALIPAY_BIND_SEARCH_IMAGE_NUM];\r
+ UIImageView *alipaylogImage { nullptr };\r
};\r
}\r
#endif
\ No newline at end of file
--- /dev/null
+#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
AlipayPresenter *presenter_;\r
UILabel *alipayLabel[ALIPAY_SET_TWO] { nullptr };\r
UILabelButton *alipayButton[ALIPAY_SET_TWO] { nullptr };\r
+ UIImageView *AttentionImage { nullptr };\r
};\r
}\r
#endif
\ No newline at end of file
/*
* 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
UIImageView sIcon;
UILabel sLabel;
UIImageView sNextImage;
+ UIImageView back;
AlipayListItem sItemInfo;
};
}
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
static AlipayMainView *GetInstance(void);\r
void OnStart() override;\r
void DropView(UIView &view);\r
+ void DropView(uint8_t type);\r
void SwitchView(UIView &view);\r
\r
void ChangeView(int16 hideView, int16 showView);\r
void AlipayMsgCallBack(uint32_t msgId, uint32_t actionRes);\r
\r
#define ALIPAY_BIND_STATUS_TIMER_LENGTH 2000\r
+#define ALIPAY_BIND_STATUS_DISCONNECT 3000\r
#define ALIPAY_GET_BIND_STR_MAX_LENGTH 256\r
#define ALIPAY_GET_PAY_STR_MAX_LENGTH 20\r
#define ALIPAY_GET_AID_STR_MAX_LENGTH 256\r
int32_t AlipayGetIdName(uint8_t *idStr);\r
int32_t AlipayGetAidCode(int8_t *aidStr);\r
void AlipayUnbind(void);\r
+ bool ble_disconnect_AlipayStartBind(void);\r
+ void AlipayStopdisconnecTimer(void);\r
bool AlipayStartBind(void);\r
bool AlipayFinishBind(void);\r
bool AlipayStartSwitchTimer(uint16_t time);\r
uint8_t* AlipayGetTransCode(void);\r
uint32_t AlipayGetTransCodeLen(void);\r
char* AlipayGetCardTitle(void);\r
+\r
+ void AlipayScreenControl(bool turnOnFlag);\r
+ void delete_all_files_in_folder(const char *folder_path);\r
private:\r
osTimerId_t bindTimerId = nullptr;\r
+ osTimerId_t ble_disconnect_bindTimerId = nullptr;\r
+\r
osTimerId_t switchTimerId = nullptr;\r
osTimerId_t transTimerId = nullptr;\r
int16 alipayInterLis;\r
#include "color.h"\r
#include "AlipayModel.h"\r
\r
+#include "KeyInputListener.h"\r
+#include "common/key_code.h"\r
+\r
namespace OHOS {\r
constexpr char *ALIPAY_LIST_PAY_BUTTON = (char *)"alipaylistpay";\r
constexpr char *ALIPAY_LIST_TRANS_BUTTON = (char *)"alipaylisttrans";\r
ALIPAY_PAY_VIEW,\r
\r
ALIPAY_PAY_BARCODE_VIEW,\r
- ALIPAY_TRANS_VIEW,\r
+ ALIPAY_TRANS_VIEW, //具体的乘车码支付页面\r
ALIPAY_SETTING_VIEW,\r
ALIPAY_HELP_VIEW,\r
ALIPAY_SETTING_UNBIND_VIEW,\r
\r
ALIPAY_SETTING_FINISH_VIEW,\r
ALIPAY_GET_BIND_FAILURE_VIEW,\r
- ALIPAY_TRANS_LIST_VIEW,\r
+ ALIPAY_TRANS_LIST_VIEW, //交通卡列表视图\r
ALIPAY_TRANS_ENABLE_VIEW,\r
ALIPAY_TRANS_TIPS_VIEW,\r
\r
- ALIPAY_TRANS_RES_VIEW,\r
- ALIPAY_GET_TRANS_LIST_VIEW,\r
- ALIPAY_TRANS_ANI_VIEW,\r
+ ALIPAY_TRANS_RES_VIEW, //提示网络异常视图\r
+ ALIPAY_GET_TRANS_LIST_VIEW, //获取乘车码列表视图\r
+ ALIPAY_TRANS_ANI_VIEW, //获取乘车码列表动画视图:加载动画\r
\r
ALIPAY_INTERFACES_MAX\r
} alipayInterfacesId;\r
\r
typedef enum {\r
- ALIPAY_TRANS_TIPS_UNKNOW = 0,\r
- ALIPAY_TRANS_TIPS_TO_MUCH,\r
- ALIPAY_TRANS_TIPS_SECURE,\r
- ALIPAY_TRANS_TIPS_LIST_UNKNOW,\r
- ALIPAY_TRANS_TIPS_NOT_SUPPORT,\r
+ ALIPAY_TRANS_TIPS_UNKNOW = 0, //未知错误_具体错误码,请联系设备厂商解决\r
+ ALIPAY_TRANS_TIPS_TO_MUCH, //开通的乘车码数量太多,清在手机支付宝-出行-管理中,管理后再用\r
+ ALIPAY_TRANS_TIPS_SECURE, //存在安全风险,12小时内不可用,请切换到手机侧使用\r
+ ALIPAY_TRANS_TIPS_LIST_UNKNOW, //未知错误_具体错误码,请联系设备厂商解决\r
+ ALIPAY_TRANS_TIPS_NOT_SUPPORT, //暂不支持,请切换到手机侧使用\r
} alipayTransTipsId;\r
\r
typedef enum {\r
} alipayTransResId;\r
\r
typedef enum {\r
- ALIPAY_TRANS_GET_LIST_FIRST = 0,\r
+ ALIPAY_TRANS_GET_LIST_FIRST = 0, //首次获取交通卡交易列表索引\r
ALIPAY_TRANS_GET_LIST_CLICK_DETAIL,\r
ALIPAY_TRANS_GET_LIST_CODE_DETAIL,\r
} alipayTransGetListId;\r
\r
class AlipayMainView;\r
-class AlipayPresenter : public Presenter<AlipayMainView>,\r
+class AlipayPresenter : public Presenter<AlipayMainView>,public RootView::OnKeyActListener,\r
public UIView::OnClickListener,\r
public UIView::OnDragListener {\r
public:\r
ColorType CyanColor(void);\r
bool OnClick(UIView &view, const ClickEvent &event) override;\r
bool OnDrag(UIView &view, const DragEvent &event) override;\r
+ bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
bool ClickFuncId(UIView &view);\r
int32_t AlipayGetPayCode(uint8_t *payStr);\r
int32_t AlipayGetNickName(uint8_t *nickName);\r
bool AlipayInitButton();\r
bool AlipayInitLabel(void);\r
AlipayPresenter *presenter_;\r
- UILabel *labelTitle { nullptr };\r
- UILabel *labelName { nullptr };\r
- UILabel *labelId { nullptr };\r
- UILabelButton *buttonSetting { nullptr };\r
+ UILabel *labelTitle { nullptr }; // 标题:设置\r
+ UILabel *labelName { nullptr }; // 用户名称\r
+ UILabel *labelId { nullptr }; \r
+ UILabelButton *buttonSetting { nullptr }; // 解除绑定按钮\r
};\r
}\r
#endif
\ No newline at end of file
private:
UILabel sLabel;
UIImageView sNextImage;
+ UIView back;
AlipayTransListItem sItemInfo;
};
}
AlipayPresenter *presenter_;\r
UILabel *alipayLabel[ALIPAY_SET_TWO] { nullptr };\r
UILabelButton *alipayButton[ALIPAY_SET_TWO] { nullptr };\r
+ UIImageView *AttentionImage { nullptr };\r
};\r
}\r
#endif
\ No newline at end of file
#include "graphic_service.h"\r
\r
namespace OHOS {\r
-static const int16 ANILABEL_X_FIRST = 151;\r
-static const int16 ANILABEL_Y_FIRST = 257;\r
-static const int16 ANILABEL_WIDTH_FIRST = 151;\r
-static const int16 ANILABEL_HEIGHT_FIRST = 48;\r
+static const int16 ANILABEL_X_FIRST = 133;\r
+static const int16 ANILABEL_Y_FIRST = 328;\r
+static const int16 ANILABEL_WIDTH_FIRST = 200;\r
+static const int16 ANILABEL_HEIGHT_FIRST = 60;\r
static const char *ANILABEL_TEXT_FIRST = (char *)"正在绑定";\r
-static const int16 ANILABEL_FONT_FIRST = 38;\r
+static const int16 ANILABEL_FONT_FIRST = 30;\r
+\r
+static constexpr const char *PNG_1_PATH = "user/res/alipay/1.bin";\r
+static constexpr const char *PNG_2_PATH = "user/res/alipay/2.bin";\r
+static constexpr const char *PNG_3_PATH = "user/res/alipay/3.bin";\r
+static constexpr const char *PNG_4_PATH = "user/res/alipay/4.bin";\r
+static constexpr const char *PNG_5_PATH = "user/res/alipay/5.bin";\r
+static constexpr const char *PNG_6_PATH = "user/res/alipay/6.bin";\r
+static constexpr const char *PNG_7_PATH = "user/res/alipay/7.bin";\r
+static constexpr const char *PNG_8_PATH = "user/res/alipay/8.bin";\r
+\r
+static constexpr const char *PNG_LOG_PATH = "user/res/alipay/alipaylog.bin";\r
\r
const char *searchImagePath[ALIPAY_BIND_SEARCH_IMAGE_NUM] = {\r
- PNG_A019_080_IMAGE_PATH,\r
- PNG_A019_081_IMAGE_PATH,\r
- PNG_A019_082_IMAGE_PATH,\r
- PNG_A019_083_IMAGE_PATH,\r
- PNG_A019_084_IMAGE_PATH,\r
- PNG_A019_085_IMAGE_PATH,\r
- PNG_A019_086_IMAGE_PATH,\r
- PNG_A019_087_IMAGE_PATH,\r
+ PNG_1_PATH,\r
+ PNG_2_PATH,\r
+ PNG_3_PATH,\r
+ PNG_4_PATH,\r
+ PNG_5_PATH,\r
+ PNG_6_PATH,\r
+ PNG_7_PATH,\r
+ PNG_8_PATH,\r
};\r
\r
-static const int16 ALIPAY_BIND_IMAGE_X = 162;\r
-static const int16 ALIPAY_BIND_IMAGE_Y = 112;\r
-static const int16 ALIPAY_BIND_IMAGE_WIDTH = 128;\r
-static const int16 ALIPAY_BIND_IMAGE_HEIGHT = 128;\r
+static const int16 ALIPAY_BIND_IMAGE_X = 149;\r
+static const int16 ALIPAY_BIND_IMAGE_Y = 358;\r
+static const int16 ALIPAY_BIND_IMAGE_WIDTH = 168;\r
+static const int16 ALIPAY_BIND_IMAGE_HEIGHT = 40;\r
\r
-static const int16 ALIPAY_BIND_IMAGE_DELAY = 200;\r
+static const int16 ALIPAY_BIND_IMAGE_DELAY = 100;\r
\r
-static const int16 RES_IMAGE_X = 162;\r
-static const int16 RES_IMAGE_Y = 112;\r
-static const int16 RES_IMAGE_WIDTH = 128;\r
-static const int16 RES_IMAGE_HEIGHT = 128;\r
+static const int16 RES_IMAGE_X = 149;\r
+static const int16 RES_IMAGE_Y = 358;\r
+static const int16 RES_IMAGE_WIDTH = 168;\r
+static const int16 RES_IMAGE_HEIGHT = 40;\r
\r
AlipayBindAni::AlipayBindAni(AlipayPresenter *presenter)\r
{\r
delete alipayImageAni;\r
alipayImageAni = nullptr;\r
}\r
+ if (alipaylogImage != nullptr) {\r
+ delete alipaylogImage;\r
+ alipaylogImage = nullptr;\r
+ }\r
+\r
+ \r
}\r
\r
bool AlipayBindAni::AlipayInitLabel(void)\r
alipayLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, ANILABEL_FONT_FIRST);\r
alipayLabel->SetStyle(STYLE_TEXT_FONT, ANILABEL_FONT_FIRST);\r
alipayLabel->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- alipayLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ alipayLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
Add(alipayLabel);\r
return true;\r
}\r
searchImageInfo[i].height = ALIPAY_BIND_IMAGE_HEIGHT;\r
}\r
\r
- alipayImageAni->SetPosition(RES_IMAGE_X, RES_IMAGE_Y, RES_IMAGE_WIDTH, RES_IMAGE_HEIGHT);\r
+ alipayImageAni->SetPosition(ALIPAY_BIND_IMAGE_X, ALIPAY_BIND_IMAGE_Y, ALIPAY_BIND_IMAGE_WIDTH, ALIPAY_BIND_IMAGE_HEIGHT);\r
alipayImageAni->SetImageAnimatorSrc(searchImageInfo, ALIPAY_BIND_SEARCH_IMAGE_NUM, ALIPAY_BIND_IMAGE_DELAY);\r
alipayImageAni->SetRepeat(true);\r
alipayImageAni->SetAutoEnable(false);\r
- alipayImageAni->SetResizeMode(UIImageView::FILL);\r
+ //alipayImageAni->SetResizeMode(UIImageView::FILL);\r
Add(alipayImageAni);\r
-\r
alipayImageAni->Start();\r
+\r
+ alipaylogImage = new UIImageView();\r
+ if (alipaylogImage == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindRes::AlipayInitImage new alipayImage fail");\r
+ return false;\r
+ }\r
+ alipaylogImage->SetPosition(143, 130, 180, 180);\r
+ alipaylogImage->SetSrc(PNG_LOG_PATH);\r
+ Add(alipaylogImage);\r
+\r
return true;\r
}\r
\r
#include "AlipayModel.h"\r
\r
namespace OHOS {\r
-static const int16 EXIT_LABEL_X_FIRST = 151;\r
-static const int16 EXIT_LABEL_Y_FIRST = 257;\r
-static const int16 EXIT_LABEL_WIDTH_FIRST = 151;\r
-static const int16 EXIT_LABEL_HEIGHT_FIRST = 48;\r
+static const int16 EXIT_LABEL_X_FIRST = 83;\r
+static const int16 EXIT_LABEL_Y_FIRST = 350;\r
+\r
+static const int16 EXIT_LABEL_WIDTH_FIRST = 300;\r
+static const int16 EXIT_LABEL_HEIGHT_FIRST = 50;\r
static const char *EXIT_LABEL_TEXT_FIRST = (char *)"绑定失败";\r
-static const int16 EXIT_LABEL_FONT_FIRST = 38;\r
+static const int16 EXIT_LABEL_FONT_FIRST = 35;\r
\r
static const char *EXIT_LABEL_TEXT_SEC = (char *)"绑定成功";\r
\r
-static const int16 RES_IMAGE_X = 161;\r
-static const int16 RES_IMAGE_Y = 110;\r
-static const int16 RES_IMAGE_WIDTH = 135;\r
-static const int16 RES_IMAGE_HEIGHT = 135;\r
+static const int16 RES_IMAGE_X = 153;\r
+static const int16 RES_IMAGE_Y = 140;\r
+static const int16 RES_IMAGE_WIDTH = 160;\r
+static const int16 RES_IMAGE_HEIGHT = 160;\r
\r
AlipayBindRes::AlipayBindRes(AlipayPresenter *presenter)\r
{\r
// alipayLabel->Set\r
if (presenter_->AlipayGetBindFlag()) {\r
alipayLabel->SetText(EXIT_LABEL_TEXT_SEC);\r
- alipayImage->SetSrc(PNG_ALIPAY_BIND_SUCCESS);\r
+ alipayImage->SetSrc(PNG_ALIPAY_YSE_ICON);\r
} else {\r
alipayLabel->SetText(EXIT_LABEL_TEXT_FIRST);\r
- alipayImage->SetSrc(PNG_ALIPAY_BIND_FAILURE);\r
+ alipayImage->SetSrc(PNG_ALIPAY_NO_ICON);\r
}\r
alipayLabel->Invalidate();\r
alipayImage->Invalidate();\r
alipayLabel->SetPosition(EXIT_LABEL_X_FIRST, EXIT_LABEL_Y_FIRST, EXIT_LABEL_WIDTH_FIRST, EXIT_LABEL_HEIGHT_FIRST);\r
alipayLabel->SetText(resStr);\r
alipayLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_FIRST);\r
- alipayLabel->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_FIRST);\r
- alipayLabel->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- alipayLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ //alipayLabel->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_FIRST);\r
+ alipayLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ alipayLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
\r
Add(alipayLabel);\r
\r
\r
// Set additional property\r
alipayImage->SetAutoEnable(false);\r
- alipayImage->SetResizeMode(UIImageView::FILL);\r
+ //alipayImage->SetResizeMode(UIImageView::FILL);\r
\r
Add(alipayImage);\r
return true;\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindRes::InitView AlipayInitLabel() false");\r
return false;\r
}\r
- if (!AlipayInitImage(PNG_ALIPAY_BIND_SUCCESS)) {\r
+ if (!AlipayInitImage(PNG_ALIPAY_YSE_ICON)) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindRes::InitView AlipayInitImage() false");\r
return false;\r
}\r
#include "AlipayExitBind.h"\r
\r
namespace OHOS {\r
-static const int16 EXIT_LABEL_X_FIRST = 132;\r
-static const int16 EXIT_LABEL_X_SEC = 0;\r
-static const int16 EXIT_LABEL_WIDTH_FIRST = 189;\r
-static const int16 EXIT_LABEL_HEIGHT_FIRST = 48;\r
-\r
-static const int16 EXIT_LABEL_Y_FIRST = 57;\r
-static const int16 EXIT_LABEL_Y_SECOND = 154;\r
-static const int16 EXIT_LABEL_WIDTH_SEC = 454;\r
-static const int16 EXIT_LABEL_HEIGHT_SEC = 83;\r
-static const int16 EXIT_LABEL_FONT_FIRST = 38;\r
+\r
+static const int16 EXIT_LABEL_WIDTH_FIRST = 300;\r
+static const int16 EXIT_LABEL_WIDTH_SEC = 360;\r
+\r
+static const int16 EXIT_LABEL_HEIGHT_FIRST = 35;\r
+static const int16 EXIT_LABEL_HEIGHT_SEC = 70;\r
+\r
+static const int16 EXIT_LABEL_X_FIRST = (HORIZONTAL_RESOLUTION - EXIT_LABEL_WIDTH_FIRST) / 2;\r
+static const int16 EXIT_LABEL_X_SEC = (HORIZONTAL_RESOLUTION - EXIT_LABEL_WIDTH_SEC) / 2;\r
+\r
+static const int16 EXIT_LABEL_Y_FIRST = 50;\r
+static const int16 EXIT_LABEL_Y_SECOND = 222;\r
+\r
+static const int16 EXIT_LABEL_FONT_FIRST = 30;\r
static const int16 EXIT_LABEL_FONT_SEC = 30;\r
\r
static const char *EXIT_LABEL_TEXT_FIRST = (char *)"未完成绑定";\r
-static const char *EXIT_LABEL_TEXT_SECOND = (char *)"当前未完成绑定,退出在进来\n需要重新扫码绑定";\r
+static const char *EXIT_LABEL_TEXT_SECOND = (char *)"当前未完成绑定,退出在进来需要重新扫码绑定";\r
\r
-static const int16 EXIT_BUTTON_EXIT_X = 50;\r
-static const int16 EXIT_BUTTON_EXIT_Y = 312;\r
+static const int16 EXIT_BUTTON_EXIT_X = 58;\r
+static const int16 EXIT_BUTTON_EXIT_Y = 320;\r
\r
-static const int16 EXIT_BUTTON_BIND_X = 233;\r
-static const int16 EXIT_BUTTON_BIND_Y = 312;\r
+static const int16 EXIT_BUTTON_BIND_X = 238;\r
+static const int16 EXIT_BUTTON_BIND_Y = 320;\r
\r
static const char *EXIT_BUTTON_TEXT_FIRST = (char *)"退出";\r
static const char *EXIT_BUTTON_TEXT_SECOND = (char *)"去绑定";\r
\r
-static const int16 EXIT_BUTTON_WIDTH = 169;\r
-static const int16 EXIT_BUTTON_HEIGHT = 73;\r
-static const int16 EXIT_BUTTON_FONT = 38;\r
+static const int16 EXIT_BUTTON_WIDTH = 170;\r
+static const int16 EXIT_BUTTON_HEIGHT = 90;\r
+static const int16 EXIT_BUTTON_FONT = 26;\r
\r
AlipayExitBind::AlipayExitBind(AlipayPresenter *presenter)\r
{\r
alipayButton[buttonNum] = nullptr;\r
}\r
}\r
+ if(AttentionImage)\r
+ {\r
+ delete AttentionImage;\r
+ AttentionImage =nullptr;\r
+ }\r
}\r
\r
bool AlipayExitBind::AlipayInitLabel()\r
alipayLabel[ALIPAY_SET_ZERO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_FIRST);\r
alipayLabel[ALIPAY_SET_ZERO]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_FIRST);\r
alipayLabel[ALIPAY_SET_ZERO]->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- alipayLabel[ALIPAY_SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ alipayLabel[ALIPAY_SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
\r
Add(alipayLabel[ALIPAY_SET_ZERO]);\r
\r
EXIT_LABEL_HEIGHT_SEC);\r
alipayLabel[ALIPAY_SET_ONE]->SetText(EXIT_LABEL_TEXT_SECOND);\r
alipayLabel[ALIPAY_SET_ONE]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_SEC);\r
- alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_LINE_SPACE, 6);\r
- alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_SEC);\r
+ //alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_LINE_SPACE, 12);\r
+ //alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_SEC);\r
+ alipayLabel[ALIPAY_SET_ONE]->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xFF));\r
alipayLabel[ALIPAY_SET_ONE]->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- alipayLabel[ALIPAY_SET_ONE]->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
+ alipayLabel[ALIPAY_SET_ONE]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
Add(alipayLabel[ALIPAY_SET_ONE]);\r
\r
+ AttentionImage=new UIImageView();\r
+ if (AttentionImage == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new FactoryResetImage fail!");\r
+ return false;\r
+ }\r
+ AttentionImage->SetPosition(193, 110);\r
+ AttentionImage->SetSrc(PNG_ATTENTION_IMAGE);\r
+ Add(AttentionImage);\r
+\r
return true;\r
}\r
\r
int64_t backColor = 0;\r
\r
if (num == 0) {\r
- backColor = 0xff4a83bf;\r
- alipayButton[num]->SetTextColor(Color::GetColorFromRGBA(0x00, 0x00, 0x00, 0xff));\r
- alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ backColor = 0xff191919;\r
+ //alipayButton[num]->SetTextColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0x19));\r
+ alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
} else if (num == 1) {\r
- backColor = 0xff0b1928;\r
+ backColor = 0xff0176ff;\r
+ alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff0176ff);\r
}\r
alipayButton[num]->SetPosition(alipayX, alipayY, EXIT_BUTTON_WIDTH, EXIT_BUTTON_HEIGHT);\r
alipayButton[num]->SetText(buttonStr);\r
#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;
SetTouchable(true);
SetUpChild();
+ Add(&back);
Add(&sIcon);
Add(&sLabel);
Add(&sNextImage);
AlipayListItemView::~AlipayListItemView()
{
+ Remove(&back);
Remove(&sIcon);
Remove(&sLabel);
Remove(&sNextImage);
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);
}
}
*/
#include <string>
-#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 {
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);
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()
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]);
}
}
#include "AlipayMainView.h"\r
#include "UiConfig.h"\r
#include "alipay_feature.h"\r
+#include "custom_utils.h"\r
+#include "AlipayC.h"\r
+\r
+bool is_Alipay_bind(void)\r
+{\r
+ if( OHOS:: AlipayMainView::GetInstance())\r
+ {\r
+ int16 theView = OHOS::AlipayMainView::GetInstance()->GetWhichInter();\r
+ if(theView==OHOS::ALIPAY_BIND_VIEW)\r
+ {\r
+ return true;\r
+ }\r
+ else\r
+ {\r
+ return false;\r
+ }\r
+ }\r
+ return false;\r
+}\r
\r
namespace OHOS {\r
#define ALIPAY_BIND_SUCCESS_RES_TIMER_LENGTH 3000\r
\r
void AlipayMainView::OnStart()\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::OnStart");\r
+ if(Alipay_is_init()==false)\r
+ return;\r
+ // 增加按键监听\r
+ RootView::GetInstance()->SetOnKeyActListener(presenter_);\r
+\r
alipayInterfacesId startView;\r
bool bindFlag = AlipayModel::GetInstance()->AlipayGetBindstate();\r
if (!bindFlag) {\r
alipayBind->InitView();\r
startView = ALIPAY_BIND_VIEW;\r
container[startView] = alipayBind;\r
+ //如果是绑定界面则打开广播\r
+ start_alipay_ble_service();\r
AlipayModel::GetInstance()->AlipayStartBind();\r
} else {\r
alipayList = new AlipayList(presenter_);\r
{\r
return interListen;\r
}\r
+//当前定义为给按键专用\r
+void AlipayMainView::DropView(uint8_t type)\r
+{\r
\r
+ if(alipayWhichInter==ALIPAY_BIND_ANI_VIEW)\r
+ {\r
+ ChangeView(ALIPAY_BIND_ANI_VIEW, ALIPAY_BIND_EXIT_VIEW);\r
+ }\r
+ else\r
+ {\r
+ AlipayModel::GetInstance()->AlipayStopSwitchTimer();\r
+ AlipayModel::GetInstance()->AlipayStopBindTimer();\r
+ AlipayModel::GetInstance()->AlipayStopdisconnecTimer();\r
+ NativeAbility::GetInstance().Back();\r
+ }\r
+}\r
void AlipayMainView::DropView(UIView &view)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView");\r
AlipayModel::GetInstance()->AlipayFinishBind();\r
}\r
AlipayModel::GetInstance()->AlipayStopSwitchTimer();\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
-\r
+ AlipayModel::GetInstance()->AlipayStopBindTimer();\r
+ AlipayModel::GetInstance()->AlipayStopdisconnecTimer();\r
+ NativeAbility::GetInstance().Back();\r
} else if (&view == container[ALIPAY_TRANS_LIST_VIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_LIST_VIEW]");\r
ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_LIST_VIEW);\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::ChangeBindView");\r
AlipayModel::GetInstance()->AlipayStartBind();\r
+\r
+ /**启动alipay蓝牙服务*/\r
+ //需要重新打开广播\r
+ start_alipay_ble_service();\r
+\r
if (container[thisView] == nullptr) {\r
alipayBind = new AlipayBind(presenter_);\r
if (alipayBind == nullptr) {\r
}\r
}\r
if (hideView == ALIPAY_TRANS_TIPS_VIEW) {\r
+\r
+ if(AlipayModel::GetInstance()->AlipayGetSwitchIndex() == ALIPAY_TRANS_TIPS_LIST_UNKNOW)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DestroyTempView ALIPAY_TRANS_TIPS_UNKNOW");\r
+ AlipayModel::GetInstance()->delete_all_files_in_folder("/user/alipay/");\r
+ }\r
delete alipayTransTips;\r
alipayTransTips = nullptr;\r
} else if (hideView == ALIPAY_TRANS_RES_VIEW) {\r
container[hideView]->SetVisible(false);\r
container[showView]->SetVisible(true);\r
\r
+ if(hideView==ALIPAY_BIND_VIEW)\r
+ {\r
+ stop_alipay_ble_service();\r
+ }\r
+\r
AlipayModel::GetInstance()->SetAlipayInterLis(showView);\r
\r
Draw();\r
#include "AlipayMainView.h"\r
#include "graphic_service.h"\r
\r
+#include "power_display_service.h"\r
+#include "custom_utils.h"\r
+#include "bleService.h"\r
+#include "ConfigModel.h"\r
namespace OHOS {\r
AlipayModel::AlipayModel() : alipayApi(alipay_svr_get_api())\r
{\r
{\r
return alipayInterLis;\r
}\r
+static uint8_t disconnectfalg=0;\r
\r
void AlipayBindCallBackProc(void *argument)\r
{\r
} else if (ALIPAY_INTER_STATUS_BINDING_OK == status && reFlag == 1) {\r
AlipayModel::GetInstance()->AlipaySetRefreshFlag(0);\r
AlipayModel::GetInstance()->AlipayFinishBind();\r
+ AlipayModel::GetInstance()->AlipayStopBindTimer();\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_OK");\r
AlipayModel::GetInstance()->AlipaySetBindFlag(true);\r
AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW);\r
AlipayModel::GetInstance()->AlipaySetRefreshFlag(0);\r
AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW);\r
}\r
+ else if (ALIPAY_INTER_STATUS_START_BINDING == status && reFlag == 1) {\r
+ if(get_Alipay_ble_connect()==false)\r
+ {\r
+ disconnectfalg++;\r
+ if(disconnectfalg>=2)\r
+ {\r
+ \r
+ AlipayModel::GetInstance()->AlipaySetBindFlag(false);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_FAIL");\r
+ AlipayModel::GetInstance()->AlipaySetRefreshFlag(0);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+ "ble 断开连接 ");\r
+ AlipayModel::GetInstance()->AlipayStopBindTimer();\r
+ AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW);\r
+ }\r
+\r
+ //AlipayModel::GetInstance()->ble_disconnect_AlipayStartBind();\r
+ }\r
+ \r
+ }\r
}\r
+void AlipayBindCallBackProcdisconnect(void *argument)\r
+{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProcdisconnect in.");\r
+ const alipay_svr_api_t *alipay_api = alipay_svr_get_api();\r
+ int32_t status = 0;\r
+ int32_t ret = alipay_api->get_bind_status(&status);\r
+ if (AlipayMainView::GetInstance() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::GetInstance is null, do nothing.");\r
+ return;\r
+ }\r
+\r
+ int16_t currentView = AlipayModel::GetInstance()->GetAlipayInterLis();\r
+ uint32_t reFlag = AlipayModel::GetInstance()->AlipayGetRefreshFlag();\r
+\r
+ if (ALIPAY_INTER_STATUS_START_BINDING == status && reFlag == 1 ) {\r
+ if(get_Alipay_ble_connect()==false)\r
+ {\r
\r
+ AlipayModel::GetInstance()->AlipayStopBindTimer();\r
+ AlipayModel::GetInstance()->AlipaySetBindFlag(false);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_FAIL");\r
+ AlipayModel::GetInstance()->AlipaySetRefreshFlag(0);\r
+ AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW);\r
+ }\r
+ \r
+ }\r
+} \r
void AlipayBindTimerCallBack(void *argument)\r
{\r
GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipayBindCallBackProc, argument));\r
}\r
\r
+\r
+void AlipayBindTimerCallBackbledisconnect(void *argument)\r
+{\r
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipayBindCallBackProcdisconnect, argument));\r
+}\r
+\r
+bool AlipayModel::ble_disconnect_AlipayStartBind(void)\r
+{\r
+ // if (ble_disconnect_bindTimerId == nullptr) {\r
+\r
+ // ble_disconnect_bindTimerId = osTimerNew(AlipayBindTimerCallBackbledisconnect, osTimerOnce, (void *)0, nullptr);\r
+ // if (ble_disconnect_bindTimerId == nullptr) {\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStartBind Create timer fail.");\r
+ // return false;\r
+ // }\r
+\r
+ // int32_t retcode = osTimerStart(ble_disconnect_bindTimerId, ALIPAY_BIND_STATUS_DISCONNECT);\r
+ // if (retcode != 0) {\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStartBind Start timer fail");\r
+ // return false;\r
+ // }\r
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::ble_disconnect_AlipayStartBind");\r
+ // }\r
+\r
+ return true;\r
+}\r
+void AlipayModel::AlipayStopdisconnecTimer(void)\r
+{\r
+ // if (ble_disconnect_bindTimerId == nullptr) {\r
+ // return;\r
+ // }\r
+ // int32_t ret = osTimerStop(ble_disconnect_bindTimerId);\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayStopBindTimer in,%u.", ret);\r
+ // ble_disconnect_bindTimerId=nullptr;\r
+ return;\r
+}\r
bool AlipayModel::AlipayStartBind(void)\r
{\r
if (bindTimerId == nullptr) {\r
return false;\r
}\r
}\r
+ disconnectfalg=0;\r
\r
int32_t retcode = osTimerStart(bindTimerId, ALIPAY_BIND_STATUS_TIMER_LENGTH);\r
if (retcode != 0) {\r
return false;\r
}\r
\r
- alipayApi->bind_start();\r
+ alipayApi->bind_start(); //调用支付宝API开始绑定流程\r
uint8_t str[ALIPAY_GET_BIND_STR_MAX_LENGTH] = { 0 };\r
AlipayGetBindCode(str);\r
return true;\r
return;\r
}\r
\r
+//通过 alipay_get_bind_status 获取绑定状态,判断是否需要跳转绑定页面\r
bool AlipayModel::AlipayGetBindstate(void)\r
{\r
bool state = alipayApi->get_bind_state();\r
return state;\r
}\r
\r
+//通过 alipay_get_bind_str 获取绑定码串生成二维码\r
int32_t AlipayModel::AlipayGetBindCode(uint8_t *bindStr)\r
{\r
int32_t bindStrLen = ALIPAY_GET_BIND_STR_MAX_LENGTH;\r
return ret;\r
}\r
\r
+//通过 alipay_get_pay_str 获取支付码串生成二维码\r
int32_t AlipayModel::AlipayGetPayCode(uint8_t *payStr)\r
{\r
uint32_t payStrLen = ALIPAY_GET_PAY_STR_MAX_LENGTH;\r
return ret;\r
}\r
\r
+//通过 alipay_get_nickname 获取用户昵称\r
int32_t AlipayModel::AlipayGetNickName(uint8_t *nickName)\r
{\r
uint32_t nickNameLen = ALIPAY_GET_NICKNAME_MAX_LENGTH;\r
return ret;\r
}\r
\r
+//通过 alipay_get_logon_id 获取用户登录账号\r
int32_t AlipayModel::AlipayGetIdName(uint8_t *idStr)\r
{\r
uint32_t idStrLen = ALIPAY_GET_ID_STR_MAX_LENGTH;\r
return ret;\r
}\r
\r
+//通过 alipay_get_aid_code 获取帮助码串生成二维码\r
int32_t AlipayModel::AlipayGetAidCode(int8_t *aidStr)\r
{\r
uint32_t aidStrLen = ALIPAY_GET_AID_STR_MAX_LENGTH;\r
return ret;\r
}\r
\r
+//通过 alipay_remove_bind 解除绑定关系\r
void AlipayModel::AlipayUnbind(void)\r
{\r
int32_t ret = alipayApi->remove_bind();\r
\r
void AlipayModel::AlipayStopBindTimer(void)\r
{\r
+ disconnectfalg=0;\r
+\r
if (bindTimerId == nullptr) {\r
return;\r
}\r
return;\r
}\r
\r
+/*从支付宝获取最后一次交易的交易码和交易卡标题,并将结果存储在相应的数组中*/\r
int32_t AlipayModel::AlipayGetLastTranscode()\r
{\r
memset_s(transCode_, ALIPAY_TRANS_CODE_MAX_LEN, 0, ALIPAY_TRANS_CODE_MAX_LEN);\r
uint32_t len = ALIPAY_TRANS_CODE_MAX_LEN;\r
\r
int32_t ret = alipayApi->get_last_transcode(cardTitle_, transCode_, &len);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:ret:%u,len:%u.", ret, len);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:ret:%u,len:%u.", ret, len);\r
return ret;\r
}\r
\r
+/*获取本地交易列表*/\r
int32_t AlipayModel::AlipayGetLocalTranslist()\r
{\r
cardInfo_ = AlipayTransGetCardList();\r
sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH);\r
uint32_t localListSize = sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH;\r
int32_t ret = alipayApi->get_local_translist(cardInfo_, &localListSize, &cardSum_);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:%u.", ret);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "获取本地交易列表 in:%u.", ret);\r
return ret;\r
}\r
\r
uint32_t onListSize = sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH;\r
uint32_t onLineNum = 0;\r
int32_t ret = alipayApi->get_online_translist(onLineList, &onListSize, &onLineNum);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetOnlineTranslist in,ret:%u,num:%u.", ret, onLineNum);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetOnlineTranslist in,ret:%u,num:%u.", ret, onLineNum);\r
\r
if (ret == 0) {\r
memset_s(cardInfo_, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, 0,\r
return ret;\r
}\r
\r
+// 检查指定索引的交易卡状态\r
int32_t AlipayModel::AlipayCheckTransCard(uint32_t index)\r
{\r
mc_alipay_tans_card_status_t cardStatus = { 0 };\r
+ //检查指定索引的交易卡状态\r
int32_t ret = alipayApi->check_trans_cartstatus(&cardInfo_[index], &cardStatus);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret);\r
+ // 如果交易卡存在且剩余使用次数大于等于最小有效次数,返回成功\r
if (cardStatus.card_exits && cardStatus.remain_use_count >= ALIPAY_TRANS_CARD_MIN_VALID_NUM) {\r
return 0;\r
}\r
return -1;\r
}\r
\r
+// 获取指定索引的交易码\r
int32_t AlipayModel::AlipayGetTransCode(uint32_t index)\r
{\r
- cardInfo_ = AlipayTransGetCardList();\r
+ cardInfo_ = AlipayTransGetCardList(); //获取交易卡列表\r
memset_s(transCode_, ALIPAY_TRANS_CODE_MAX_LEN, 0, ALIPAY_TRANS_CODE_MAX_LEN);\r
memset_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, 0, ALIPAY_TRANS_CARD_MEMBER_LEN);\r
transCodeLen_ = ALIPAY_TRANS_CODE_MAX_LEN;\r
- int32_t ret = alipayApi->get_transcode(&cardInfo_[index], transCode_, &transCodeLen_);\r
- if (ret == 0) {\r
+ int32_t ret = alipayApi->get_transcode(&cardInfo_[index], transCode_, &transCodeLen_); //获取指定索引的交易码\r
+ if (ret == 0) { //如果获取成功,复制卡标题\r
memcpy_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, cardInfo_[index].title, ALIPAY_TRANS_CARD_MEMBER_LEN);\r
}\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret);\r
return cardTitle_;\r
}\r
\r
+/// @brief 支付宝屏幕控制\r
+/// @param turnOnFlag \r
+void AlipayModel::AlipayScreenControl(bool turnOnFlag)\r
+{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayScreenControl %d",turnOnFlag);\r
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+ if(turnOnFlag)\r
+ {\r
+ ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);\r
+ uapi_setScreenBrightness(MAX_BRIGHTNESS); //最高亮度\r
+ }\r
+ else\r
+ {\r
+ ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);\r
+ uapi_setScreenBrightness(ConfigModel::GetInstance()->GetBrightness());//退出APP将亮度恢复到ConfigModel中设置的亮度值\r
+ }\r
+}\r
+\r
+#include <string.h>\r
+#include <dirent.h>\r
+#include <sys/stat.h>\r
+#include <unistd.h>\r
+\r
+// 删除指定文件夹下的所有文件\r
+void AlipayModel::delete_all_files_in_folder(const char *folder_path) {\r
+ DIR *dir;\r
+ struct dirent *entry;\r
+ struct stat statbuf;\r
+ char path[1024];\r
+\r
+ if ((dir = opendir(folder_path)) == NULL) {\r
+ printf("无法打开文件夹");\r
+ return;\r
+ }\r
+\r
+ while ((entry = readdir(dir)) != NULL) {\r
+ if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {\r
+ continue;\r
+ }\r
+\r
+ snprintf(path, sizeof(path), "%s/%s", folder_path, entry->d_name);\r
+\r
+ if (stat(path, &statbuf) == -1) {\r
+ printf("无法获取文件状态");\r
+ continue;\r
+ }\r
+\r
+ if (S_ISREG(statbuf.st_mode)) {\r
+ if (unlink(path) == -1) {\r
+ printf("无法删除文件");\r
+ }\r
+ }\r
+ }\r
+\r
+ closedir(dir);\r
+ printf("文件夹 %s 下的所有文件已成功删除。\n", folder_path);\r
+}\r
+\r
}
\ No newline at end of file
SetOnDragListener(presenter_);\r
SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
SetStyle(STYLE_BACKGROUND_COLOR, 0xff1677ff);\r
- SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ //SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
\r
if (!AlipayInitLabel()) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPayCode::InitView AlipayInitLabel() false");\r
#include "AlipayTransListItemView.h"\r
#include "AlipayTransListView.h"\r
#include "NativeRegisterManager.h"\r
-\r
+#include "custom_utils.h"\r
+#include "common/key_code.h"\r
+#include "gfx_utils/mem_check.h"\r
+#include "AlipayC.h"\r
namespace OHOS {\r
\r
REGIST_MENU(VIEW_MAIN_ALIPAY, AlipayMainView, AlipayPresenter, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_DEFAULT_IMG, "支付宝");\r
\r
void AlipayPresenter::OnStart()\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStart");\r
+ if(Alipay_is_init()==false)\r
+ return;\r
+ /* -------------------------------- 设置支付宝界面常亮 ------------------------------- */\r
+ alipayMode_->AlipayScreenControl(true);\r
+ /* -------------------------------------------------------------------------- */\r
alipayMode_->AlipayExitLpm();\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " alipayMode_->AlipayExitLpm()");\r
+\r
if (!alipayMode_->AlipayInitModel()) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::OnStart AlipayInitModel fail.");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+ NativeAbility::GetInstance().Back();\r
return;\r
}\r
}\r
\r
void AlipayPresenter::OnStop(void)\r
{\r
+\r
+ /**关闭alipay蓝牙服务*/\r
+ stop_alipay_ble_service();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStop");\r
svr_alipay_destroy_task();\r
alipayMode_->AlipayDeinitModel();\r
alipayMode_->AlipayEnterLpm();\r
+ /* -------------------------------- 恢复屏幕保持亮屏的时间 ------------------------------- */\r
+ alipayMode_->AlipayScreenControl(false);\r
}\r
\r
bool AlipayPresenter::OnDrag(UIView &view, const DragEvent &event)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickExitAlipay start");\r
AlipayModel::GetInstance()->AlipayFinishBind();\r
- uint16 preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
- NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+ NativeAbility::GetInstance().Back();\r
return;\r
}\r
\r
return;\r
}\r
\r
+/**\r
+ * @brief 点击跳转到交通卡相关视图的处理函数\r
+ * \r
+ * 当用户点击跳转到交通卡相关视图的按钮时,此函数会被调用。\r
+ * 它会尝试获取本地交通卡交易列表,根据获取结果决定跳转到不同的视图。\r
+ * \r
+ * @param view 被点击的视图对象\r
+ */\r
void AlipayPresenter::ClickJumpTrans(UIView &view)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickJumpTrans start");\r
- int32_t ret = alipayMode_->AlipayGetLocalTranslist();\r
- if (ret != 0) {\r
- AlipaySetSwitchIndex(ALIPAY_TRANS_GET_LIST_FIRST);\r
- view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_GET_TRANS_LIST_VIEW);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "点击跳转到交通卡相关视图的操作开始");\r
+ int32_t ret = alipayMode_->AlipayGetLocalTranslist(); //获取本地交通卡交易列表\r
+ if (ret != 0) { //获取本地交通卡交易列表失败\r
+ AlipaySetSwitchIndex(ALIPAY_TRANS_GET_LIST_FIRST); //设置切换索引为首次获取交通卡交易列表\r
+ view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_GET_TRANS_LIST_VIEW); //将当前视图从列表视图切换到获取交通卡交易列表视图\r
} else if (ret == 0) {\r
- int32_t get_res = alipayMode_->AlipayGetLastTranscode();\r
+ int32_t get_res = alipayMode_->AlipayGetLastTranscode(); //从支付宝获取最后一次交易的交易码\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickJumpTrans get_res:%d", get_res);\r
if (get_res == 0) {\r
view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_TRANS_VIEW);\r
} else {\r
\r
void AlipayPresenter::ClickRefreshList(UIView &view)\r
{\r
+ //刷新交通卡列表\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickRefreshList start");\r
alipayMode_->AlipaySendMsg(ALIPAY_MSG_UPDATA_TRANS_LIST);\r
view_->ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_TRANS_ANI_VIEW);\r
\r
void AlipayPresenter::ClickBackList(UIView &view)\r
{\r
+ //获取乘车码列表视图退回到列表视图\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickBackList start");\r
view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_LIST_VIEW);\r
return;\r
\r
void AlipayPresenter::ClickUpdateList(UIView &view)\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickUpdateList start");\r
+ //获取交通卡列表\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickUpdateList start");\r
+ // 发送更新交通卡列表的消息\r
alipayMode_->AlipaySendMsg(ALIPAY_MSG_UPDATA_TRANS_LIST);\r
+ // 从获取交通卡列表视图切换到交通卡动画视图\r
view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_ANI_VIEW);\r
return;\r
}\r
return;\r
}\r
\r
+//点击刷新按钮\r
void AlipayPresenter::ClickTransToTransCode(UIView &view)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickTransToTransCode start");\r
return;\r
}\r
\r
+/// @brief 处理用户点击重试获取支付宝交易码\r
+/// @param view \r
void AlipayPresenter::ClickRetryTransCode(UIView &view)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickRetryTransCode start");\r
- uint32_t index = AlipayGetCardNum();\r
- int32_t ret = alipayMode_->AlipayGetTransCode(index);\r
+ uint32_t index = AlipayGetCardNum(); //获取当前选中的交通卡索引\r
+ int32_t ret = alipayMode_->AlipayGetTransCode(index); //尝试重新获取交易码\r
if (ret == 0) {\r
- view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_VIEW);\r
+ view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_VIEW); //成功获取交易码,跳转到交易码视图\r
} else if (ret == ALIPAY_TRANS_CODE_NET_ERROR) {\r
AlipaySetSwitchIndex(ALIPAY_TRANS_RES_CODE);\r
- view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_RES_VIEW);\r
+ view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_RES_VIEW); //网络错误,跳转到交易码获取失败视图\r
} else {\r
if (ret == ALIPAY_TRANS_CODE_DATA_LIMIT) {\r
- AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE);\r
+ AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE); //数据限制错误:设置安全提示\r
} else if (ret == ALIPAY_TRANS_CODE_NOT_SUPPORT) {\r
- AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT);\r
+ AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT); //不支持的错误:设置不支持提示\r
} else {\r
- AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW);\r
+ AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW); //未知错误:设置未知错误提示\r
}\r
- view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW);\r
+ view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW); //切换到相应的错误提示视图\r
}\r
return;\r
}\r
return true;\r
}\r
\r
+bool AlipayPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::OnKeyAct");\r
+ uint16 keyID = event.GetKeyId();\r
+ uint16_t keyState = event.GetState();\r
+ // 如果是power键就返回上一级\r
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
+ {\r
+ view_->DropView(0);\r
+ \r
+ }\r
+ return true;\r
+\r
+}\r
+\r
int32_t AlipayPresenter::AlipayGetPayCode(uint8_t *payStr)\r
{\r
return alipayMode_->AlipayGetPayCode(payStr);\r
return alipayMode_->AlipayGetIdName(idStr);\r
}\r
\r
+//通过获取帮助码串生成二维码\r
int32_t AlipayPresenter::AlipayGetAidCode(int8_t *aidStr)\r
{\r
return alipayMode_->AlipayGetAidCode(aidStr);\r
alipayMode_->AlipaySetSwitchIndex(switchIndex);\r
}\r
\r
+//获取\r
uint32_t AlipayPresenter::AlipayGetCardNum(void)\r
{\r
return alipayMode_->AlipayGetCardNum();\r
#include "UiConfig.h"\r
#include <string>\r
#include "cmsis_os.h"\r
-#include "AlipaySetting.h"\r
-#include "AlipayModel.h"\r
+// #include "AlipaySetting.h"\r
+// #include "AlipayModel.h"\r
+#include "alipay/include/AlipaySetting.h"\r
+#include "alipay/include/AlipayModel.h"\r
+#include "uicomponents/UIComponents.h"\r
\r
namespace OHOS {\r
-static const char *SETTING_TITLE = (char *)"设置";\r
-static const char *SETTING_BUTTON = (char *)"解除绑定";\r
+static const char *SETTING_TITLE = (char *)"设置"; \r
+static const char *SETTING_BUTTON = (char *)"解除绑定"; \r
\r
-static const int16 SETTING_TITLE_FONT = 38;\r
-static const int16 SETTING_TITLE_X = 0;\r
-static const int16 SETTING_TITLE_Y = 35;\r
-static const int16 SETTING_TITLE_WIDTH = 454;\r
-static const int16 SETTING_TITLE_HEIGHT = 53;\r
+static const int16 SETTING_TITLE_FONT = 30;\r
+static const int16 SETTING_TITLE_X = (HORIZONTAL_RESOLUTION - 300) / 2;\r
+static const int16 SETTING_TITLE_Y = 50;\r
+static const int16 SETTING_TITLE_WIDTH = 300;\r
+static const int16 SETTING_TITLE_HEIGHT = 35;\r
\r
-static const int16 SETTING_NAME_FONT = 38;\r
-static const int16 SETTING_NAME_X = 0;\r
-static const int16 SETTING_NAME_Y = 142;\r
-static const int16 SETTING_NAME_WIDTH = 454;\r
-static const int16 SETTING_NAME_HEIGHT = 53;\r
+static const int16 SETTING_NAME_FONT = 30;\r
+static const int16 SETTING_NAME_X = (HORIZONTAL_RESOLUTION - 360) / 2;\r
+static const int16 SETTING_NAME_Y = 155;\r
+static const int16 SETTING_NAME_WIDTH = 360;\r
+static const int16 SETTING_NAME_HEIGHT = 35;\r
\r
static const int16 SETTING_ID_FONT = 30;\r
-static const int16 SETTING_ID_X = 0;\r
-static const int16 SETTING_ID_Y = 198;\r
-static const int16 SETTING_ID_WIDTH = 454;\r
-static const int16 SETTING_ID_HEIGHT = 109;\r
+static const int16 SETTING_ID_X = (HORIZONTAL_RESOLUTION - 360) / 2;\r
+static const int16 SETTING_ID_Y = 210;\r
+static const int16 SETTING_ID_WIDTH = 360;\r
+static const int16 SETTING_ID_HEIGHT = 35;\r
\r
-static const int16 SETTING_BUTTON_X = 121;\r
-static const int16 SETTING_BUTTON_Y = 320;\r
-static const int16 SETTING_BUTTON_WIDTH = 212;\r
-static const int16 SETTING_BUTTON_HEIGHT = 73;\r
-static const int16 SETTING_BUTTON_FONT = 38;\r
+static const int16 SETTING_BUTTON_X = (HORIZONTAL_RESOLUTION - 280) / 2;\r
+static const int16 SETTING_BUTTON_Y = 315;\r
+static const int16 SETTING_BUTTON_WIDTH = 280;\r
+static const int16 SETTING_BUTTON_HEIGHT = 90;\r
+static const int16 SETTING_BUTTON_FONT = 30;\r
\r
AlipaySetting::AlipaySetting(AlipayPresenter *presenter)\r
{\r
}\r
uint8_t str[ALIPAY_GET_NICKNAME_MAX_LENGTH] = {0};\r
presenter_->AlipayGetNickName(str);\r
- labelName->SetText((const char *)str);\r
- labelName->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SETTING_NAME_FONT);\r
+ uint8_t str_[ALIPAY_GET_NICKNAME_MAX_LENGTH] = {0};\r
+ updata_char((char *)str_,(char *)str,ALIPAY_GET_NICKNAME_MAX_LENGTH);\r
+ labelName->SetText((const char *)str_);\r
+ labelName->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, SETTING_NAME_FONT);\r
+\r
labelName->SetPosition(SETTING_NAME_X, SETTING_NAME_Y, SETTING_NAME_WIDTH, SETTING_NAME_HEIGHT);\r
- labelName->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+ labelName->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
labelName->SetStyle(STYLE_TEXT_FONT, SETTING_NAME_FONT);\r
labelName->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- labelName->SetRollSpeed(30);\r
+ labelName->SetRollSpeed(23);\r
labelName->SetRollStartPos(SETTING_NAME_X);\r
\r
Add(labelName);\r
labelId->SetText((const char *)strID);\r
labelId->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SETTING_ID_FONT);\r
labelId->SetPosition(SETTING_ID_X, SETTING_ID_Y, SETTING_ID_WIDTH, SETTING_ID_HEIGHT);\r
- labelId->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+ labelId->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
labelId->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
labelId->SetStyle(STYLE_TEXT_FONT, SETTING_ID_FONT);\r
labelId->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- labelId->SetRollSpeed(30);\r
+ labelId->SetRollSpeed(23);\r
labelId->SetRollStartPos(SETTING_ID_X);\r
\r
Add(labelId);\r
labelPayCode->SetPosition(TRANSCODE_TITLE_X, TRANSCODE_TITLE_Y, TRANSCODE_TITLE_WIDTH, TRANSCODE_TITLE_HEIGHT);\r
labelPayCode->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
labelPayCode->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- labelPayCode->SetRollSpeed(30);\r
+ labelPayCode->SetRollSpeed(23);\r
labelPayCode->SetRollStartPos(TRANSCODE_TITLE_X);\r
Add(labelPayCode);\r
\r
*/
#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()
{
SetTouchable(true);
SetUpChild();
+ Add(&back);
Add(&sLabel);
+ Add(&sNextImage);
}
AlipayTransListItemView::~AlipayTransListItemView()
{
+ Remove(&back);
Remove(&sLabel);
+ Remove(&sNextImage);
}
void AlipayTransListItemView::SetItemInfo(const AlipayTransListItem &itemInfo)
{
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()
#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)
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);
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);
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;
}
#include "font/ui_font.h"\r
#include <string>\r
#include "cmsis_os.h"\r
-#include "AlipayTransTips.h"\r
-#include "AlipayModel.h"\r
+// #include "AlipayTransTips.h"\r
+// #include "AlipayModel.h"\r
+#include "alipay/include/AlipayTrans/AlipayTransTips.h"\r
+#include "alipay/include/AlipayModel.h"\r
\r
namespace OHOS {\r
-static const int16 TIPS_LABEL_X_FIRST = 38;\r
-static const int16 TIPS_LABEL_Y_FIRST = 179;\r
-static const int16 TIPS_LABEL_WIDTH_FIRST = 378;\r
-static const int16 TIPS_LABEL_HEIGHT_FIRST = 84;\r
+static const int16 TIPS_LABEL_X_FIRST = (HORIZONTAL_RESOLUTION - 360) / 2;\r
+static const int16 TIPS_LABEL_Y_FIRST = 180;\r
+static const int16 TIPS_LABEL_WIDTH_FIRST = 360;\r
+static const int16 TIPS_LABEL_HEIGHT_FIRST = 70;\r
static const int16 TIPS_LABEL_FONT_FIRST = 30;\r
\r
static const char *TIPS_LABEL_TEXT_1 = (char *)"未知错误_具体错误码,请联系设备厂商解决";\r
static const char *TIPS_LABEL_TEXT_4 = (char *)"未知错误_具体错误码,请联系设备厂商解决";\r
static const char *TIPS_LABEL_TEXT_5 = (char *)"暂不支持,请切换到手机侧使用";\r
\r
-static const int16 RES_IMAGE_X = 170;\r
-static const int16 RES_IMAGE_Y = 55;\r
+static const int16 RES_IMAGE_X = (HORIZONTAL_RESOLUTION - 112) / 2;\r
+static const int16 RES_IMAGE_Y = 50;\r
static const int16 RES_IMAGE_WIDTH = 112;\r
static const int16 RES_IMAGE_HEIGHT = 112;\r
\r
static const char *RECOGNIZE_BUTTON = (char *)"确定";\r
-static const int16 RECOGNIZE_BUTTON_FONT = 38;\r
-static const int16 RECOGNIZE_BUTTON_X = 120;\r
-static const int16 RECOGNIZE_BUTTON_Y = 320;\r
-static const int16 RECOGNIZE_BUTTON_WIDTH = 212;\r
-static const int16 RECOGNIZE_BUTTON_HEIGHT = 73;\r
+static const int16 RECOGNIZE_BUTTON_FONT = 30;\r
+static const int16 RECOGNIZE_BUTTON_X = (HORIZONTAL_RESOLUTION - 280) / 2;\r
+static const int16 RECOGNIZE_BUTTON_Y = 315;\r
+static const int16 RECOGNIZE_BUTTON_WIDTH = 280;\r
+static const int16 RECOGNIZE_BUTTON_HEIGHT = 90;\r
\r
typedef struct AlipayTransTipsInfo {\r
const char *str;\r
\r
// Set additional property\r
alipayImage->SetAutoEnable(false);\r
- alipayImage->SetResizeMode(UIImageView::FILL);\r
+ alipayImage->SetResizeMode(UIImageView::CENTER);\r
\r
Add(alipayImage);\r
return true;\r
#include "font/ui_font.h"\r
#include <string>\r
#include "cmsis_os.h"\r
-#include "AlipayUnbind.h"\r
+// #include "AlipayUnbind.h"\r
+#include "alipay/include/AlipayUnbind.h"\r
\r
namespace OHOS {\r
-static const int16 EXIT_LABEL_X_FIRST = 132;\r
-static const int16 EXIT_LABEL_Y_FIRST = 57;\r
-static const int16 EXIT_LABEL_WIDTH_FIRST = 189;\r
-static const int16 EXIT_LABEL_HEIGHT_FIRST = 48;\r
+static const int16 EXIT_LABEL_X_FIRST = 83;\r
+static const int16 EXIT_LABEL_Y_FIRST = 50;\r
+static const int16 EXIT_LABEL_WIDTH_FIRST = 300;\r
+static const int16 EXIT_LABEL_HEIGHT_FIRST = 35;\r
\r
-static const int16 EXIT_LABEL_X_SEC = 44;\r
-static const int16 EXIT_LABEL_Y_SECOND = 126;\r
-static const int16 EXIT_LABEL_WIDTH_SEC = 365;\r
-static const int16 EXIT_LABEL_HEIGHT_SEC = 128;\r
+static const int16 EXIT_LABEL_X_SEC = 53;\r
+static const int16 EXIT_LABEL_Y_SECOND = 222;\r
\r
-static const int16 EXIT_LABEL_FONT_FIRST = 38;\r
+static const int16 EXIT_LABEL_WIDTH_SEC = 360;\r
+static const int16 EXIT_LABEL_HEIGHT_SEC = 70;\r
+\r
+static const int16 EXIT_LABEL_FONT_FIRST = 30;\r
static const int16 EXIT_LABEL_FONT_SEC = 30;\r
\r
static const char *UNBIND_LABEL_TEXT_FIRST = (char *)"解除绑定";\r
-static const char *UNBIND_LABEL_TEXT_SECOND = (char *)"解绑后将无法使用支付宝各项解锁功能,确认解绑?";\r
+static const char *UNBIND_LABEL_TEXT_SECOND = (char *)"解绑后将无法使用支付宝各项功能,确认解绑?";\r
\r
-static const int16 EXIT_BUTTON_EXIT_X = 50;\r
-static const int16 EXIT_BUTTON_EXIT_Y = 312;\r
+static const int16 EXIT_BUTTON_EXIT_X = 58;\r
+static const int16 EXIT_BUTTON_EXIT_Y = 320;\r
\r
-static const int16 EXIT_BUTTON_BIND_X = 233;\r
-static const int16 EXIT_BUTTON_BIND_Y = 312;\r
+static const int16 EXIT_BUTTON_BIND_X = 238;\r
+static const int16 EXIT_BUTTON_BIND_Y = 320;\r
\r
static const char *UNBIND_BUTTON_TEXT_FIRST = (char *)"确认";\r
static const char *UNBIND_BUTTON_TEXT_SECOND = (char *)"取消";\r
\r
-static const int16 EXIT_BUTTON_WIDTH = 169;\r
-static const int16 EXIT_BUTTON_HEIGHT = 73;\r
-static const int16 EXIT_BUTTON_FONT = 38;\r
+static const int16 EXIT_BUTTON_WIDTH = 170;\r
+static const int16 EXIT_BUTTON_HEIGHT = 90;\r
+static const int16 EXIT_BUTTON_FONT = 26;\r
\r
AlipayUnbind::AlipayUnbind(AlipayPresenter *presenter)\r
{\r
alipayButton[buttonNum] = nullptr;\r
}\r
}\r
+ if(AttentionImage)\r
+ {\r
+ delete AttentionImage;\r
+ AttentionImage =nullptr;\r
+ }\r
}\r
\r
bool AlipayUnbind::AlipayInitLabel()\r
alipayLabel[ALIPAY_SET_ZERO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_FIRST);\r
alipayLabel[ALIPAY_SET_ZERO]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_FIRST);\r
alipayLabel[ALIPAY_SET_ZERO]->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- alipayLabel[ALIPAY_SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ alipayLabel[ALIPAY_SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
\r
Add(alipayLabel[ALIPAY_SET_ZERO]);\r
\r
EXIT_LABEL_HEIGHT_SEC);\r
alipayLabel[ALIPAY_SET_ONE]->SetText(UNBIND_LABEL_TEXT_SECOND);\r
alipayLabel[ALIPAY_SET_ONE]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT_SEC);\r
- alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_LINE_SPACE, 12);\r
- alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_SEC);\r
+ //alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_LINE_SPACE, 12);\r
+ //alipayLabel[ALIPAY_SET_ONE]->SetStyle(STYLE_TEXT_FONT, EXIT_LABEL_FONT_SEC);\r
+ alipayLabel[ALIPAY_SET_ONE]->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xFF));\r
+ alipayLabel[ALIPAY_SET_ONE]->SetAlign(TEXT_ALIGNMENT_CENTER);\r
alipayLabel[ALIPAY_SET_ONE]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
Add(alipayLabel[ALIPAY_SET_ONE]);\r
\r
+ AttentionImage=new UIImageView();\r
+ if (AttentionImage == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new FactoryResetImage fail!");\r
+ return false;\r
+ }\r
+ AttentionImage->SetPosition(193, 110);\r
+ AttentionImage->SetSrc(PNG_ATTENTION_IMAGE);\r
+ Add(AttentionImage);\r
+\r
+\r
+\r
return true;\r
}\r
\r
}\r
int64_t backColor = 0;\r
if (num == 0) {\r
- backColor = 0xff4a83bf;\r
- alipayButton[num]->SetTextColor(Color::GetColorFromRGBA(0x00, 0x00, 0x00, 0xff));\r
- alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ backColor = 0xff191919;\r
+ //alipayButton[num]->SetTextColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0x19));\r
+ alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
} else if (num == 1) {\r
- backColor = 0xff0b1928;\r
+ backColor = 0xff0176ff;\r
+ alipayButton[num]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff0176ff);\r
}\r
alipayButton[num]->SetPosition(alipayX, alipayY, EXIT_BUTTON_WIDTH, EXIT_BUTTON_HEIGHT);\r
alipayButton[num]->SetText(buttonStr);\r
#include "UiConfig.h"\r
#include <string>\r
#include "cmsis_os.h"\r
-#include "AlipayUnbindFinish.h"\r
-\r
+// #include "AlipayUnbindFinish.h"\r
+#include "alipay/include/AlipayUnbindFinish.h"\r
namespace OHOS {\r
static AlipayUnbindFinish *g_alipayUnbindFinish = nullptr;\r
\r
\r
static const char *UNBIND_FINISH_BUTTON = (char *)"确认";\r
\r
-static const int16 UNBIND_FINISH_TITLE_FONT = 38;\r
-static const int16 UNBIND_FINISH_TITLE_X = 0;\r
-static const int16 UNBIND_FINISH_TITLE_Y = 35;\r
-static const int16 UNBIND_FINISH_TITLE_WIDTH = 454;\r
-static const int16 UNBIND_FINISH_TITLE_HEIGHT = 53;\r
+static const int16 UNBIND_FINISH_TITLE_FONT = 30;\r
+static const int16 UNBIND_FINISH_TITLE_X = (HORIZONTAL_RESOLUTION - 300) / 2;\r
+static const int16 UNBIND_FINISH_TITLE_Y = 50;\r
+static const int16 UNBIND_FINISH_TITLE_WIDTH = 300;\r
+static const int16 UNBIND_FINISH_TITLE_HEIGHT = 35;\r
\r
static const int16 UNBIND_FINISH_TEXT_FONT = 30;\r
-static const int16 UNBIND_FINISH_TEXT_X = 38;\r
-static const int16 UNBIND_FINISH_TEXT_Y = 126;\r
-static const int16 UNBIND_FINISH_TEXT_WIDTH = 380;\r
-static const int16 UNBIND_FINISH_TEXT_HEIGHT = 166;\r
+static const int16 UNBIND_FINISH_TEXT_X = (HORIZONTAL_RESOLUTION - 360) / 2 ;\r
+static const int16 UNBIND_FINISH_TEXT_Y = 130;\r
+static const int16 UNBIND_FINISH_TEXT_WIDTH = 360;\r
+static const int16 UNBIND_FINISH_TEXT_HEIGHT = 140;\r
\r
-static const int16 UNBIND_FINISH_BUTTON_FONT = 38;\r
-static const int16 UNBIND_FINISH_BUTTON_X = 120;\r
-static const int16 UNBIND_FINISH_BUTTON_Y = 320;\r
-static const int16 UNBIND_FINISH_BUTTON_WIDTH = 212;\r
-static const int16 UNBIND_FINISH_BUTTON_HEIGHT = 73;\r
+static const int16 UNBIND_FINISH_BUTTON_FONT = 30;\r
+static const int16 UNBIND_FINISH_BUTTON_X = (HORIZONTAL_RESOLUTION - 280) / 2;\r
+static const int16 UNBIND_FINISH_BUTTON_Y = 315;\r
+static const int16 UNBIND_FINISH_BUTTON_WIDTH = 280;\r
+static const int16 UNBIND_FINISH_BUTTON_HEIGHT = 90;\r
\r
AlipayUnbindFinish::AlipayUnbindFinish(AlipayPresenter *presenter)\r
{\r
\r
Add(titleUnbind);\r
\r
- titleUnbind = new UILabel();\r
- if (titleUnbind == nullptr) {\r
+ textUnbind = new UILabel();\r
+ if (textUnbind == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayUnbindFinish::AlipayInitLabel new label fail");\r
return false;\r
}\r
- titleUnbind->SetText(UNBIND_FINISH_TEXT);\r
- titleUnbind->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UNBIND_FINISH_TEXT_FONT);\r
- titleUnbind->SetPosition(UNBIND_FINISH_TEXT_X, UNBIND_FINISH_TEXT_Y, UNBIND_FINISH_TEXT_WIDTH,\r
+ textUnbind->SetText(UNBIND_FINISH_TEXT);\r
+ textUnbind->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UNBIND_FINISH_TEXT_FONT);\r
+ textUnbind->SetPosition(UNBIND_FINISH_TEXT_X, UNBIND_FINISH_TEXT_Y, UNBIND_FINISH_TEXT_WIDTH,\r
UNBIND_FINISH_TEXT_HEIGHT);\r
- titleUnbind->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- titleUnbind->SetStyle(STYLE_TEXT_FONT, UNBIND_FINISH_TEXT_FONT);\r
- titleUnbind->SetStyle(STYLE_LINE_SPACE, 6);\r
-\r
- Add(titleUnbind);\r
+ textUnbind->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+ textUnbind->SetStyle(STYLE_TEXT_FONT, UNBIND_FINISH_TEXT_FONT);\r
+ // textUnbind->SetStyle(STYLE_LINE_SPACE, 6);\r
+ textUnbind->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xFF));\r
+ textUnbind->SetAlign(TEXT_ALIGNMENT_CENTER);\r
+ Add(textUnbind);\r
\r
return true;\r
}\r
}
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) {
//#include "hfp_hf_service.h"\r
#include "uiservice/include/ui_service.h"\r
#include "PhoneService.h"\r
-#ifdef SUPPORT_AT_OHOSFWK\r
+#ifdef SUPPORT_OHOSFWK\r
#include "BluetoothWrapper.h"\r
#endif\r
#include "Bluetooyhpabpserver.h"\r
{
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
HandlePowerKeyPress(currentViewId);
}
}
+ #endif
return;
}
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
+ {
+ if (longPressFlag == 0 && pressFlag == 1)
+ {
+ HandlePowerKeyPress(currentViewId);
+ }
+ }
// 重置标志
pressFlag = 0;
longPressFlag = 0;
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;
// 增加按键事件
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
{
- NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+ NativeAbility::GetInstance().Back();
}
return true;
}
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);
-#include "IIC_Master_Driver.h"\r
-#include "hs_private.h"\r
-\r
-unsigned char *g_HSI2CBuf;\r
-unsigned char gHSEncTransSign; //ͨÐÅÊÇ·ñ¼ÓÃÜ£¬0 = Ã÷ÎÄͨÐÅ£¬1 = ¼ÓÃÜͨÐÅ\r
-unsigned char g_DefTransKey[16] = {0x54,0x8E,0x8D,0x7A,0x26,0x35,0x85,0x11,0x25,0x2E,0xF8,0xD6,0xB7,0x17,0xA4,0xE4};\r
-unsigned char g_TransTmpKey[16];\r
-\r
-//extern unsigned char * IIC_Master_Init(void);\r
-\r
-//extern void IIC_Master_Send(unsigned char byAddr, unsigned char *pData, unsigned short wLen);\r
-\r
-//extern void IIC_Master_Receive(unsigned char byAddr, unsigned char *pData, unsigned short wLen);\r
-\r
-\r
-\r
-\r
-//CRCµ¥×Ö½Ú¼ÆË㡪¡ªÑ»·×óÒÆ£¬ÏÈÒÆ×î¸ßbit\r
-unsigned short LeftShift_CRC(unsigned char byValue, unsigned short *lpwCrc)\r
-{\r
- byValue ^= (unsigned char)(*lpwCrc>>8);\r
- byValue ^= (byValue>>4);\r
-\r
- *lpwCrc = (*lpwCrc<<8) ^ (unsigned short)(byValue);\r
- *lpwCrc ^= (unsigned short)byValue<<12;\r
- *lpwCrc ^= (unsigned short)byValue<<5;\r
-\r
- return (*lpwCrc);\r
-}\r
-\r
-void ComputeCRC(unsigned char *Data, unsigned short Length, unsigned char *pbyOut)\r
-{\r
- unsigned char chBlock;\r
- unsigned short wCrc;\r
- \r
- wCrc = 0x0000; // ITU-V.41\r
- \r
- while(Length--)\r
- {\r
- chBlock = *Data++;\r
- LeftShift_CRC(chBlock, &wCrc);\r
- }\r
- \r
- pbyOut[0] = (unsigned char) ((wCrc >> 8) & 0xFF);\r
- pbyOut[1] = (unsigned char) (wCrc & 0xFF);\r
- \r
- return;\r
-}\r
-\r
-void lmemset(unsigned char *pBuf, unsigned char byVal, unsigned short wLen)\r
-{\r
- unsigned short i;\r
- \r
- for(i=0; i<wLen; ++i)\r
- {\r
- pBuf[i] = byVal;\r
- }\r
- return ;\r
-}\r
-\r
-void lmemcpy(unsigned char *pDst, unsigned char *pSrc, unsigned short wLen)\r
-{\r
- unsigned short i;\r
-\r
- if((pSrc == pDst) || (wLen == 0))\r
- {\r
- return;\r
- }\r
-\r
- if(pSrc < pDst)\r
- {\r
- for(i = wLen-1; i != 0; --i)\r
- {\r
- pDst[i] = pSrc[i];\r
- }\r
- pDst[0] = pSrc[0];\r
- }\r
- else\r
- {\r
- for(i = 0; i < wLen; ++i)\r
- {\r
- pDst[i] = pSrc[i];\r
- }\r
- }\r
-\r
- return ;\r
-}\r
-\r
-//Ïàͬ·µ»Ø0£¬²»Í¬·µ»Ø1\r
-unsigned char lmemcmp(unsigned char *pBuf1, unsigned char *pBuf2, unsigned short wLen)\r
-{\r
- unsigned short i;\r
-\r
- for(i=0; i<wLen; ++i)\r
- {\r
- if(pBuf1[i] != pBuf2[i])\r
- {\r
- return 1;\r
- }\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-void HS_IIC_Init(void)\r
-{\r
- unsigned char ver[29];\r
- unsigned char i;\r
-\r
- gHSEncTransSign = 0x00;\r
- lmemset(g_TransTmpKey, 0x00, 16);\r
- \r
- g_HSI2CBuf = IIC_Master_Init();\r
-\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x05;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0xCA;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = 0x00;\r
- ComputeCRC(g_HSI2CBuf, 7, g_HSI2CBuf+7);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 9);\r
- if(0 != HS_IIC_Recv_Resp(ver, 29))//Èç¹û»ñÈ¡³õÖµÃÜÔ¿Ö¸ÁîÖ´ÐÐÒì³££¬¾ÍÓÃ16×Ö½ÚFF½øÐмÓÃÜͨÐÅ\r
- {\r
- gHSEncTransSign = 0x01;\r
- lmemset(g_TransTmpKey, 0xFF, 16);\r
- return ;\r
- }\r
-\r
- if((ver[0] == 0x80) && (ver[1] == 0x10) && (ver[18] == 0x81) && (ver[19] == 0x02))//¼òµ¥µÄ¼ì²éÒ»ÏÂÊý¾Ý¸ñʽÄÚÈÝ\r
- {\r
- if((ver[20] != 0x10) || (ver[21] != 0x03))\r
- {\r
- gHSEncTransSign = 0x01;\r
- for(i=0; i<16; ++i)\r
- {\r
- g_TransTmpKey[i] = ver[2+i] ^ g_DefTransKey[i];\r
- }\r
- }\r
- }\r
- else\r
- {\r
- gHSEncTransSign = 0x01;\r
- lmemset(g_TransTmpKey, 0xFF, 16);\r
- }\r
-}\r
-\r
-//·¢ËÍ: C8 + LEN(2) + { ÃüÁî¼°Êý¾Ý} ^ g_TransTmpKey + CRC\r
-//·µ»ØFALSE±íʾ½ÓÊÕÖ¸Áî»òÊý¾ÝCRCУÑé´íÎó\r
-int HS_IIC_Send_Cmd(unsigned char *pData, unsigned short wLen)\r
-{\r
- return IIC_Master_Send(0xC8, pData, wLen);\r
-}\r
-\r
-//½ÓÊÕ: C9 + 55\r
-// C9 + LEN(2) + { ÏìÓ¦Êý¾Ý+ ״̬×Ö} ^ g_TransTmpKey + CRC\r
-\r
-//¹¦ÄÜ: ½ÓÊÕwLen³¤¶ÈµÄÊý¾Ý£¬µ½pData»º³åÇøÖÐ\r
-//·µ»Ø:\r
-// 0 ±íʾÕýÈ·½ÓÊÕ\r
-// 1 ±íʾ½ÓÊÕÊý¾ÝCRC´íÎó\r
-// 2 ±íʾʵ¼Ê½ÓÊÕÊý¾Ý³¤¶ÈÓò²»ÊÇwLen\r
-// 3 ±íʾָÁî·µ»Ø×´Ì¬×Ö²»ÊÇ9000\r
-// 4 ±íʾָÁʱδÏìÓ¦\r
-unsigned char HS_IIC_Recv_Resp(unsigned char *pData, unsigned short wLen)\r
-{\r
- unsigned short wRspLen;\r
- unsigned char crc[2];\r
- unsigned int dwCnt;\r
- unsigned short i;\r
-\r
- \r
- g_HSI2CBuf[0] = 0x00;\r
- dwCnt = 0;\r
- while(g_HSI2CBuf[0] != 0x55)\r
- {\r
- ++dwCnt;\r
- if(dwCnt > 0x1000)\r
- {\r
- return 4;\r
- }\r
- IIC_Master_Receive(0xC9, g_HSI2CBuf, 1);\r
- }\r
-\r
- IIC_Master_Receive(0xC9, g_HSI2CBuf, wLen+6);\r
- \r
- wRspLen = g_HSI2CBuf[0];\r
- wRspLen <<= 8;\r
- wRspLen |= g_HSI2CBuf[1];\r
- if(wRspLen != wLen+2)\r
- {\r
- return 2;\r
- }\r
- \r
- ComputeCRC(g_HSI2CBuf+2, wLen+2, crc);\r
- if((g_HSI2CBuf[wLen+4] != crc[0]) || (g_HSI2CBuf[wLen+5] != crc[1]))\r
- {\r
- return 1;\r
- }\r
-\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<wLen+2; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];\r
- }\r
- }\r
- if((g_HSI2CBuf[2+wLen] != 0x90) || (g_HSI2CBuf[3+wLen] != 0x00))//״̬×Ö\r
- {\r
- pData[0] = g_HSI2CBuf[2+wLen];\r
- pData[1] = g_HSI2CBuf[3+wLen];\r
-\r
- return 3;\r
- }\r
-\r
- lmemcpy(pData, g_HSI2CBuf+2, wLen);\r
-\r
- return 0;\r
-}\r
-\r
-\r
+#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<wLen; ++i)
+ {
+ pBuf[i] = byVal;
+ }
+ return ;
+}
+
+void lmemcpy(unsigned char *pDst, unsigned char *pSrc, unsigned short wLen)
+{
+ unsigned short i;
+
+ if((pSrc == pDst) || (wLen == 0))
+ {
+ return;
+ }
+
+ if(pSrc < pDst)
+ {
+ for(i = wLen-1; i != 0; --i)
+ {
+ pDst[i] = pSrc[i];
+ }
+ pDst[0] = pSrc[0];
+ }
+ else
+ {
+ for(i = 0; i < wLen; ++i)
+ {
+ pDst[i] = pSrc[i];
+ }
+ }
+
+ return ;
+}
+
+//相同返回0,不同返回1
+unsigned char lmemcmp(unsigned char *pBuf1, unsigned char *pBuf2, unsigned short wLen)
+{
+ unsigned short i;
+
+ for(i=0; i<wLen; ++i)
+ {
+ if(pBuf1[i] != pBuf2[i])
+ {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+void HS_IIC_Init(void)
+{
+ unsigned char ver[29];
+ unsigned char i;
+
+ gHSEncTransSign = 0x00;
+ lmemset(g_TransTmpKey, 0x00, 16);
+
+ g_HSI2CBuf = IIC_Master_Init();
+
+ g_HSI2CBuf[0] = 0x00;
+ g_HSI2CBuf[1] = 0x05;
+ g_HSI2CBuf[2] = 0x00;
+ g_HSI2CBuf[3] = 0xCA;
+ g_HSI2CBuf[4] = 0x00;
+ g_HSI2CBuf[5] = 0x00;
+ g_HSI2CBuf[6] = 0x00;
+ ComputeCRC(g_HSI2CBuf, 7, g_HSI2CBuf+7);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, 9);
+ if(0 != HS_IIC_Recv_Resp(ver, 29))//如果获取初值密钥指令执行异常,就用16字节FF进行加密通信
+ {
+ gHSEncTransSign = 0x01;
+ lmemset(g_TransTmpKey, 0xFF, 16);
+ return ;
+ }
+
+ if((ver[0] == 0x80) && (ver[1] == 0x10) && (ver[18] == 0x81) && (ver[19] == 0x02))//简单的检查一下数据格式内容
+ {
+ if((ver[20] != 0x10) || (ver[21] != 0x03))
+ {
+ gHSEncTransSign = 0x01;
+ for(i=0; i<16; ++i)
+ {
+ g_TransTmpKey[i] = ver[2+i] ^ g_DefTransKey[i];
+ }
+ }
+ }
+ else
+ {
+ gHSEncTransSign = 0x01;
+ lmemset(g_TransTmpKey, 0xFF, 16);
+ }
+}
+
+//发送: C8 + LEN(2) + { 命令及数据} ^ g_TransTmpKey + CRC
+//返回FALSE表示接收指令或数据CRC校验错误
+int HS_IIC_Send_Cmd(unsigned char *pData, unsigned short wLen)
+{
+ return IIC_Master_Send(0xC8, pData, wLen);
+}
+
+//接收: C9 + 55
+// C9 + LEN(2) + { 响应数据+ 状态字} ^ g_TransTmpKey + CRC
+
+//功能: 接收wLen长度的数据,到pData缓冲区中
+//返回:
+// 0 表示正确接收
+// 1 表示接收数据CRC错误
+// 2 表示实际接收数据长度域不是wLen
+// 3 表示指令返回状态字不是9000
+// 4 表示指令超时未响应
+unsigned char HS_IIC_Recv_Resp(unsigned char *pData, unsigned short wLen)
+{
+ unsigned short wRspLen;
+ unsigned char crc[2];
+ unsigned int dwCnt;
+ unsigned short i;
+
+
+ g_HSI2CBuf[0] = 0x00;
+ dwCnt = 0;
+ while(g_HSI2CBuf[0] != 0x55)
+ {
+ ++dwCnt;
+ if(dwCnt > 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<wLen+2; ++i)
+ {
+ g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];
+ }
+ }
+ if((g_HSI2CBuf[2+wLen] != 0x90) || (g_HSI2CBuf[3+wLen] != 0x00))//状态字
+ {
+ pData[0] = g_HSI2CBuf[2+wLen];
+ pData[1] = g_HSI2CBuf[3+wLen];
+
+ return 3;
+ }
+
+ lmemcpy(pData, g_HSI2CBuf+2, wLen);
+
+ return 0;
+}
+
+
-#ifndef __HS_PRIVATE_H__\r
-#define __HS_PRIVATE_H__\r
-\r
-\r
-\r
-extern unsigned char *g_HSI2CBuf;\r
-extern unsigned char gHSEncTransSign;\r
-extern unsigned char g_DefTransey[16];\r
-extern unsigned char g_TransTmpKey[16];\r
-\r
-\r
-//CRCµ¥×Ö½Ú¼ÆË㡪¡ªÑ»·×óÒÆ£¬ÏÈÒÆ×î¸ßbit\r
-extern unsigned short LeftShift_CRC(unsigned char byValue, unsigned short *lpwCrc);\r
-extern void ComputeCRC(unsigned char *Data, unsigned short Length, unsigned char *pbyOut);\r
-extern void lmemset(unsigned char *pBuf, unsigned char byVal, unsigned short wLen);\r
-extern void lmemcpy(unsigned char *pDst, unsigned char *pSrc, unsigned short wLen);\r
-extern unsigned char lmemcmp(unsigned char *pBuf1, unsigned char *pBuf2, unsigned short wLen);\r
-\r
-\r
-extern void HS_IIC_Init(void);\r
-extern int HS_IIC_Send_Cmd(unsigned char *pData, unsigned short wLen);\r
-extern unsigned char HS_IIC_Recv_Resp(unsigned char *pData, unsigned short wLen);\r
-\r
-extern void Delay_Ms(unsigned char byMilliSec);\r
-extern void Set_GPIO_State(unsigned char byState );\r
-\r
-#endif\r
+#ifndef __HS_PRIVATE_H__
+#define __HS_PRIVATE_H__
+
+
+
+extern unsigned char *g_HSI2CBuf;
+extern unsigned char gHSEncTransSign;
+extern unsigned char g_DefTransey[16];
+extern unsigned char g_TransTmpKey[16];
+
+
+//CRC单字节计算——循环左移,先移最高bit
+extern unsigned short LeftShift_CRC(unsigned char byValue, unsigned short *lpwCrc);
+extern void ComputeCRC(unsigned char *Data, unsigned short Length, unsigned char *pbyOut);
+extern void lmemset(unsigned char *pBuf, unsigned char byVal, unsigned short wLen);
+extern void lmemcpy(unsigned char *pDst, unsigned char *pSrc, unsigned short wLen);
+extern unsigned char lmemcmp(unsigned char *pBuf1, unsigned char *pBuf2, unsigned short wLen);
+
+
+extern void HS_IIC_Init(void);
+extern int HS_IIC_Send_Cmd(unsigned char *pData, unsigned short wLen);
+extern unsigned char HS_IIC_Recv_Resp(unsigned char *pData, unsigned short wLen);
+
+extern void Delay_Ms(unsigned char byMilliSec);
+extern void Set_GPIO_State(unsigned char byState );
+
+#endif
-\r
-#include "hs_private.h"\r
-#include "iotsec.h"\r
-\r
-//--------------------------------------------------------------------------\r
-//\r
-// °æ±¾V2.0.00\r
-//\r
-//--------------------------------------------------------------------------\r
-\r
-\r
-\r
-\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö »ñÈ¡¶ÁÈ¡×ʲúµÄÎļþ¾ä±ú\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö fd - ´æ·Å×ʲú¾ä±ú\r
- ¡ö asset_name - ×ʲúÃû×Ö\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_open_asset(void **fd, char asset_name[36])\r
-{\r
- unsigned char tmpBuf[10];\r
- unsigned char i;\r
- unsigned short j;\r
-\r
- for(i=0; i<36; ++i)\r
- {\r
- if(asset_name[i] == 0)\r
- {\r
- break;\r
- }\r
- }\r
-\r
- if((fd == 0) || (i == 0))\r
- {\r
- return CSI_ERROR;\r
- }\r
- \r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = i+5;\r
- g_HSI2CBuf[2] = 0x80;\r
- g_HSI2CBuf[3] = 0xE0;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = i;\r
- lmemcpy(g_HSI2CBuf+7, (unsigned char *)asset_name, i);\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(j=0; j<i+5; ++j)\r
- {\r
- g_HSI2CBuf[2+j] ^= g_TransTmpKey[j % 16];\r
- }\r
- }\r
- ComputeCRC(g_HSI2CBuf, i+7, g_HSI2CBuf+i+7);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, i+9);\r
- if(0 != HS_IIC_Recv_Resp(tmpBuf, 2))\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- *fd = (void*)(tmpBuf[0] * 256 + tmpBuf[1]); //ÎļþµØÖ·\r
- return CSI_OK;\r
-}\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö дÈëÖ¸¶¨µÄ×ʲú\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö fd - ´æ·Å×ʲú¾ä±ú\r
- ¡ö offset - ×ʲúÊý¾ÝÆ«ÒÆ\r
- ¡ö buffer - ´æ·Å×ʲúÊý¾Ý»º³åÇø\r
- ¡ö data_len - дÈë×ʲúÊý¾Ý¸öÊý\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_write_asset(void* fd,uint32_t offset,void *data,uint32_t data_len)\r
-{\r
- unsigned int dwBufOff;\r
- unsigned char abyBuf[10];\r
- unsigned short i;\r
-\r
- if(offset+data_len > 4096)\r
- {\r
- return CSI_ERROR;\r
- }\r
- if(data == 0)\r
- {\r
- return CSI_ERROR;\r
- }\r
- \r
- //Ïȸù¾ÝfdÑ¡ÔñÎļþ\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x07;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0xA4;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = 0x02;\r
- g_HSI2CBuf[7] = (unsigned char)((unsigned int)fd / 256);\r
- g_HSI2CBuf[8] = (unsigned int)fd % 256;\r
-\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<7; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 11);\r
- if(0 != HS_IIC_Recv_Resp(abyBuf, 2))\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- if(data_len == 0)\r
- {\r
- return CSI_OK;\r
- }\r
-\r
- dwBufOff = 0;\r
- while(data_len > 1024)\r
- {\r
- g_HSI2CBuf[0] = 0x04;\r
- g_HSI2CBuf[1] = 0x07;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0xd6;\r
- g_HSI2CBuf[4] = (unsigned char)(offset / 256);\r
- g_HSI2CBuf[5] = (unsigned char)(offset % 256);\r
- g_HSI2CBuf[6] = 0x00;\r
- g_HSI2CBuf[7] = 0x04;\r
- g_HSI2CBuf[8] = 0x00;\r
- lmemcpy(g_HSI2CBuf+9, (unsigned char *)data + dwBufOff, 1024);\r
- \r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<1031; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, 1033, g_HSI2CBuf+1033);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 1035);\r
- if(0 != HS_IIC_Recv_Resp(abyBuf, 0))\r
- {\r
- return CSI_ERROR;\r
- }\r
- offset += 1024;\r
- data_len -= 1024;\r
- dwBufOff += 1024;\r
- }\r
-\r
- g_HSI2CBuf[0] = (unsigned char)((data_len+7) / 256);\r
- g_HSI2CBuf[1] = (unsigned char)((data_len+7) % 256);\r
- g_HSI2CBuf[2] = 0x80;\r
- g_HSI2CBuf[3] = 0xd6;\r
- g_HSI2CBuf[4] = (unsigned char)(offset / 256);\r
- g_HSI2CBuf[5] = (unsigned char)(offset % 256);\r
- g_HSI2CBuf[6] = 0x00;\r
- g_HSI2CBuf[7] = (unsigned char)(data_len / 256);\r
- g_HSI2CBuf[8] = (unsigned char)(data_len % 256);\r
- lmemcpy(g_HSI2CBuf+9, (unsigned char *)data + dwBufOff, data_len);\r
-\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<data_len+7; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, data_len+9, g_HSI2CBuf+data_len+9);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, data_len+11);\r
- if(0 != HS_IIC_Recv_Resp(abyBuf, 0))\r
- {\r
- return CSI_ERROR;\r
- }\r
- \r
- return CSI_OK;\r
-}\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö ¶Áȡָ¶¨µÄ×ʲú\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö fd - ´æ·Å×ʲú¾ä±ú\r
- ¡ö offset - ×ʲúÊý¾ÝÆ«ÒÆ\r
- ¡ö buffer - ´æ·Å×ʲúÊý¾Ý»º³åÇø\r
- ¡ö data_len - ·µ»Ø¶ÁÈ¡×ʲúÊý¾Ý¸öÊý\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_read_asset(void* fd,uint32_t offset,void *buffer,uint32_t* data_len)\r
-{\r
- unsigned int dwOff;\r
- unsigned char abyBuf[10];\r
- unsigned short wFileLen;\r
- uint32_t dwTmpLen;\r
- unsigned short i;\r
-\r
- \r
- if(*data_len == 0)\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- if(buffer == 0)\r
- {\r
- return CSI_ERROR;\r
- }\r
- \r
-\r
- //Ïȸù¾ÝfdÑ¡ÔñÎļþ\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x07;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0xA4;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = 0x02;\r
- g_HSI2CBuf[7] = (unsigned char)((unsigned int)fd / 256);\r
- g_HSI2CBuf[8] = (unsigned int)fd % 256;\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<7; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 11);\r
- if(0 != HS_IIC_Recv_Resp(abyBuf, 2))\r
- {\r
- return CSI_ERROR;\r
- }\r
- wFileLen = abyBuf[0] * 256 + abyBuf[1];\r
-\r
- if(wFileLen == 0)\r
- {\r
- *data_len = 0;\r
- return CSI_ERROR;\r
- }\r
- \r
- if(offset >= wFileLen)\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- if(offset + *data_len > wFileLen)\r
- {\r
- *data_len = wFileLen - offset;\r
- }\r
-\r
- dwOff = 0;\r
- dwTmpLen = *data_len;\r
- while(dwTmpLen > 1024)\r
- {\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x07;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0xB0;\r
- g_HSI2CBuf[4] = (unsigned char)(offset / 256);\r
- g_HSI2CBuf[5] = (unsigned char)(offset % 256);\r
- g_HSI2CBuf[6] = 0x00;\r
- g_HSI2CBuf[7] = 0x04;\r
- g_HSI2CBuf[8] = 0x00;\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<7; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 11);\r
- if(0 == HS_IIC_Recv_Resp((unsigned char *)buffer + dwOff, 1024))\r
- {\r
- offset += 1024;\r
- dwOff += 1024;\r
- dwTmpLen -= 1024;\r
- }\r
- else\r
- {\r
- return CSI_ERROR;\r
- }\r
- }\r
-\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x07;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0xB0;\r
- g_HSI2CBuf[4] = (unsigned char)(offset / 256);\r
- g_HSI2CBuf[5] = (unsigned char)(offset % 256);\r
- g_HSI2CBuf[6] = 0x00;\r
- g_HSI2CBuf[7] = (unsigned char)(dwTmpLen / 256);\r
- g_HSI2CBuf[8] = (unsigned char)(dwTmpLen % 256);\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<7; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
- ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 11);\r
- if(0 != HS_IIC_Recv_Resp((unsigned char *)buffer + dwOff, dwTmpLen))\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- return CSI_OK;\r
-}\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö ¹Ø±ÕÖ¸¶¨µÄ×ʲú¾ä±ú\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö fd - ´æ·Å×ʲú¾ä±ú\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_close_asset(void* fd)\r
-{\r
- unsigned char abySW[2];\r
- unsigned char i;\r
-\r
- \r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x07;\r
- g_HSI2CBuf[2] = 0x80;\r
- g_HSI2CBuf[3] = 0xA6;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = 0x02;\r
- g_HSI2CBuf[7] = (unsigned char)((unsigned int)fd / 256);\r
- g_HSI2CBuf[8] = (unsigned int)fd % 256;\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<7; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, 9, g_HSI2CBuf+9);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 11);\r
- if(0 != HS_IIC_Recv_Resp(abySW, 0))\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- return CSI_OK;\r
-}\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö È·ÈÏÖ¸¶¨µÄ×ʲúÊÇ·ñ¿É·ÃÎÊ\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö access-flag - ×ʲú·ÃÎʽá¹û±êʶ: ×ʲú´æÔÚÉèÖÃΪ1£¬×ʲú²»´æÔÚÉèÖÃΪ0\r
- ¡ö asset_name - ×ʲúÃû×Ö\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_access_asset(uint32_t *access_flag, char asset_name[36])\r
-{\r
- unsigned char i;\r
- unsigned char abyBuf[10];\r
- unsigned short j;\r
-\r
- for(i=0; i<36; ++i)\r
- {\r
- if(asset_name[i] == 0)\r
- {\r
- break;\r
- }\r
- }\r
- if(i == 0)\r
- {\r
- return CSI_ERROR;\r
- }\r
- \r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = i+5;\r
- g_HSI2CBuf[2] = 0x80;\r
- g_HSI2CBuf[3] = 0xA4;\r
- g_HSI2CBuf[4] = 0x04;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = i;\r
- lmemcpy(g_HSI2CBuf+7, (unsigned char *)asset_name, i);\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(j=0; j<i+5; ++j)\r
- {\r
- g_HSI2CBuf[2+j] ^= g_TransTmpKey[j % 16];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, i+7, g_HSI2CBuf+i+7);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, i+9);\r
- abyBuf[0] = 0x00;\r
- abyBuf[1] = 0x00;\r
- if(0 != HS_IIC_Recv_Resp(abyBuf, 0))\r
- {\r
- if((abyBuf[0] == 0x6A) && (abyBuf[1] == 0x82))\r
- {\r
- *access_flag = 0;\r
- return CSI_OK;\r
- }\r
- return CSI_ERROR;\r
- }\r
-\r
- *access_flag = 1;\r
-\r
- return CSI_OK;\r
-}\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö Çå³ýÖ¸¶¨µÄ×ʲú\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö asset_name - ×ʲúÃû×Ö\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_remove_asset(char asset_name[36])\r
-{\r
- unsigned char i;\r
- unsigned char abySW[2];\r
- unsigned short j;\r
-\r
- for(i=0; i<36; ++i)\r
- {\r
- if(asset_name[i] == 0)\r
- {\r
- break;\r
- }\r
- }\r
- if(i == 0)\r
- {\r
- return CSI_ERROR;\r
- }\r
- \r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = i+5;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0x0E;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = i;\r
- lmemcpy(g_HSI2CBuf+7, (unsigned char *)asset_name, i);\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(j=0; j<i+5; ++j)\r
- {\r
- g_HSI2CBuf[2+j] ^= g_TransTmpKey[j % 16];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, i+7, g_HSI2CBuf+i+7);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, i+9);\r
- if(0 != HS_IIC_Recv_Resp(abySW, 0))\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- return CSI_OK;\r
-}\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö Çå³ýËùÓÐ×ʲú\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö ÎÞ\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_clear_assets(void)\r
-{\r
- unsigned char abySW[2];\r
- unsigned char i;\r
-\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x05;\r
- g_HSI2CBuf[2] = 0x80;\r
- g_HSI2CBuf[3] = 0x0E;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = 0x00;\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<5; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
- ComputeCRC(g_HSI2CBuf, 7, g_HSI2CBuf+7);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 9);\r
- if(0 != HS_IIC_Recv_Resp(abySW, 0))\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- return CSI_OK;\r
-}\r
-\r
-\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö »ñÈ¡°²È«Ð¾Æ¬¹Ì¼þ°æ±¾ºÅ\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö ver - ´æ·Å°æ±¾ºÅbuffer\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_get_fw_version(char ver[8])\r
-{\r
- unsigned char i;\r
-\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x05;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0xBC;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = 0x08;\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<5; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
- ComputeCRC(g_HSI2CBuf, 7, g_HSI2CBuf+7);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 9);\r
- if(0 != HS_IIC_Recv_Resp((unsigned char *)ver, 8))\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- return CSI_OK;\r
-\r
-}\r
-\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö ϵͳ½øÈëµÍ¹¦ºÄģʽ\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö ctx - ±£´æ½øÈëµÍ¹¦ºÄǰµÄÐèÒª±£´æµÄÉÏÏÂÎÄ\r
- ¡ð ·µ»ØÖµ\r
- ¡ö ÎÞ*/\r
-void csi_enter_lpm(void *ctx)\r
-{\r
- unsigned char abySW[2];\r
- unsigned char i;\r
-\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x0C;\r
- g_HSI2CBuf[2] = 0x80;\r
- g_HSI2CBuf[3] = 0xFB;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = 0x07;\r
-\r
- g_HSI2CBuf[7] = 0x53;\r
- g_HSI2CBuf[8] = 0x54;\r
- g_HSI2CBuf[9] = 0x41;\r
- g_HSI2CBuf[10] = 0x4E;\r
- g_HSI2CBuf[11] = 0x44;\r
- g_HSI2CBuf[12] = 0x42;\r
- g_HSI2CBuf[13] = 0x59;\r
-\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<12; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, 14, g_HSI2CBuf+14);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, 16);\r
- if(0 != HS_IIC_Recv_Resp(abySW, 0))\r
- {\r
- return ;\r
- }\r
-\r
- Delay_Ms(30);\r
-\r
- return ;\r
-}\r
-\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö ϵͳÍ˳öµÍ¹¦ºÄģʽ\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö ctx - ±£´æ½øÈëµÍ¹¦ºÄǰµÄÐèÒª±£´æµÄÉÏÏÂÎÄ\r
- ¡ð ·µ»ØÖµ\r
- ¡ö ÎÞ*/\r
-int csi_exit_lpm(void *ctx)\r
-{\r
- unsigned char abyVer[8];\r
- unsigned char i;\r
- int ret = 0;\r
-\r
- g_HSI2CBuf[0] = 0x00;\r
- g_HSI2CBuf[1] = 0x05;\r
- g_HSI2CBuf[2] = 0x00;\r
- g_HSI2CBuf[3] = 0xBC;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = 0x00;\r
- g_HSI2CBuf[6] = 0x08;\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<5; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];\r
- }\r
- }\r
- ComputeCRC(g_HSI2CBuf, 7, g_HSI2CBuf+7);\r
-\r
- for(i=0; i<3; ++i)\r
- {\r
- Set_GPIO_State(0);\r
-\r
- Delay_Ms(1);\r
-\r
- Set_GPIO_State(1);\r
-\r
- Delay_Ms(15);\r
-\r
- ret = HS_IIC_Send_Cmd(g_HSI2CBuf, 9);\r
- if(0 == HS_IIC_Recv_Resp(abyVer, 8))\r
- {\r
- if((abyVer[0] == 'V') && (abyVer[2] == '.'))\r
- {\r
- return ret;\r
- }\r
- }\r
- }\r
- \r
- return ret;\r
-}\r
-\r
-\r
-/*¡ð ¹¦ÄÜÃèÊö\r
- ¡ö ·¢ËÍÇëÇó¸øSEÇÒͬ²½´¦ÀíÓû§ÃüÁî\r
- ¡ð ½Ó¿Ú²ÎÊý\r
- ¡ö req - ÃüÁîÇëÇóÊý¾Ý°ü\r
- ¡ö req_len - ÃüÁîÇëÇóÊý¾Ý°ü³¤¶È\r
- ¡ö rsp - ÃüÁîÏìÓ¦Êý¾Ý°ü\r
- ¡ö rsp_len - ÃüÁîÏìÓ¦Êý¾Ý°ü³¤¶È\r
- ¡ð ·µ»ØÖµ\r
- ¡ö 0±íʾ³É¹¦£¬·Ç0±íʾʧ°Ü*/\r
-csi_error_t csi_user_cmd_process_sync(void *req, unsigned int req_len, void *rsp, unsigned int *rsp_len)\r
-{\r
- unsigned short i;\r
- unsigned short wRspLen;\r
- unsigned char crc[2];\r
- unsigned int dwCnt;\r
-\r
- if(req_len > 1024)\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- g_HSI2CBuf[0] = (unsigned char)((req_len+5) / 256);\r
- g_HSI2CBuf[1] = (unsigned char)((req_len+5) % 256);\r
- g_HSI2CBuf[2] = 0x80;\r
- g_HSI2CBuf[3] = 0xC2;\r
- g_HSI2CBuf[4] = 0x00;\r
- g_HSI2CBuf[5] = (unsigned char)(req_len / 256);\r
- g_HSI2CBuf[6] = (unsigned char)(req_len % 256);\r
- lmemcpy(g_HSI2CBuf+7, (unsigned char *)req, req_len);\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<req_len+5; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];\r
- }\r
- }\r
-\r
- ComputeCRC(g_HSI2CBuf, req_len+7, g_HSI2CBuf+req_len+7);\r
- HS_IIC_Send_Cmd(g_HSI2CBuf, req_len+9);\r
-\r
-\r
- g_HSI2CBuf[0] = 0x00;\r
- dwCnt = 0;\r
- while(g_HSI2CBuf[0] != 0x55)\r
- {\r
- ++dwCnt;\r
- if(dwCnt > 0x1000)\r
- {\r
- return CSI_ERROR;\r
- }\r
- IIC_Master_Receive(0xC9, g_HSI2CBuf, 1);\r
- }\r
-\r
- IIC_Master_Receive(0xC9, g_HSI2CBuf, 256);\r
- wRspLen = g_HSI2CBuf[0];\r
- wRspLen <<= 8;\r
- wRspLen |= g_HSI2CBuf[1];\r
- \r
- ComputeCRC(g_HSI2CBuf+2, wRspLen, crc);\r
- if((g_HSI2CBuf[wRspLen+2] != crc[0]) || (g_HSI2CBuf[wRspLen+3] != crc[1]))\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- if(gHSEncTransSign == 0x01)\r
- {\r
- for(i=0; i<wRspLen; ++i)\r
- {\r
- g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];\r
- }\r
- }\r
- if((g_HSI2CBuf[wRspLen] != 0x90) || (g_HSI2CBuf[1+wRspLen] != 0x00))//״̬×Ö\r
- {\r
- return CSI_ERROR;\r
- }\r
-\r
- *rsp_len = wRspLen-2;\r
- lmemcpy(rsp, g_HSI2CBuf+2, wRspLen-2);\r
- \r
- return CSI_OK;\r
-}\r
-\r
+
+#include "hs_private.h"
+#include "iotsec.h"
+
+//--------------------------------------------------------------------------
+//
+// 版本V2.0.00
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+/*○ 功能描述
+ ■ 获取读取资产的文件句柄
+ ○ 接口参数
+ ■ fd - 存放资产句柄
+ ■ asset_name - 资产名字
+ ○ 返回值
+ ■ 0表示成功,非0表示失败*/
+csi_error_t csi_open_asset(void **fd, char asset_name[36])
+{
+ unsigned char tmpBuf[10];
+ unsigned char i;
+ unsigned short j;
+
+ for(i=0; i<36; ++i)
+ {
+ if(asset_name[i] == 0)
+ {
+ break;
+ }
+ }
+
+ if((fd == 0) || (i == 0))
+ {
+ return CSI_ERROR;
+ }
+
+ g_HSI2CBuf[0] = 0x00;
+ g_HSI2CBuf[1] = i+5;
+ g_HSI2CBuf[2] = 0x80;
+ g_HSI2CBuf[3] = 0xE0;
+ g_HSI2CBuf[4] = 0x00;
+ g_HSI2CBuf[5] = 0x00;
+ g_HSI2CBuf[6] = i;
+ lmemcpy(g_HSI2CBuf+7, (unsigned char *)asset_name, i);
+ if(gHSEncTransSign == 0x01)
+ {
+ for(j=0; j<i+5; ++j)
+ {
+ g_HSI2CBuf[2+j] ^= g_TransTmpKey[j % 16];
+ }
+ }
+ ComputeCRC(g_HSI2CBuf, i+7, g_HSI2CBuf+i+7);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, i+9);
+ if(0 != HS_IIC_Recv_Resp(tmpBuf, 2))
+ {
+ return CSI_ERROR;
+ }
+
+ *fd = (void*)(tmpBuf[0] * 256 + tmpBuf[1]); //文件地址
+ return CSI_OK;
+}
+
+/*○ 功能描述
+ ■ 写入指定的资产
+ ○ 接口参数
+ ■ fd - 存放资产句柄
+ ■ offset - 资产数据偏移
+ ■ buffer - 存放资产数据缓冲区
+ ■ data_len - 写入资产数据个数
+ ○ 返回值
+ ■ 0表示成功,非0表示失败*/
+csi_error_t csi_write_asset(void* fd,uint32_t offset,void *data,uint32_t data_len)
+{
+ unsigned int dwBufOff;
+ unsigned char abyBuf[10];
+ unsigned short i;
+
+ if(offset+data_len > 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<data_len+7; ++i)
+ {
+ g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];
+ }
+ }
+
+ ComputeCRC(g_HSI2CBuf, data_len+9, g_HSI2CBuf+data_len+9);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, data_len+11);
+ if(0 != HS_IIC_Recv_Resp(abyBuf, 0))
+ {
+ return CSI_ERROR;
+ }
+
+ return CSI_OK;
+}
+
+/*○ 功能描述
+ ■ 读取指定的资产
+ ○ 接口参数
+ ■ fd - 存放资产句柄
+ ■ offset - 资产数据偏移
+ ■ buffer - 存放资产数据缓冲区
+ ■ data_len - 返回读取资产数据个数
+ ○ 返回值
+ ■ 0表示成功,非0表示失败*/
+csi_error_t csi_read_asset(void* fd,uint32_t offset,void *buffer,uint32_t* data_len)
+{
+ unsigned int dwOff;
+ unsigned char abyBuf[10];
+ unsigned short wFileLen;
+ uint32_t dwTmpLen;
+ unsigned short i;
+
+
+ if(*data_len == 0)
+ {
+ return CSI_ERROR;
+ }
+
+ if(buffer == 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;
+ }
+ wFileLen = abyBuf[0] * 256 + abyBuf[1];
+
+ if(wFileLen == 0)
+ {
+ *data_len = 0;
+ return CSI_ERROR;
+ }
+
+ if(offset >= 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<i+5; ++j)
+ {
+ g_HSI2CBuf[2+j] ^= g_TransTmpKey[j % 16];
+ }
+ }
+
+ ComputeCRC(g_HSI2CBuf, i+7, g_HSI2CBuf+i+7);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, i+9);
+ abyBuf[0] = 0x00;
+ abyBuf[1] = 0x00;
+ if(0 != HS_IIC_Recv_Resp(abyBuf, 0))
+ {
+ if((abyBuf[0] == 0x6A) && (abyBuf[1] == 0x82))
+ {
+ *access_flag = 0;
+ return CSI_OK;
+ }
+ return CSI_ERROR;
+ }
+
+ *access_flag = 1;
+
+ return CSI_OK;
+}
+
+/*○ 功能描述
+ ■ 清除指定的资产
+ ○ 接口参数
+ ■ asset_name - 资产名字
+ ○ 返回值
+ ■ 0表示成功,非0表示失败*/
+csi_error_t csi_remove_asset(char asset_name[36])
+{
+ unsigned char i;
+ unsigned char abySW[2];
+ 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] = 0x00;
+ g_HSI2CBuf[3] = 0x0E;
+ g_HSI2CBuf[4] = 0x00;
+ g_HSI2CBuf[5] = 0x00;
+ g_HSI2CBuf[6] = i;
+ lmemcpy(g_HSI2CBuf+7, (unsigned char *)asset_name, i);
+ if(gHSEncTransSign == 0x01)
+ {
+ for(j=0; j<i+5; ++j)
+ {
+ g_HSI2CBuf[2+j] ^= g_TransTmpKey[j % 16];
+ }
+ }
+
+ ComputeCRC(g_HSI2CBuf, i+7, g_HSI2CBuf+i+7);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, i+9);
+ if(0 != HS_IIC_Recv_Resp(abySW, 0))
+ {
+ return CSI_ERROR;
+ }
+
+ return CSI_OK;
+}
+
+/*○ 功能描述
+ ■ 清除所有资产
+ ○ 接口参数
+ ■ 无
+ ○ 返回值
+ ■ 0表示成功,非0表示失败*/
+csi_error_t csi_clear_assets(void)
+{
+ unsigned char abySW[2];
+ unsigned char i;
+
+ g_HSI2CBuf[0] = 0x00;
+ g_HSI2CBuf[1] = 0x05;
+ g_HSI2CBuf[2] = 0x80;
+ g_HSI2CBuf[3] = 0x0E;
+ g_HSI2CBuf[4] = 0x00;
+ g_HSI2CBuf[5] = 0x00;
+ g_HSI2CBuf[6] = 0x00;
+ if(gHSEncTransSign == 0x01)
+ {
+ for(i=0; i<5; ++i)
+ {
+ g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];
+ }
+ }
+ ComputeCRC(g_HSI2CBuf, 7, g_HSI2CBuf+7);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, 9);
+ if(0 != HS_IIC_Recv_Resp(abySW, 0))
+ {
+ return CSI_ERROR;
+ }
+
+ return CSI_OK;
+}
+
+
+
+/*○ 功能描述
+ ■ 获取安全芯片固件版本号
+ ○ 接口参数
+ ■ ver - 存放版本号buffer
+ ○ 返回值
+ ■ 0表示成功,非0表示失败*/
+csi_error_t csi_get_fw_version(char ver[8])
+{
+ unsigned char i;
+
+ g_HSI2CBuf[0] = 0x00;
+ g_HSI2CBuf[1] = 0x05;
+ g_HSI2CBuf[2] = 0x00;
+ g_HSI2CBuf[3] = 0xBC;
+ g_HSI2CBuf[4] = 0x00;
+ g_HSI2CBuf[5] = 0x00;
+ g_HSI2CBuf[6] = 0x08;
+ if(gHSEncTransSign == 0x01)
+ {
+ for(i=0; i<5; ++i)
+ {
+ g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];
+ }
+ }
+ ComputeCRC(g_HSI2CBuf, 7, g_HSI2CBuf+7);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, 9);
+ if(0 != HS_IIC_Recv_Resp((unsigned char *)ver, 8))
+ {
+ return CSI_ERROR;
+ }
+
+ return CSI_OK;
+
+}
+
+
+/*○ 功能描述
+ ■ 系统进入低功耗模式
+ ○ 接口参数
+ ■ ctx - 保存进入低功耗前的需要保存的上下文
+ ○ 返回值
+ ■ 无*/
+void csi_enter_lpm(void *ctx)
+{
+ unsigned char abySW[2];
+ unsigned char i;
+
+ g_HSI2CBuf[0] = 0x00;
+ g_HSI2CBuf[1] = 0x0C;
+ g_HSI2CBuf[2] = 0x80;
+ g_HSI2CBuf[3] = 0xFB;
+ g_HSI2CBuf[4] = 0x00;
+ g_HSI2CBuf[5] = 0x00;
+ g_HSI2CBuf[6] = 0x07;
+
+ g_HSI2CBuf[7] = 0x53;
+ g_HSI2CBuf[8] = 0x54;
+ g_HSI2CBuf[9] = 0x41;
+ g_HSI2CBuf[10] = 0x4E;
+ g_HSI2CBuf[11] = 0x44;
+ g_HSI2CBuf[12] = 0x42;
+ g_HSI2CBuf[13] = 0x59;
+
+ if(gHSEncTransSign == 0x01)
+ {
+ for(i=0; i<12; ++i)
+ {
+ g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];
+ }
+ }
+
+ ComputeCRC(g_HSI2CBuf, 14, g_HSI2CBuf+14);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, 16);
+ if(0 != HS_IIC_Recv_Resp(abySW, 0))
+ {
+ return ;
+ }
+
+ Delay_Ms(30);
+
+ return ;
+}
+
+
+/*○ 功能描述
+ ■ 系统退出低功耗模式
+ ○ 接口参数
+ ■ ctx - 保存进入低功耗前的需要保存的上下文
+ ○ 返回值
+ ■ 无*/
+int csi_exit_lpm(void *ctx)
+{
+ unsigned char abyVer[8];
+ unsigned char i;
+ int ret = 0;
+
+ g_HSI2CBuf[0] = 0x00;
+ g_HSI2CBuf[1] = 0x05;
+ g_HSI2CBuf[2] = 0x00;
+ g_HSI2CBuf[3] = 0xBC;
+ g_HSI2CBuf[4] = 0x00;
+ g_HSI2CBuf[5] = 0x00;
+ g_HSI2CBuf[6] = 0x08;
+ if(gHSEncTransSign == 0x01)
+ {
+ for(i=0; i<5; ++i)
+ {
+ g_HSI2CBuf[2+i] ^= g_TransTmpKey[i];
+ }
+ }
+ ComputeCRC(g_HSI2CBuf, 7, g_HSI2CBuf+7);
+
+ for(i=0; i<3; ++i)
+ {
+ Set_GPIO_State(0);
+
+ Delay_Ms(1);
+
+ Set_GPIO_State(1);
+
+ Delay_Ms(15);
+
+ ret = HS_IIC_Send_Cmd(g_HSI2CBuf, 9);
+ if(0 == HS_IIC_Recv_Resp(abyVer, 8))
+ {
+ if((abyVer[0] == 'V') && (abyVer[2] == '.'))
+ {
+ return ret;
+ }
+ }
+ }
+
+ return ret;
+}
+
+
+/*○ 功能描述
+ ■ 发送请求给SE且同步处理用户命令
+ ○ 接口参数
+ ■ req - 命令请求数据包
+ ■ req_len - 命令请求数据包长度
+ ■ rsp - 命令响应数据包
+ ■ rsp_len - 命令响应数据包长度
+ ○ 返回值
+ ■ 0表示成功,非0表示失败*/
+csi_error_t csi_user_cmd_process_sync(void *req, unsigned int req_len, void *rsp, unsigned int *rsp_len)
+{
+ unsigned short i;
+ unsigned short wRspLen;
+ unsigned char crc[2];
+ unsigned int dwCnt;
+
+ if(req_len > 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<req_len+5; ++i)
+ {
+ g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];
+ }
+ }
+
+ ComputeCRC(g_HSI2CBuf, req_len+7, g_HSI2CBuf+req_len+7);
+ HS_IIC_Send_Cmd(g_HSI2CBuf, req_len+9);
+
+
+ g_HSI2CBuf[0] = 0x00;
+ dwCnt = 0;
+ while(g_HSI2CBuf[0] != 0x55)
+ {
+ ++dwCnt;
+ if(dwCnt > 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<wRspLen; ++i)
+ {
+ g_HSI2CBuf[2+i] ^= g_TransTmpKey[i % 16];
+ }
+ }
+ if((g_HSI2CBuf[wRspLen] != 0x90) || (g_HSI2CBuf[1+wRspLen] != 0x00))//状态字
+ {
+ return CSI_ERROR;
+ }
+
+ *rsp_len = wRspLen-2;
+ lmemcpy(rsp, g_HSI2CBuf+2, wRspLen-2);
+
+ return CSI_OK;
+}
+