--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-05-07 11:25:58
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-11-05 14:48:11
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateView.cpp
+ */
+
+#include "systemupdate/include/SystemUpdatePresenter.h"
+#include "systemupdate/include/SystemUpdateView.h"
+#include "wearable_log.h"
+#include "ui_resource_string.h"
+#include "ConfigModel.h"
+#include "systemupdate/include/SystemUpdateModel.h"
+#include "UiConfig.h"
+#include "custom_utils.h"
+#include "stdio.h"
+#include <iostream>
+#include <fstream>
+#include "cJSON.h"
+#include "ConfigModel.h"
+#include "lwip/err.h"
+#include "power_display_service.h"
+#include "cmsis_os2.h"
+#include "los_memory.h"
+#include "thread_init.h"
+#include "lwip/apps/http_client.h"
+#include "tcxo.h"
+#include "cat1_server.h"
+#include "linux/delay.h"
+#include "cat1_ctl.h"
+#include "cat1_server_hal.h"
+#include "bts_le_gap.h"
+#include "custom_http_download.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C"
+{
+#endif
+#endif
+ #include "pm_veto.h"
+ #include "pm.h"
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+
+#define OTA_UPDATA_TEST 0
+
+namespace OHOS
+{
+
+ static SystemUpdateView *g_pSystemUpdateView{nullptr};
+
+
+ static osThreadId_t g_alipay_task_handle = NULL;
+ //static char * imei_str="864430010001091";
+// osThreadAttr_t g_alipay_attr = {
+// "alipay_task", 0, NULL, 0, NULL, ALIPAT_MSG_STACK_SIZE, TASK_PRIORITY_ALIPAY_APP, 0, 0
+// };
+ static uint8_t uri[256] ={0};// (uint8_t*)
+ //"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=V1.1_20240316_115535&imei=864430010001091";
+
+ static char *Path_ota_package= UPDATAFWPKGPATH;
+ static uint8_t uri_ota_package[256] ={0};
+ static const char *imei_str=NULL;
+ static uint32_t file_total_len = 0;
+
+ static void LCD_auto_timeout(bool off)
+ {
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();
+ if (display_api->get_screen_state() != SCREEN_ON)
+ {
+ display_api->turn_on_screen();
+ }
+ //临时关闭自动息屏
+ //display_api->turn_off_screen();
+ // }else
+ // {
+ // display_api->turn_on_screen();
+ // }
+ display_api->set_auto_timeout_function(off);
+
+ }
+
+ static err_t httpc_download_headers_done_ui(httpc_state_t *connection, void *arg, struct pbuf *hdr, u16_t hdr_len, u32_t content_len)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "httpc_download_headers_done_ui hdrlen %d, file len %d\r\n",hdr_len,content_len);
+ file_total_len = content_len;
+ return 0;
+ }
+
+ static err_t httpc_download_file_recv_ui(httpc_state_t *connection, u32_t rx_len,u32_t rx_total_len)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "httpc_download_file_recv_ui recv %d bytes total received %d filelen %d\r\n",rx_len,rx_total_len,file_total_len);
+
+ SystemUpdateModel ::GetInstance().download_schedule_value= ((float)rx_total_len /(float)file_total_len) *100;
+ if(SystemUpdateView::GetInstance())
+ {
+ SystemUpdateView::GetInstance()->updatasider_back();
+ }
+ return 0;
+ }
+
+
+ static void httpc_download_result_ui(void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res, err_t err)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"httpc_download_result , httpc_result_t %d, rx_content_len %d , srv_res %d, err %d\n",
+ httpc_result,rx_content_len,srv_res,err);
+ LCD_auto_timeout(true);
+ SystemUpdateModel ::GetInstance().OTA_Update_msg_back(OTA_UPDATA_MSG_NEW_VER);
+ http_single_download_stop();
+ return ;
+ }
+
+ static void httpc_download_FWPKG_result_ui(void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res, err_t err)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"httpc_download_result , httpc_result_t %d, rx_content_len %d , srv_res %d, err %d\n",
+ httpc_result,rx_content_len,srv_res,err);
+
+ LCD_auto_timeout(true);
+ SystemUpdateModel ::GetInstance().OTA_Update_msg_back(OTA_UPDATA_MSG_FWKG);
+ http_single_download_stop();
+ return ;
+ }
+
+ static void httpc_download_result_report_data(void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res, err_t err)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"httpc_download_result , httpc_result_t %d, rx_content_len %d , srv_res %d, err %d\n",
+ httpc_result,rx_content_len,srv_res,err);
+ return ;
+ }
+
+ static void report_data_by_get_file(char *data,u16_t data_len)
+ {
+ return;
+ }
+
+ void upgrade_reported_data(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "");
+ FILE * fp = fopen(UPDATAREPORT,"rb+");
+ if(fp==NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "open_UPDATAREPORT_fail");
+ fclose(fp);
+ return;
+ }
+
+ char *buf=(char *)malloc(512);
+ memset((void*)buf,0,512);
+ int ret =fread(buf,1,512,fp);
+ int offset=512;
+ while (ret==512)
+ {
+ buf=(char *)realloc(buf,offset+512);
+ ret=fread(buf+offset,1,512,fp);
+ offset+=512;
+ }
+ // if(ret==0)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fread %d",ret);
+ // fclose(fp);
+ // free(buf);
+ // return;
+ // }
+ fclose(fp);
+ remove(UPDATAREPORT);
+
+ cJSON *data = cJSON_Parse(buf);
+
+ if(data!=NULL)
+ {
+ char *targetVersion=cJSON_GetObjectItem(data, "targetVersion")->valuestring;
+ char *taskId=cJSON_GetObjectItem(data, "updateId")->valuestring;
+ char version_buf[128]={0};
+ uint32_t version_len=128;
+ uapi_get_buildversion((uint8_t*)version_buf,version_len);
+ // if(strcmp(targetVersion,version_buf)==0)
+ // {
+ //HTTP_send_data
+ cJSON* dataJSON=cJSON_CreateObject();
+ char* imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",imei_str);
+
+ cJSON_AddStringToObject(dataJSON,"deviceId",imei_str);
+
+ cJSON_AddStringToObject(dataJSON,"companyId","");
+
+ cJSON_AddStringToObject(dataJSON,"createTime","");
+
+ cJSON_AddStringToObject(dataJSON,"id","");
+ if(strcmp(targetVersion,version_buf)==0)
+ {
+ cJSON_AddStringToObject(dataJSON,"result","1");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_ABLE_UPDTAT_SUCCESS;
+ }
+ else
+ {
+ cJSON_AddStringToObject(dataJSON,"result","0");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_ABLE_UPDTAT_FAIL;
+ }
+ SystemUpdateModel ::GetInstance().OTA_Update_msg_back(OTA_UPDATA_MSG_REPORT);
+
+ cJSON_AddStringToObject(dataJSON,"taskId",taskId);
+ cJSON_AddStringToObject(dataJSON,"updateTime","");
+ buf = cJSON_PrintUnformatted(dataJSON);
+ cJSON_Delete(dataJSON);
+ cJSON_free(buf);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%s",buf);
+ u16_t buf_len=strlen(buf);
+
+ report_data_by_get_file(buf,buf_len);
+
+ // }
+ }
+ cJSON_Delete(data);
+ }
+
+
+ static uint32_t custom_start_ota_download_ui( uint8_t *uri_str,uint8_t *Path,uint8_t falg,const char *server_name)
+ {
+
+ uint8_t *otadatapath = (uint8_t*)Path;
+ err_t rett;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"custom_start_ota_download %s to %s\r\n",uri_str,otadatapath);
+ LCD_auto_timeout(false);
+
+ FILE * fp= fopen((char *)Path,"rb");
+ if(fp!=NULL)
+ {
+ fclose(fp);
+ int ret= remove((char *)Path);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "file remove!!!!!!!!!!!!! %d ",ret);
+ }
+
+ if(falg==OTA_BUTTON_GET_VISON)
+ {
+ rett =http_single_download_start((uint8_t*)server_name,PORT,uri_str,otadatapath,
+ httpc_download_result_ui,httpc_download_headers_done_ui,NULL);
+ }
+ else if(falg==OTA_BUTTON_GET_ABLE_DOWNLOAD)
+ {
+ rett =http_single_download_start((uint8_t*)server_name,PORT,uri_str,otadatapath,
+ httpc_download_FWPKG_result_ui,httpc_download_headers_done_ui,httpc_download_file_recv_ui);
+ }
+
+ return rett;
+
+ }
+
+
+ static void start_get_updata_json(void)
+ {
+ memset(uri,0,256);
+ char Mac_str[32]={0};
+ char version_buf[32]={0};
+
+ bd_addr_t addr_info;
+ int ret = gap_ble_get_local_addr(&addr_info);
+
+ sprintf_s(Mac_str,32,"%02X%02X%02X%02X%02X%02X",addr_info.addr[5],addr_info.addr[4],addr_info.addr[3],
+ addr_info.addr[2],addr_info.addr[1],addr_info.addr[0]);
+
+ uint8_t _major,_mid,_minor;
+ uapi_get_fw_version(&_major,&_mid,&_minor);
+ sprintf_s(version_buf,32,"%d.%d.%d",_major,_mid,_minor);
+
+ #if OTA_UPDATA_TEST
+ sprintf((char *)uri,JSON_URL,"860132060347762","V1.1.14_20240706_182936_CT");
+ #else
+ sprintf((char *)uri,JSON_URL,Mac_str,version_buf);
+ #endif
+ custom_start_ota_download_ui(uri,(uint8_t*)UPDATAJSONPATH,OTA_BUTTON_GET_VISON,HTTP_JSON_SERVER_NAME);
+ }
+
+ static void start_get_updata_fwpkg(void)
+ {
+ if(ERRCODE_SUCC==custom_start_ota_download_ui(SystemUpdateModel ::GetInstance().uri_ota_package,(uint8_t*)UPDATAFWPKGPATH,OTA_BUTTON_GET_ABLE_DOWNLOAD,HTTP_FWPGK_SERVER_NAME))
+ {
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_DOWNLOADING;
+
+ }
+ }
+
+
+ SystemUpdateView::SystemUpdateView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::SystemUpdateView");
+ g_pSystemUpdateView = this;
+ }
+
+ SystemUpdateView::~SystemUpdateView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::~SystemUpdateView");
+ ClearAll();
+ g_pSystemUpdateView = nullptr;
+ }
+
+ SystemUpdateView *SystemUpdateView::GetInstance()
+ {
+ return g_pSystemUpdateView;
+ }
+
+ void SystemUpdateView::ClearAll(void)
+ {
+ if (SystemUpdateScrollView != nullptr)
+ {
+ SystemUpdateScrollView->RemoveAll();
+
+ delete Title;
+ Title = nullptr;
+
+ delete KUMILOGOImage;
+ KUMILOGOImage = nullptr;
+
+ delete LatestVersionLabel;
+ LatestVersionLabel = nullptr;
+
+ delete VersionIdLabel;
+ VersionIdLabel = nullptr;
+
+ delete UpdateNowLabel;
+ UpdateNowLabel = nullptr;
+
+ delete TryAgainLaterLabel;
+ TryAgainLaterLabel = nullptr;
+
+ delete UpdateNowButtton;
+ UpdateNowButtton = nullptr;
+
+ delete TryAgainLaterButton;
+ TryAgainLaterButton = nullptr;
+
+ delete updatasider;
+ updatasider = nullptr;
+
+ delete IMEIlabel;
+ IMEIlabel = nullptr;
+
+ delete CATlabel;
+ CATlabel = nullptr;
+
+
+ delete NEWMSGLabel;
+ NEWMSGLabel = nullptr;
+
+ delete NEWVersionIdLabel;
+ NEWVersionIdLabel = nullptr;
+
+
+ delete SystemUpdateScrollView;
+ SystemUpdateScrollView = nullptr;
+
+
+ }
+
+ if (NoNeedUpdateScrollView != nullptr)
+ {
+ NoNeedUpdateScrollView->RemoveAll();
+
+ delete NoNeedUpdateTitle;
+ NoNeedUpdateTitle = nullptr;
+
+ for (int i = 0; i < 2; i++)
+ {
+ delete NoNeedUpdateNote[i];
+ NoNeedUpdateNote[i] = nullptr;
+ }
+
+ delete NoNeedUpdateScrollView;
+ NoNeedUpdateScrollView = nullptr;
+ }
+ }
+ void SystemUpdateView::UpdateNowbutton_back(void)
+ {
+ uint8_t falg_id=SystemUpdateModel ::GetInstance().button_flag;
+ switch (falg_id)
+ {
+ case OTA_BUTTON_GET_VISON://开始获取升级
+ start_get_updata_json();
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON_ING;
+ break;
+ case OTA_BUTTON_GET_ABLE_DOWNLOAD://开始下载升级包
+ start_get_updata_fwpkg();
+ start_dwonload();
+ break;
+ case OTA_BUTTON_GET_ABLE_UPDTAT:
+ #if OTA_UPDATA_TEST
+ uapi_reboot_device();
+ #else
+ uaip_cmd_update_request();
+ #endif
+
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ void SystemUpdateView::start_dwonload()
+ {
+ NEWMSGLabel->SetText("正在下载");
+ //LatestVersionLabel->SetText("当前版本");
+ UpdateNowLabel->SetVisible(false);
+ UpdateNowButtton->SetVisible(false);
+
+ TryAgainLaterButton->SetVisible(false);
+ TryAgainLaterLabel->SetVisible(false);
+ //VersionIdLabel->SetText("OTA V4.0.0");
+ updatasider->SetVisible(true);
+ updatasider->SetValue(SystemUpdateModel ::GetInstance().download_schedule_value);
+ }
+
+ void SystemUpdateView:: updatasider_back()
+ {
+ //updatasider->SetVisible(true);
+ updatasider->SetValue(SystemUpdateModel ::GetInstance().download_schedule_value);
+ RootView::GetInstance()->Invalidate();
+
+ }
+
+ void SystemUpdateView::msg_text_set(bool flag)
+ {
+ if(SystemUpdateModel::GetInstance().button_flag==OTA_BUTTON_GET_VISON_ING)
+ {
+ if(flag)
+ {
+ NEWMSGLabel->SetText(SystemUpdateModel ::GetInstance().OTA_MSG);
+ if(strlen(SystemUpdateModel ::GetInstance().NEW_VISON)>0)
+ {
+ NEWVersionIdLabel->SetText(SystemUpdateModel ::GetInstance().NEW_VISON);
+ }
+ UpdateNowLabel->SetText("开始下载");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_ABLE_DOWNLOAD;
+
+ }
+ else
+ {
+ NEWMSGLabel->SetText("暂无新版本");
+ if(strlen(SystemUpdateModel ::GetInstance().NEW_VISON)>0)
+ {
+ NEWVersionIdLabel->SetText(SystemUpdateModel ::GetInstance().NEW_VISON);
+ }
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON;
+ }
+
+ }
+ else if(SystemUpdateModel::GetInstance().button_flag==OTA_BUTTON_GET_DOWNLOADING)
+ {
+ if(flag)
+ {
+ NEWMSGLabel->SetText("下载成功");
+ if(strlen(SystemUpdateModel ::GetInstance().NEW_VISON)>0)
+ {
+ NEWVersionIdLabel->SetText(SystemUpdateModel ::GetInstance().NEW_VISON);
+ }
+ UpdateNowLabel->SetText("开始升级");
+ UpdateNowLabel->SetVisible(true);
+ UpdateNowButtton->SetVisible(true);
+
+ TryAgainLaterButton->SetVisible(true);
+ TryAgainLaterLabel->SetVisible(true);
+
+ NEWMSGLabel->SetVisible(true);
+ NEWVersionIdLabel->SetVisible(true);
+
+ //VersionIdLabel->SetText("OTA V4.0.0");
+ updatasider->SetVisible(false);
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_ABLE_UPDTAT;
+
+
+ }
+ else
+ {
+ NEWMSGLabel->SetText("下载失败");
+ if(strlen(SystemUpdateModel ::GetInstance().NEW_VISON)>0)
+ {
+ NEWVersionIdLabel->SetText(SystemUpdateModel ::GetInstance().NEW_VISON);
+ }
+ UpdateNowLabel->SetText("重新获取升级");
+ UpdateNowLabel->SetVisible(true);
+ UpdateNowButtton->SetVisible(true);
+
+ TryAgainLaterButton->SetVisible(true);
+ TryAgainLaterLabel->SetVisible(true);
+
+ NEWMSGLabel->SetVisible(true);
+ NEWVersionIdLabel->SetVisible(true);
+ //VersionIdLabel->SetText("OTA V4.0.0");
+ updatasider->SetVisible(false);
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON;
+ }
+ }
+
+ if(SystemUpdateModel::GetInstance().button_flag==OTA_BUTTON_GET_ABLE_UPDTAT_SUCCESS)
+ {
+ UpdateNowLabel->SetText("获取升级");
+ NEWMSGLabel->SetText("升级成功");
+ NEWVersionIdLabel->SetText("");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON;
+ }
+ if(SystemUpdateModel::GetInstance().button_flag==OTA_BUTTON_GET_ABLE_UPDTAT_FAIL)
+ {
+ UpdateNowLabel->SetText("重新获取升级");
+ NEWMSGLabel->SetText("升级失败");
+ NEWVersionIdLabel->SetText("");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON;
+ }
+
+
+
+ RootView::GetInstance()->Invalidate();
+ }
+
+ UILabelExt *SystemUpdateView::InitLabel_Ext(LabelConfig &labelConfig)
+ {
+ UILabelExt *label = new UILabelExt();
+ if (label == nullptr)
+ {
+ return nullptr;
+ }
+ label->SetPosition(labelConfig.left, labelConfig.top, labelConfig.width, labelConfig.height); // 位置大小
+ label->SetStyle(STYLE_TEXT_FONT, labelConfig.fontSize); // 字体大小
+ label->SetStyle(STYLE_LINE_HEIGHT, labelConfig.lineHeigh); // 字体行高
+ label->SetTextId(labelConfig.textId);
+ label->SetLineBreakMode(labelConfig.lineBreakMode); // 断行模式。
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_TOP);
+ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelConfig.fontSize);
+ return label;
+ }
+
+ bool SystemUpdateView::SetSystemUpdateScrollView(void)
+ {
+ SystemUpdateScrollView = new UIScrollView();
+ if (SystemUpdateScrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemAboutTheWatchView::SystemUpdateScrollView new fail!");
+ return false;
+ }
+ SystemUpdateScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ SystemUpdateScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ SystemUpdateScrollView->SetStyle(STYLE_BORDER_RADIUS, 1294);
+ SystemUpdateScrollView->SetScrollBlankSize(35);
+ SystemUpdateScrollView->SetReboundSize(50);
+ SystemUpdateScrollView->SetDirection(1);
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(SystemUpdatePresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemAboutTheWatchView::draglistener can not be nullptr!");
+ return false;
+ }
+ SystemUpdateScrollView->SetOnDragListener(draglistener);
+ SystemUpdateScrollView->SetTouchable(true);
+ SystemUpdateScrollView->SetDraggable(true);
+
+ return true;
+ }
+
+ void SystemUpdateView::SystemUpdateViewInit(uint8_t flag)
+ {
+ if (!SetSystemUpdateScrollView())
+ {
+ return;
+ }
+ /* ---------------------------------- Title --------------------------------- */
+ LabelConfig Config = {
+ .left = 83,
+ .top = 52,
+ .width = 300,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ //.text = "系统",
+ .textId = STR_SYSTEM,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ Title = InitLabel_Ext(Config);
+ if (Title == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::Title new fail!");
+ return;
+ }
+ /* ------------------------------ KUMILOGOImage ----------------------------- */
+ KUMILOGOImage = new UIImageView();
+ if (KUMILOGOImage == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::KUMILOGOImage new fail!");
+ return;
+ }
+ KUMILOGOImage->SetPosition(117, 87, 230, 160);
+ #ifdef CUSTOM_Z1
+ // const char *imagesPath = "/user/res/system/KUMILOGO.bin";
+ // KUMILOGOImage->SetSrc(imagesPath);
+
+ #else
+ const char *imagesPath = "/user/res/system/KUMILOGO.bin";
+ KUMILOGOImage->SetSrc(imagesPath);
+ #endif
+ /* --------------------------- LatestVersionLabel --------------------------- */
+ Config = {
+ .left = 33,
+ .top = 227+30,
+ .width = 400,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ //.text = "最新版本",
+ .textId = STR_LATEST_VERSION,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+
+ LatestVersionLabel = InitLabel_Ext(Config);
+
+ if (LatestVersionLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::LatestVersionLabel new fail!");
+ return;
+ }
+ /* ----------------------------- imeiLabel ----------------------------- */
+ IMEIlabel = new UILabelExt();
+ if (IMEIlabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::VersionIdLabel new fail!");
+ return;
+ }
+ IMEIlabel->SetPosition(33, 227-5, 400, 35);
+ IMEIlabel->SetStyle(STYLE_TEXT_FONT, 30);
+ IMEIlabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+
+ bd_addr_t addr_info;
+ int ret = gap_ble_get_local_addr(&addr_info);
+ char Mac_str[32]={0};
+ sprintf_s(Mac_str,32,"%02X%02X%02X%02X%02X%02X",addr_info.addr[5],addr_info.addr[4],addr_info.addr[3],
+ addr_info.addr[2],addr_info.addr[1],addr_info.addr[0]);
+
+ IMEIlabel->SetText(Mac_str);
+ IMEIlabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ IMEIlabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ IMEIlabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+ /* ----------------------------- CAT1提示Label ----------------------------- */
+ CATlabel = new UILabelExt();
+ if (CATlabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::VersionIdLabel new fail!");
+ return;
+ }
+ CATlabel->SetPosition(33, 227-5+20, 400, 35);
+ CATlabel->SetStyle(STYLE_TEXT_FONT, 30);
+ CATlabel->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
+ CATlabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+
+ //imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+ CATlabel->SetText("请开启4G能力");
+ CATlabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ CATlabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ CATlabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ CATlabel->SetVisible(false);
+
+ /* ----------------------------- VersionIdLabel ----------------------------- */
+ VersionIdLabel = new UILabelExt();
+ if (VersionIdLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::VersionIdLabel new fail!");
+ return;
+ }
+ VersionIdLabel->SetPosition(33, 262+30, 400, 35);
+ VersionIdLabel->SetStyle(STYLE_TEXT_FONT, 30);
+ VersionIdLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+
+ char version_buf[32]={0};
+ uint8_t _major,_mid,_minor;
+ uapi_get_fw_version(&_major,&_mid,&_minor);
+ sprintf_s(version_buf,32,"%d.%d.%d",_major,_mid,_minor);
+
+
+ VersionIdLabel->SetText(version_buf);
+
+
+ VersionIdLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ VersionIdLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ VersionIdLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+
+ /* ----------------------------- NEWMSGLabel ----------------------------- */
+ NEWMSGLabel = new UILabelExt();
+ if (NEWMSGLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::VersionIdLabel new fail!");
+ return;
+ }
+ NEWMSGLabel->SetPosition(33, 262+30+30+5, 400, 35);
+ NEWMSGLabel->SetStyle(STYLE_TEXT_FONT, 30);
+ NEWMSGLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+
+
+ NEWMSGLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ NEWMSGLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ NEWMSGLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+
+ NEWVersionIdLabel = new UILabelExt();
+ if (NEWVersionIdLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::VersionIdLabel new fail!");
+ return;
+ }
+ NEWVersionIdLabel->SetPosition(33, 262+30+30+35+5, 400, 35);
+ NEWVersionIdLabel->SetStyle(STYLE_TEXT_FONT, 30);
+ NEWVersionIdLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+
+
+ NEWVersionIdLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ NEWVersionIdLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ NEWVersionIdLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+
+
+
+ /* ----------------------------- UpdateNowLabel ----------------------------- */
+ Config = {
+ .left = 113,
+ .top = 350+30+60+5,
+ .width = 240,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_UPDATENOW,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ UpdateNowLabel = InitLabel_Ext(Config);
+ if (UpdateNowLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::UpdateNowLabel new fail!");
+ return;
+ }
+
+ /* -------------------------------------------------------------------------- */
+ Config = {
+ .left = 113,
+ .top = 477+30+60+5,
+ .width = 240,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_LATER,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ TryAgainLaterLabel = InitLabel_Ext(Config);
+ if (TryAgainLaterLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::TryAgainLaterLabel new fail!");
+ return;
+ }
+ /* ---------------------------- UpdateNowButtton ---------------------------- */
+ UpdateNowButtton = new UIButton();
+ if (UpdateNowButtton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::UpdateNowButtton new fail!");
+ return;
+ }
+ UpdateNowButtton->SetPosition(63, 317+30+60+5, 340, 100);
+ UpdateNowButtton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c);
+ UpdateNowButtton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+ /* --------------------------- TryAgainLaterButton -------------------------- */
+ TryAgainLaterButton = new UIButton();
+ if (TryAgainLaterButton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::TryAgainLaterButton new fail!");
+ return;
+ }
+ TryAgainLaterButton->SetPosition(63, 427+30+60+5, 340, 100);
+ TryAgainLaterButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+ TryAgainLaterButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+ TryAgainLaterButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);
+ /* ----------------------------- OnClickListener ---------------------------- */
+ UIView::OnClickListener *listener = static_cast<UIView::OnClickListener *>(SystemUpdatePresenter::GetInstance());
+ if (listener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::listener can not be nullptr!");
+ return;
+ }
+ UpdateNowButtton->SetOnClickListener(listener);
+ TryAgainLaterButton->SetOnClickListener(listener);
+
+
+ updatasider = new UISlider();
+ if (updatasider == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView new fail");
+ return;
+ }
+ updatasider->SetSliderColor(Color::Gray(), Color::Silver());
+ updatasider->SetPosition(63, 317+50+50, 340, 50);
+ // updatasider->SetDirection(UISlider::Direction::DIR_BOTTOM_TO_TOP);
+ updatasider->SetViewId("SystemUpdateView_updatasider");
+ updatasider->SetRange(0, 100);
+
+ updatasider->SetStyle(STYLE_BORDER_RADIUS, 100);
+ updatasider->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);
+ updatasider->SetForegroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);
+ updatasider->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xfA, 0xfA, 0xfA, 0xff));
+ updatasider->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);
+ updatasider->SetDraggable(false);
+ updatasider->SetVisible(false);
+ updatasider->SetTouchable(false);
+ updatasider->SetValue(0);
+
+
+
+ /* ----------------------------------- Add ---------------------------------- */
+ SystemUpdateScrollView->Add(Title);
+ SystemUpdateScrollView->Add(KUMILOGOImage);
+ SystemUpdateScrollView->Add(LatestVersionLabel);
+ SystemUpdateScrollView->Add(VersionIdLabel);
+ SystemUpdateScrollView->Add(UpdateNowButtton);
+ SystemUpdateScrollView->Add(TryAgainLaterButton);
+ SystemUpdateScrollView->Add(UpdateNowLabel);
+ SystemUpdateScrollView->Add(TryAgainLaterLabel);
+ SystemUpdateScrollView->Add(updatasider);
+ SystemUpdateScrollView->Add(IMEIlabel);
+ SystemUpdateScrollView->Add(NEWMSGLabel);
+ SystemUpdateScrollView->Add(NEWVersionIdLabel);
+
+ SystemUpdateScrollView->Add(CATlabel);
+
+ LatestVersionLabel->SetText("当前版本");
+
+ if(flag==OTA_BUTTON_GET_VISON)
+ {
+ UpdateNowLabel->SetText("获取升级");
+ NEWMSGLabel->SetText("");
+ NEWVersionIdLabel->SetText("");
+ }
+ if(flag==OTA_BUTTON_GET_ABLE_DOWNLOAD)
+ {
+ UpdateNowLabel->SetText("开始下载");
+ NEWMSGLabel->SetText(SystemUpdateModel ::GetInstance().OTA_MSG);
+ NEWVersionIdLabel->SetText(SystemUpdateModel ::GetInstance().NEW_VISON);
+ }
+ if(flag==OTA_BUTTON_GET_DOWNLOADING)
+ {
+ UpdateNowLabel->SetText("正在下载");
+ UpdateNowLabel->SetVisible(false);
+ UpdateNowButtton->SetVisible(false);
+
+ TryAgainLaterButton->SetVisible(false);
+ TryAgainLaterLabel->SetVisible(false);
+
+ NEWMSGLabel->SetVisible(true);
+ NEWVersionIdLabel->SetVisible(true);
+
+ //VersionIdLabel->SetText("OTA V4.0.0");
+ updatasider->SetVisible(true);
+ updatasider->SetValue(SystemUpdateModel ::GetInstance().download_schedule_value);
+ }
+ if(flag==OTA_BUTTON_GET_ABLE_UPDTAT)
+ {
+ UpdateNowLabel->SetText("开始升级");
+
+ UpdateNowLabel->SetVisible(true);
+ UpdateNowButtton->SetVisible(true);
+
+ TryAgainLaterButton->SetVisible(true);
+ TryAgainLaterLabel->SetVisible(true);
+
+ NEWMSGLabel->SetVisible(true);
+ NEWVersionIdLabel->SetVisible(true);
+
+ //VersionIdLabel->SetText("OTA V4.0.0");
+ updatasider->SetVisible(false);
+
+
+
+ NEWMSGLabel->SetText(SystemUpdateModel ::GetInstance().OTA_MSG);
+ NEWVersionIdLabel->SetText(SystemUpdateModel ::GetInstance().NEW_VISON);
+ }
+ if(flag==OTA_BUTTON_GET_ABLE_DOWNLOAD_FAIL)
+ {
+ UpdateNowLabel->SetText("重新获取升级");
+ NEWMSGLabel->SetText("下载失败");
+ NEWVersionIdLabel->SetText("");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON;
+ }
+
+ if(flag==OTA_BUTTON_GET_ABLE_UPDTAT_SUCCESS)
+ {
+ UpdateNowLabel->SetText("获取升级");
+ NEWMSGLabel->SetText("升级成功");
+ NEWVersionIdLabel->SetText("");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON;
+ }
+ if(flag==OTA_BUTTON_GET_ABLE_UPDTAT_FAIL)
+ {
+ UpdateNowLabel->SetText("重新获取升级");
+ NEWMSGLabel->SetText("升级失败");
+ NEWVersionIdLabel->SetText("");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON;
+ }
+
+ if(ConfigModel::GetInstance()->get_configData_bool(ConfigModel::CONFIGMODEL_ITEM_CAT1_SERVICE_ON)==false)
+ {
+ CATlabel->SetVisible(true);
+
+ UpdateNowLabel->SetVisible(false);
+ UpdateNowButtton->SetVisible(false);
+
+ TryAgainLaterButton->SetVisible(false);
+ TryAgainLaterLabel->SetVisible(false);
+
+ NEWMSGLabel->SetVisible(false);
+ NEWVersionIdLabel->SetVisible(false);
+
+ UpdateNowButtton->SetVisible(false);
+ TryAgainLaterButton->SetVisible(false);
+
+ UpdateNowLabel->SetVisible(false);
+ TryAgainLaterLabel->SetVisible(false);
+
+ LatestVersionLabel->SetVisible(false);
+ VersionIdLabel->SetVisible(false);
+
+ IMEIlabel->SetVisible(false);
+
+ updatasider->SetVisible(false);
+
+ }
+
+ GetRootContainer()->Add(SystemUpdateScrollView);
+ }
+
+ void SystemUpdateView::NoNeedUpdateViewInit(void)
+ {
+
+ }
+
+ void SystemUpdateView::OnStart()
+ {
+ View<SystemUpdatePresenter>::OnStart();
+
+
+
+ SystemUpdateViewInit(SystemUpdateModel ::GetInstance().button_flag);
+
+
+ // 增加按键监听
+ RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::SystemUpdatePresenter::GetInstance();
+ RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+ }
+
+
+
+ UIButton *SystemUpdateView::GetUpdateNowButtton(void)
+ {
+ if (UpdateNowButtton != nullptr)
+ {
+ return UpdateNowButtton;
+ }
+ return nullptr;
+ }
+
+ UIButton *SystemUpdateView::GetTryAgainLaterButton(void)
+ {
+ if (TryAgainLaterButton != nullptr)
+ {
+ return TryAgainLaterButton;
+ }
+ return nullptr;
+ }
+}
\ No newline at end of file