${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/ui/frameworks
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/ui/innerkits
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/events
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
+ ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/components
+
+ ${ROOT_DIR}/open_source/openharmony/third_party/qrcodegen/cpp
+
${ROOT_DIR}/zhihui/services/factorytest_service
${ROOT_DIR}/zhihui/drivers/
${ROOT_DIR}/zhihui/4g/cat1Service/include
--- /dev/null
+# 产测二维码功能说明
+
+## 功能概述
+在产测功能中添加了一个二维码界面,可以显示产测结果的二维码,方便扫码获取产测信息。
+
+## 实现文件
+- `include/testQRCode.h` - 二维码视图头文件
+- `src/testQRCode.cpp` - 二维码视图实现文件
+
+## 功能特点
+1. **自动生成二维码内容**:包含设备信息、当前时间和测试结果
+2. **居中显示**:二维码在屏幕中央显示,大小为280x280像素
+3. **实时更新**:二维码内容会根据当前的测试结果动态更新
+4. **易于扫描**:使用低纠错级别,确保二维码清晰易读
+
+## 二维码内容格式
+```
+FD230产测结果
+设备: FD230
+时间: HH:MM:SS
+测试结果:
+LCD未测试
+Touch_Panel未测试
+Magnetic未测试
+...
+```
+
+## 使用方法
+1. 在产测主界面中,点击"QRCode"按钮
+2. 系统会显示包含当前产测结果的二维码
+3. 使用手机或其他设备扫描二维码
+4. 获取产测结果信息
+
+## 技术实现
+- 使用`UIQrcode`组件显示二维码
+- 通过`testModel::GetSummaryString()`获取测试结果
+- 使用`uapi_get_HHMMSS_Time()`获取当前时间
+- 二维码内容使用UTF-8编码,支持中文显示
+
+## 注意事项
+1. 二维码内容长度有限制,过长的内容可能无法正常显示
+2. 建议在测试完成后查看二维码,以获取完整的测试结果
+3. 二维码的纠错级别设置为LOW,确保在有限空间内显示更多信息
+
+## 扩展功能
+可以根据需要扩展二维码内容,例如:
+- 添加设备序列号
+- 添加固件版本信息
+- 添加测试人员信息
+- 添加测试环境参数
UILabelButtonExt* labelButton_next = nullptr;
bool initViewStatus{false};
UILabel *Title{nullptr}; // 标题
-
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
bool initViewStatus{false};
UILabelButtonExt* labelButton_next = nullptr;
UILabel *Title{nullptr}; // 标题
+
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
bool SetResult(std::string viewIdstr);
test_status_enum GetResult(int viewId);
std::string GetSummaryString();
- std::string GetViewId(int viewid);
+ std::string GetTestItemDescription(int viewid);
private:
// pressuretest,\r
PRESSURETEST,\r
OLDTEST,\r
+ QRCODE, // 添加二维码视图\r
DEEPSLEEP,\r
\r
shutdown,\r
--- /dev/null
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-01-27 10:00:00
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-01-27 10:00:00
+ * @FilePath: /FD230/code/sdk/zhihui/UI/producttest/include/testQRCode.h
+ * @Description: 产测二维码视图头文件
+ */
+#ifndef TEST_QRCODE_VIEW_H
+#define TEST_QRCODE_VIEW_H
+
+#include "View.h"
+#include "components/ui_scroll_view.h"
+#include "components/ui_label.h"
+#include "components/ui_qrcode.h"
+#include "producttest/include/testPresenter.h"
+#include <iostream>
+
+namespace OHOS
+{
+ class testQRCodeView
+ {
+ public:
+ testQRCodeView();
+ virtual ~testQRCodeView();
+ static testQRCodeView *GetInstance(void);
+
+ UIScrollView *testQRCodeInitIView(uint8_t);
+ void ClearAll(void);
+
+ private:
+ bool testQRCodeScrollViewInit(uint8_t id);
+ std::string GenerateQRCodeContent();
+ UIScrollView *testQRCodeScrollView{nullptr};
+ bool initViewStatus{false};
+ UILabel *Title{nullptr}; // 标题
+ UIQrcode *QRCodeView{nullptr}; // 二维码视图
+ };
+}
+
+#endif
UILabel *Title{nullptr}; // 标题
bool initViewStatus{false};
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
bool initViewStatus{false};
UILabelButtonExt* labelButton_next = nullptr;
UILabel *Title{nullptr}; // 标题
+
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
#include "producttest/include/testbt.h"\r
#include "producttest/include/testSEChipTest.h"\r
#include "producttest/include/testPing.h"\r
+#include "producttest/include/testQRCode.h"\r
#ifdef SUPPORT_GNSS\r
#include "producttest/include/testGPS.h"\r
#endif\r
bool ChangeBTTESTView(int16_t thisView);\r
bool ChangeSEChipTESTView(int16_t thisView);\r
bool ChangePingTESTView(int16_t thisView);\r
+ bool ChangeQRCodeTESTView(int16_t thisView);\r
#ifdef SUPPORT_GNSS\r
bool ChangeGPSTESTView(int16_t thisView);\r
#endif\r
void ChangeView(int16_t hideView, int16_t showView);\r
UIScrollView *GetSystemScrollView(int ViewId);\r
\r
- void AddResultButtons(UIScrollView *scrollView, int16_t viewId);\r
-\r
+ bool AddResultButtons(UIScrollView *scrollView, int16_t viewId,UILabelButton*&oktestBtn,UILabelButton*&failtestBtn);\r
private:\r
void InitIView(void);\r
void initView_ext(int x, int y, int w, int h, int interval, const char *imagsrc);\r
\r
testSEChipView *test_SEChip_view{nullptr};\r
testPingView *test_Ping_view{nullptr};\r
+ testQRCodeView *test_QRCode_view{nullptr};\r
#ifdef SUPPORT_GNSS\r
testGPSView *test_GPS_view{nullptr};\r
#endif\r
bool initViewStatus{false};
UILabel *Title{nullptr}; // 标题
-
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
bool initViewStatus{false};
UILabel *Title{nullptr}; // 标题
UILabelButtonExt* button{NULL};
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
UILabel *charnge_label{nullptr}; // 标题
UILabelButtonExt* labelButton_next = nullptr;
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
UILabel *z{nullptr}; // "固件版本"
UILabelButtonExt* labelButton_next = nullptr;
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
bool initViewStatus{false};
UILabelButtonExt* labelButton_next = nullptr;
UILabel *Title{nullptr}; // 标题
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
UILabelButtonExt* labelButton_next = nullptr;
UILabel *Title{nullptr}; // 标题
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
#include "components/ui_label.h"
#include "components/ui_label_ext.h"
#include "components/ui_image_view.h"
+#include "components/ui_label_button_ext.h"
#include "producttest/include/testmagnetic.h"
#ifdef FD230
#include "CompassModel.h"
#endif
-#include "components/ui_label_button_ext.h"
//#include "cmsis_os.h"
#include <iostream>
UILabel *z{nullptr}; // "固件版本"
UILabelButtonExt* labelButton_next = nullptr;
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
#endif
bool initViewStatus{false};
UILabel *Title{nullptr}; // 标题
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
UILabelButtonExt* button[2]{NULL};
bool initViewStatus{false};
UILabel *Title{nullptr}; // 标题
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
UILabelButtonExt* labelButton_next = nullptr;
UILabelButtonExt* button[2]{NULL};
UILabel *Title{nullptr}; // 标题
+
+ // 添加成功失败按钮
+ UILabelButton *oktestBtn{nullptr};
+ UILabelButton *failtestBtn{nullptr};
};
}
#endif
\ No newline at end of file
delete GPSbutton[1];
GPSbutton[1]=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
testGPSScrollView->SetTouchable(true);
testGPSScrollView->SetDraggable(true);
+
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testGPSScrollView, GPS_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(GPS_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
uint32_t tick;
osStatus_t retTimer;
GPS_TEST_timer = osTimerNew((osTimerFunc_t)gpsdataTimerCallBackproc, osTimerPeriodic, NULL, NULL);
#include "producttest/include/testPresenter.h"
#include "producttest/include/testLCD.h"
#include "producttest/include/testView.h"
+#include "producttest/include/testModel.h"
#include "cmsis_os2.h"
#include "custom_runtime.h"
#ifdef __cplusplus
// } else {
// // WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");
// }
+ /////////////////////////
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+ /////////////////////////////
delete testLCDScrollView;
testLCDScrollView=nullptr;
// }
-
+
+ testView::GetInstance()->AddResultButtons(testLCDScrollView,LCD_TEST,oktestBtn,failtestBtn);
+ // 获取测试项描述
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(LCD_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
return true;
}
return test_status_list[viewId].status;
}
- // è\8e·å\8f\96æ\8f\8fè¿°str
- std::string testModel::GetViewId(int viewId)
+ // è\8e·å\8f\96æµ\8bè¯\95项æ\8f\8fè¿°å\97符串
+ std::string testModel::GetTestItemDescription(int viewId)
{
if (viewId < 0 || viewId >= MAX_TEST_ITEM)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testModel::GetResult: viewId out of range");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testModel::GetTestItemDescription: viewId out of range");
return nullptr;
}
return test_status_list[viewId].test_result;
--- /dev/null
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-01-27 10:00:00
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-01-27 10:00:00
+ * @FilePath: /FD230/code/sdk/zhihui/UI/producttest/src/testQRCode.cpp
+ * @Description: 产测二维码视图实现文件
+ */
+#include "producttest/include/testQRCode.h"
+#include "producttest/include/testModel.h"
+#include "wearable_log.h"
+#include <string>
+
+namespace OHOS
+{
+ static testQRCodeView *g_pTestQRCodeView{nullptr};
+
+ testQRCodeView::testQRCodeView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "testQRCodeView::testQRCodeView");
+ g_pTestQRCodeView = this;
+ }
+
+ testQRCodeView::~testQRCodeView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "testQRCodeView::~testQRCodeView");
+ ClearAll();
+ g_pTestQRCodeView = nullptr;
+ }
+
+ testQRCodeView *testQRCodeView::GetInstance(void)
+ {
+ return g_pTestQRCodeView;
+ }
+
+ void testQRCodeView::ClearAll(void)
+ {
+ if (testQRCodeScrollView)
+ {
+ testQRCodeScrollView->RemoveAll();
+ delete testQRCodeScrollView;
+ testQRCodeScrollView = nullptr;
+ }
+ if (Title)
+ {
+ delete Title;
+ Title = nullptr;
+ }
+ if (QRCodeView)
+ {
+ delete QRCodeView;
+ QRCodeView = nullptr;
+ }
+ initViewStatus = false;
+ }
+
+ UIScrollView *testQRCodeView::testQRCodeInitIView(uint8_t id)
+ {
+ if (initViewStatus)
+ {
+ return testQRCodeScrollView;
+ }
+
+ if (!testQRCodeScrollViewInit(id))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testQRCodeScrollViewInit failed");
+ return nullptr;
+ }
+
+ initViewStatus = true;
+ return testQRCodeScrollView;
+ }
+
+ bool testQRCodeView::testQRCodeScrollViewInit(uint8_t id)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "testQRCodeView::testQRCodeScrollViewInit");
+
+ // 创建滚动视图
+ testQRCodeScrollView = new UIScrollView();
+ if (testQRCodeScrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testQRCodeScrollView new failed");
+ return false;
+ }
+ testQRCodeScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ testQRCodeScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ testQRCodeScrollView->SetTouchable(true);
+ testQRCodeScrollView->SetDraggable(true);
+
+ // 创建标题
+ Title = new UILabel();
+ if (Title == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Title new failed");
+ return false;
+ }
+ Title->SetPosition(0, 20, Screen::GetInstance().GetWidth(), 40);
+ Title->SetText("产测二维码");
+ Title->SetStyle(STYLE_TEXT_FONT, 30);
+ Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ testQRCodeScrollView->Add(Title);
+
+ // 创建二维码视图
+ QRCodeView = new UIQrcode();
+ if (QRCodeView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QRCodeView new failed");
+ return false;
+ }
+
+ // 设置二维码位置和大小(居中显示)
+ int qrSize = 280;
+ int qrX = (Screen::GetInstance().GetWidth() - qrSize) / 2;
+ int qrY = 100;
+ QRCodeView->SetPosition(qrX, qrY, qrSize, qrSize);
+ QRCodeView->SetECCLevel(QrCode::Ecc::LOW);
+ QRCodeView->SetAutoEnable(false);
+ QRCodeView->SetResizeMode(UIImageView::ImageResizeMode::CENTER);
+
+ // 获取产测结果汇总字符串并设置为二维码内容
+ std::string qrContent = GenerateQRCodeContent();
+ QRCodeView->SetQrcodeInfo(qrContent.c_str());
+
+ testQRCodeScrollView->Add(QRCodeView);
+
+ return true;
+ }
+
+ std::string testQRCodeView::GenerateQRCodeContent()
+ {
+ std::string qrContent = "产测结果\n";
+
+ // 添加设备信息
+ qrContent += "设备: FD230\n";
+ qrContent += "时间: ";
+
+ // 获取当前时间
+ char current_time[9];
+ if (uapi_get_HHMMSS_Time(current_time, ':', true) == ERRCODE_SUCC)
+ {
+ qrContent += current_time;
+ }
+ qrContent += "\n";
+
+ // 添加测试结果
+ std::string testSummary = testModel::GetInstance()->GetSummaryString();
+ if (!testSummary.empty())
+ {
+ qrContent += "测试结果:\n";
+ qrContent += testSummary;
+ }
+ else
+ {
+ qrContent += "暂无测试结果";
+ }
+
+ return qrContent;
+ }
+}
delete efuse_label;
efuse_label=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
Title= testAboutView::GetInstance()->init_title(142,40,"SEChip_TEST");
testSEChipScrollView->Add(Title);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testSEChipScrollView, APPI_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(APPI_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 0) {
// uapi_pm_add_sleep_veto(PM_ID_P_TEST);
// } else {
// // WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");
// }
+
+ /////////////////////////
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+ /////////////////////////////
+
delete testTPScrollView;
testTPScrollView=nullptr;
+ testView::GetInstance()->AddResultButtons(testTPScrollView,TP_TEST,oktestBtn,failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(TP_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
return true;
}
{BTTEST, "BTbutton", "BT", "BTbutton_next", &testView::ChangeBTTESTView, true},\r
{SEChipTest, "SEChipTestbutton", "SEChipTest", "SEChipTestbutton_next", &testView::ChangeSEChipTESTView, true},\r
{PingTest, "PingTestbutton", "PingTest", "PingTestbutton_next", &testView::ChangePingTESTView, true},\r
+ {QRCODE, "QRCodeButton", "QRCode", "QRCodeButton_next", &testView::ChangeQRCodeTESTView, true},\r
#if defined(SUPPORT_GNSS)\r
{GPSTEST, "GPSTestbutton", "GPSTest", "GPSTestbutton_next", &testView::ChangeGPSTESTView, true},\r
#endif\r
}\r
}\r
}\r
- /////////////////////////\r
- if (oktestBtn)\r
- {\r
- delete oktestBtn;\r
- oktestBtn = nullptr;\r
- }\r
- if (failtestBtn)\r
- {\r
- delete failtestBtn;\r
- failtestBtn = nullptr;\r
- }\r
- /////////////////////////////\r
if (test_about_view)\r
{\r
delete test_about_view; // 1\r
if (SystemScrollView[i])\r
SystemScrollView[i] = nullptr;\r
}\r
+ if (test_Ping_view)\r
+ {\r
+ delete test_Ping_view; // PingTest\r
+ test_Ping_view = nullptr;\r
+ }\r
+ if (test_QRCode_view)\r
+ {\r
+ delete test_QRCode_view; // QRCode\r
+ test_QRCode_view = nullptr;\r
+ }\r
+#ifdef SUPPORT_GNSS\r
+ if (test_GPS_view)\r
+ {\r
+ delete test_GPS_view; // GPS\r
+ test_GPS_view = nullptr;\r
+ }\r
+#endif\r
}\r
\r
/// @brief 设置SystemScrollView\r
return true;\r
}\r
\r
- void testView::AddResultButtons(UIScrollView *scrollView, int16_t viewId)\r
+ bool testView::AddResultButtons(UIScrollView *scrollView, int16_t viewId,UILabelButton*&oktestBtn,UILabelButton*&failtestBtn)\r
{\r
if (scrollView == nullptr)\r
{\r
- return;\r
+ return false;\r
}\r
\r
printf("目前测试项id:%d",viewId);\r
if (oktestBtn == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitButtonExt is error");\r
- return; // 内存分配失败,返回false\r
+ return false; // 内存分配失败,返回false\r
}\r
oktestBtn->SetPosition(40, 80);\r
oktestBtn->Resize(135, 88);\r
if (failtestBtn == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitButtonExt is error");\r
- return; // 内存分配失败,返回false\r
+ return false; // 内存分配失败,返回false\r
}\r
failtestBtn->SetPosition(220, 80);\r
failtestBtn->Resize(135, 88);\r
test_status_enum status = testModel::GetInstance()->GetResult(viewId);\r
printf("目前该项的测试状态为:%d\n",status);\r
// 获取测试项描述\r
- std::string viewDesc = testModel::GetInstance()->GetViewId(viewId);\r
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(viewId);\r
printf("目前测试项的描述是:%s\n",viewDesc.c_str());\r
\r
if (oktestBtn)\r
\r
// 设置按钮标识\r
std::string okIdStr = "TestOK" + viewDesc;\r
- printf("设置 按键的viewId %s\n", okIdStr.c_str());\r
+ printf("设置成功按键的viewId %s\n", okIdStr.c_str());\r
oktestBtn->SetViewId(okIdStr.c_str());\r
- oktestBtn->SetOnClickListener(testPresenter::GetInstance());\r
+ UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(testPresenter::GetInstance());\r
+ oktestBtn->SetOnClickListener(clickListener);\r
scrollView->Add(oktestBtn);\r
}\r
\r
\r
// 设置按钮标识(修复了原代码中的错误)\r
std::string failIdStr = "TestNO" + viewDesc;\r
- printf("设置 按键的viewId %s\n", failIdStr.c_str());\r
+ printf("设置失败按键的viewId %s\n", failIdStr.c_str());\r
failtestBtn->SetViewId(failIdStr.c_str());\r
- failtestBtn->SetOnClickListener(testPresenter::GetInstance());\r
+ UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(testPresenter::GetInstance());\r
+ failtestBtn->SetOnClickListener(clickListener);\r
scrollView->Add(failtestBtn);\r
}\r
+\r
+ return true;\r
}\r
\r
/// @brief 设置按钮\r
return false;\r
}\r
SystemScrollView[thisView] = test_LCD_view->testLCDInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], LCD_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_TP_view->testTPInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], TP_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_MG_view->testmagicInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], MAGETIC_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_lum_view->testLUMInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], LUMINANCE_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_charging_view->testCHANINGInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], BAT_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_speak_view->testSPEAKInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], SPK_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_motor_view->testMOTORInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], MOTOR_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_cat1_view->testcat1InitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], CAT1_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
#endif\r
return false;\r
}\r
SystemScrollView[thisView] = test_MP_view->testmicrophoneInitIView(thisView);\r
- // AddResultButtons(SystemScrollView[thisView], thisView);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_hr_view->testhrsensonInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], HR_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_G_view->testGSENSONInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], GSENSOR_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_BT_view->testBTInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], BT_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
return false;\r
}\r
SystemScrollView[thisView] = test_SEChip_view->SEChipInitIView(thisView);\r
- AddResultButtons(SystemScrollView[thisView], APPI_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
{\r
if (SystemScrollView[thisView] == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSEChipTESTView");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangePingTESTView");\r
test_Ping_view = new testPingView();\r
if (test_Ping_view == nullptr)\r
{\r
}\r
return true;\r
}\r
+\r
+ bool testView::ChangeQRCodeTESTView(int16_t thisView)\r
+ {\r
+ if (SystemScrollView[thisView] == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeQRCodeTESTView");\r
+ test_QRCode_view = new testQRCodeView();\r
+ if (test_QRCode_view == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: new scrollView[%d] fail", thisView);\r
+ return false;\r
+ }\r
+ SystemScrollView[thisView] = test_QRCode_view->testQRCodeInitIView(thisView);\r
+ group->Add(SystemScrollView[thisView]);\r
+ }\r
+ return true;\r
+ }\r
+\r
#if defined(SUPPORT_GNSS)\r
bool testView::ChangeGPSTESTView(int16_t thisView)\r
{\r
return false;\r
}\r
SystemScrollView[thisView] = test_GPS_view->testGPSInitIView((uint8_t)thisView);\r
- AddResultButtons(SystemScrollView[thisView], GPS_TEST);\r
group->Add(SystemScrollView[thisView]);\r
}\r
\r
return false;\r
}\r
SystemScrollView[thisView] = test_pressure_view->testpressureInitIView((uint8_t)thisView);\r
- // AddResultButtons(SystemScrollView[thisView], thisView);\r
group->Add(SystemScrollView[thisView]);\r
}\r
\r
return false;\r
}\r
SystemScrollView[thisView] = test_A5133_view->testA5133InitIView(thisView);\r
- // AddResultButtons(SystemScrollView[thisView], thisView);\r
group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
Title=nullptr;
}
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
for(int i=0;i<5;i++)
{
if(label_BR_SCAN[i])
}
discovery_falg=false;
+
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testBTScrollView, BT_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(BT_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 0) {
// uapi_pm_add_sleep_veto(PM_ID_P_TEST);
delete Title;
Title=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
testcat1ScrollView->SetTouchable(true);
testcat1ScrollView->SetDraggable(true);
+
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testcat1ScrollView, CAT1_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(CAT1_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
uint32_t tick;
osStatus_t retTimer;
Gsenson_TEST_timer = osTimerNew((osTimerFunc_t)mgdataTimerCallBack, osTimerPeriodic, NULL, NULL);
charnge_label=nullptr;
}
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
// uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
charnge_label= testAboutView::GetInstance()->init_title(100,250,battery_buf);
testCHANINGScrollView->Add(charnge_label);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testCHANINGScrollView, BAT_TEST, oktestBtn, failtestBtn);
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(BAT_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 0) {
delete labelButton_next;
labelButton_next=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
// uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
testGsonsonScrollView->SetTouchable(true);
testGsonsonScrollView->SetDraggable(true);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testGsonsonScrollView, GSENSOR_TEST, oktestBtn, failtestBtn);
-
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(GSENSOR_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
return true;
}
delete Title;
Title=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
// uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
testhrsensonScrollView->SetTouchable(true);
testhrsensonScrollView->SetDraggable(true);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testhrsensonScrollView, HR_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(HR_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
#ifdef SUPPORT_PPG_SERVICE
int8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
send_ppg_cmd_msg(md);
delete Title;
Title=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
// uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
Title= testAboutView::GetInstance()->init_title(99,54,"BRIGHTNESS_TEST");
testLUMScrollView->Add(Title);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testLUMScrollView, LUMINANCE_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(LUMINANCE_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 0) {
// uapi_pm_add_sleep_veto(PM_ID_P_TEST);
delete labelButton_next;
labelButton_next=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
// uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
testmagicScrollView->SetTouchable(true);
testmagicScrollView->SetDraggable(true);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testmagicScrollView, MAGETIC_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(MAGETIC_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 0) {
// uapi_pm_add_sleep_veto(PM_ID_P_TEST);
delete Title;
Title=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
// uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
testmakephoneScrollView->SetTouchable(true);
testmakephoneScrollView->SetDraggable(true);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testmakephoneScrollView, MIC_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(MIC_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 0) {
// uapi_pm_add_sleep_veto(PM_ID_P_TEST);
delete Title;
Title=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
// uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
Title= testAboutView::GetInstance()->init_title(136,45,"MOTOR_TEST");
tesMOTORScrollView->Add(Title);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(tesMOTORScrollView, MOTOR_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(MOTOR_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 0) {
// uapi_pm_add_sleep_veto(PM_ID_P_TEST);
delete Title;
Title=nullptr;
}
+
+ // 清理成功失败按钮
+ if (oktestBtn)
+ {
+ delete oktestBtn;
+ oktestBtn = nullptr;
+ }
+ if (failtestBtn)
+ {
+ delete failtestBtn;
+ failtestBtn = nullptr;
+ }
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 1) {
// uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
testSPEAKScrollView->SetTouchable(true);
testSPEAKScrollView->SetDraggable(true);
+ // 添加成功失败按钮
+ testView::GetInstance()->AddResultButtons(testSPEAKScrollView, SPK_TEST, oktestBtn, failtestBtn);
+
+ // 重新设置viewId,使用对应的测试项ID
+ std::string viewDesc = testModel::GetInstance()->GetTestItemDescription(SPK_TEST);
+ std::string okIdStr = "TestOK" + viewDesc;
+ std::string failIdStr = "TestNO" + viewDesc;
+ oktestBtn->SetViewId(okIdStr.c_str());
+ failtestBtn->SetViewId(failIdStr.c_str());
+
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
// if (cnt == 0) {
// uapi_pm_add_sleep_veto(PM_ID_P_TEST);