*/
#include "systemupdate/include/SystemUpdateModel.h"
#include "wearable_log.h"
-
+#include "systemupdate/include/SystemUpdateView.h"
+#include "UiConfig.h"
+#include "custom_utils.h"
+#include "stdio.h"
+#include "cJSON.h"
+#include "config/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 "AppViewIDs.h"
+#include "NativeAbility.h"
namespace OHOS
{
+ static char *report_jsonString=NULL;
+ static int fwpkg_size=0;
+
+
+ static void upgrade_report_task(void *arg)
+ {
+ FILE * fp = fopen(UPDATAREPORT,"rb+");
+ bool falg=false;
+ if(fp!=NULL)
+ {
+ falg=true;
+ PRINT("UPDATAREPORT_M IS TRUE!\r\n");
+ fclose(fp);
+ }
+
+ while (falg)
+ {
+
+ if(ConfigModel::GetInstance()->GetCat1_4Gability())
+ {
+ upgrade_reported_data();
+ }
+ for(int i=0;i<60;i++)
+ {
+ msleep(1000);
+ }
+ fp = fopen(UPDATAREPORT,"rb+");
+ if(fp!=NULL)
+ {
+ falg=true;
+ fclose(fp);
+ }
+ else
+ {
+ falg=false;
+ }
+ }
+ PRINT("UPDATAREPORT IS OK!\r\n");
+ }
+
+ int start_report_timer(void)
+ {
+ PRINT("uapi_upgrade_service_init !\r\n");
+ app_task_definition_t taskcfg={0};
+ taskcfg.create_queue_handle = NULL;
+ taskcfg.attr.name="report_upgrade_service";
+ taskcfg.attr.priority = TASK_PRIORITY_APP;
+ taskcfg.attr.stack_size = 1024*4;
+ taskcfg.func = upgrade_report_task;
+ taskcfg.use_mem = USE_EXTEND_MEM;
+
+ errcode_t ret=uapi_create_osThread_custom(&taskcfg);
+ if(ret != ERRCODE_SUCC)
+ {
+ PRINT("create uapi_upgrade_service_init failed %d!\r\n",ret);
+ return ERRCODE_FAIL;
+ }
+
+ return ERRCODE_SUCC;
+
+ }
+
+ void SystemUpdateModel::report_jsonString_write()
+ {
+ if(report_jsonString!=NULL)
+ {
+ uint32_t data_len=strlen(report_jsonString);
+ if(data_len!=0)
+ {
+ FILE *FP_= fopen(UPDATAREPORT,"w+");
+ printf("升级文件保存\r\n");
+ fwrite(report_jsonString,1,data_len,FP_);
+ fclose(FP_);
+ printf("data%d %s\r\n",data_len,report_jsonString);
+ free(report_jsonString);
+ report_jsonString=NULL;
+ }
+ }
+ }
+
+
SystemUpdateModel::SystemUpdateModel()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemUpdateModel::SystemUpdateModel");
static SystemUpdateModel instance;
return instance;
}
+ bool SystemUpdateModel::OTA_Update_msg_back(uint8_t flag)
+ {
+ bool ret;
+ switch (flag)
+ {
+ case OTA_UPDATA_MSG_NEW_VER:
+
+ ret= OTA_JSON_Parse(OTA_MSG);
+ if(SystemUpdateView::GetInstance())
+ {
+ SystemUpdateView::GetInstance()->msg_text_set(ret);
+ }
+ break;
+ case OTA_UPDATA_MSG_FWKG:
+
+ ret= OTA_FWPKG_CHECK();
+
+ if(SystemUpdateView::GetInstance())
+ {
+ SystemUpdateView::GetInstance()->msg_text_set(ret);
+ }
+ else
+ {
+ if(ret)
+ button_flag=OTA_BUTTON_GET_ABLE_UPDTAT;
+ else{
+ button_flag=OTA_BUTTON_GET_ABLE_DOWNLOAD_FAIL;
+ }
+
+ NativeAbility::GetInstance().EnterSlice(VIEW_SYSTEM_UPDATE);
+ //SystemUpdateView::GetInstance()->msg_text_set(ret);
+ }
+ break;
+ case OTA_UPDATA_MSG_REPORT:
+ if(SystemUpdateView::GetInstance())
+ {
+ SystemUpdateView::GetInstance()->msg_text_set(ret);
+ }
+ else
+ {
+ NativeAbility::GetInstance().EnterSlice(VIEW_SYSTEM_UPDATE);
+ //SystemUpdateView::GetInstance()->msg_text_set(ret);
+ }
+ break;
+ default:
+ break;
+ }
+ return true;
+
+ }
+ bool SystemUpdateModel::OTA_FWPKG_CHECK()
+ {
+ FILE * fp = fopen(UPDATAFWPKGPATH,"rb");
+ if(fp!=NULL)
+ {
+ fseek(fp, 0, SEEK_END);
+
+ int len=ftell(fp);
+ if(len!=fwpkg_size)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "len %d != fwpkg_size %d ",len,fwpkg_size);
+ fclose(fp);
+ return false;
+ }
+ fclose(fp);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "file open success fwpkg_is_ready");
+ return true;
+ }
+ return false;
+ }
+
+
+
+ bool SystemUpdateModel::OTA_JSON_Parse(char* msg)
+ {
+
+ //msleep(3000);
+ memset(msg,0,MSG_LEN);
+
+ FILE * fp = fopen(UPDATAJSONPATH,"rb+");
+ if(fp==NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "open fail");
+ return false;
+ }
+ char *buf=(char *)malloc(1024);
+ memset((void*)buf,0,1024);
+ int ret =fread(buf,1,1024,fp);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui %d %s\r\n",ret,buf);
+ if(ret==0)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fread %d",ret);
+ fclose(fp);
+ free(buf);
+ return false;
+ }
+ cJSON *root = cJSON_Parse(buf);
+ free(buf);
+ if(root==NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui JSON_parse_fail");
+ }
+ else if(root!=NULL)
+ {
+
+ int code=cJSON_GetObjectItem(root, "code")->valueint;
+ char *msg_json = cJSON_GetObjectItem(root, "msg")->valuestring;
+ strcpy(msg,msg_json);
+ int success=cJSON_GetObjectItem(root, "success")->valueint;
+
+ char msg_buf[256]={0};
+
+ if(code=IOT_CODE_SUCCESS)
+ {
+ cJSON *data=cJSON_GetObjectItem(root, "data");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "");
+
+ report_jsonString = cJSON_PrintUnformatted(data);
+ //cJSON_Delete(data);
+
+ if(data!=NULL)
+ {
+ cJSON *downloadFileVo=cJSON_GetObjectItem(data, "downloadFileVo");
+
+ if(downloadFileVo!=NULL)
+ {
+
+ char *uri = cJSON_GetObjectItem(downloadFileVo, "url")->valuestring;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uri %s",uri);
+
+ memset(uri_ota_package,0,UPDATAFWPKGPATHURL);
+ sprintf((char *)uri_ota_package,"%s",uri);
+
+ fwpkg_size=cJSON_GetObjectItem(downloadFileVo,"size")->valueint;
+
+
+ }
+ char* targetVersion=cJSON_GetObjectItem(data,"targetVersion")->valuestring;
+
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fwpkg_size %d",fwpkg_size);
+
+ memset(NEW_VISON,0,MSG_LEN);
+ sprintf((char *)NEW_VISON,"%s",targetVersion);
+
+ }
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "code!=IOT_CODE_SUCCESS");
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",msg);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui");
+ cJSON_Delete(root);
+
+ }
+ fclose(fp);
+
+ return true;
+ }
+
+
//获取是否是最新版本
bool SystemUpdateModel::IsLatestVersion(void)
{
+ if(button_flag==OTA_BUTTON_GET_ABLE_UPDTAT)
return false;
+ else
+ return true;
}
+ // bool SystemUpdateModel::OTA_Update_msg_back(uint8_t flag)
+ // {
+ // // bool ret;
+ // // switch (flag)
+ // // {
+ // // case OTA_UPDATA_MSG_NEW_VER:
+
+ // // ret= OTA_JSON_Parse(OTA_MSG);
+ // // if(SystemUpdateView::GetInstance())
+ // // {
+ // // SystemUpdateView::GetInstance()->msg_text_set(ret);
+ // // }
+ // // break;
+ // // default:
+ // // break;
+ // // }
+ // return true;
+ // }
+
}
#include "language/font/ui_resource_string.h"
#include "config/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 "config/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"
+
+#define OTA_UPDATA_TEST 1
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 httpc_connection_t settings = {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->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_LOGE(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_LOGE(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_LOGE(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui");
+ PRINT("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);
+ uapi_cat1_keep_wakeup(0);
+ LCD_auto_timeout(true);
+ SystemUpdateModel ::GetInstance().OTA_Update_msg_back(OTA_UPDATA_MSG_NEW_VER);
+ 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_LOGE(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui");
+ PRINT("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);
+ uapi_cat1_keep_wakeup(0);
+ LCD_auto_timeout(true);
+ SystemUpdateModel ::GetInstance().OTA_Update_msg_back(OTA_UPDATA_MSG_FWKG);
+ 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_LOGE(WEARABLE_LOG_MODULE_APP, "httpc_download_result_ui");
+ PRINT("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)
+ {
+ settings.use_proxy=0;
+
+ settings.use_post=1;
+ settings.args=(u8_t*)data;
+ settings.arglen=data_len;
+ uint8_t *otadatapath =(uint8_t *)UPDATAREPORT_;
+
+ settings.result_fn=httpc_download_result_report_data;
+ settings.file_rx_fn = httpc_download_file_recv_ui;
+ settings.headers_done_fn = httpc_download_headers_done_ui;
+
+ httpc_state_t* connection=NULL;
+ err_t rett= httpc_get_file_dns_to_disk(
+ HTTP_JSON_SERVER_NAME,
+ PORT,
+ POST_URL,
+ &settings,
+ NULL,
+ (const char*) otadatapath,
+ &connection);
+ PRINT("custom_start_ota_download %d \r\n",rett);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "use_post_");
+ }
+
+ void upgrade_reported_data(void)
+ {
+ WEARABLE_LOGE(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_LOGE(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_1( uint8_t *uri_str,uint8_t *Path,uint8_t falg,const char *server_name)
+ {
+
+ //(uint8_t*)argv[0];
+ uint8_t *otadatapath = (uint8_t*)Path;
+ PRINT("custom_start_ota_download %s to %s\r\n",uri_str,otadatapath);
+ uapi_cat1_keep_wakeup(1);
+ LCD_auto_timeout(false);
+
+ if(falg==OTA_BUTTON_GET_VISON)
+ {
+ settings.use_post=0;
+ settings.result_fn=httpc_download_result_ui;
+ settings.file_rx_fn = NULL;
+ }
+ else if(falg==OTA_BUTTON_GET_ABLE_DOWNLOAD)
+ {
+ settings.use_post=0;
+ settings.result_fn=httpc_download_FWPKG_result_ui;
+ settings.file_rx_fn = httpc_download_file_recv_ui;
+ }
+
+ FILE * fp= fopen((char *)Path,"rb");
+ if(fp!=NULL)
+ {
+ fclose(fp);
+ int ret= remove((char *)Path);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "file remove!!!!!!!!!!!!! %d ",ret);
+ }
+
+
+ settings.headers_done_fn=httpc_download_headers_done_ui;
+
+ httpc_state_t* connection=NULL;
+ err_t rett = httpc_get_file_dns_to_disk(
+ server_name,
+ PORT,
+ (const char*) uri_str,
+ (const httpc_connection_t *)&settings,
+ NULL,
+ (const char*) otadatapath,
+ &connection);
+ PRINT("custom_start_ota_download %d \r\n",rett);
+ if(rett!=0)
+ {
+
+ // if(SystemupgradeView::GetInstance())
+ // SystemupgradeView::GetInstance()->set_string_value(NULL,false);
+ }
+ return rett;// ERRCODE_SUCC;
+ }
+
+
+ static void start_get_updata_json(void)
+ {
+ memset(uri,0,256);
+ imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+ char version_buf[128]={0};
+ uint32_t version_len=128;
+ uapi_get_buildversion((uint8_t*)version_buf,version_len);
+ #if OTA_UPDATA_TEST
+ sprintf((char *)uri,JSON_URL,"860132060413978","V1.1_20240508_211447");
+ #else
+ sprintf((char *)uri,JSON_URL,imei_str,version_buf);
+ #endif
+ custom_start_ota_download_ui_1(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_1(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_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::SystemUpdateView");
delete SystemUpdateScrollView;
SystemUpdateScrollView = nullptr;
+
+
}
if (NoNeedUpdateScrollView != nullptr)
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:
+ SystemUpdateModel ::GetInstance() .report_jsonString_write();
+ //uaip_cmd_update_request();
+ 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)
{
return true;
}
- void SystemUpdateView::SystemUpdateViewInit(void)
+ void SystemUpdateView::SystemUpdateViewInit(uint8_t flag)
{
if (!SetSystemUpdateScrollView())
{
/* --------------------------- LatestVersionLabel --------------------------- */
Config = {
.left = 33,
- .top = 227,
+ .top = 227+30,
.width = 400,
.height = 35,
.fontSize = 30,
.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);
+
+ imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+ IMEIlabel->SetText(imei_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, 400, 35);
+ VersionIdLabel->SetPosition(33, 262+30, 400, 35);
VersionIdLabel->SetStyle(STYLE_TEXT_FONT, 30);
VersionIdLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
- VersionIdLabel->SetText("OTA V4.0.0");
+
+ char version_buf[128]={0};
+ uint32_t version_len=128;
+ uapi_get_buildversion((uint8_t*)version_buf,version_len);
+ 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,
+ .top = 350+30+60+5,
.width = 240,
.height = 35,
.fontSize = 30,
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::UpdateNowLabel new fail!");
return;
}
+
/* -------------------------------------------------------------------------- */
Config = {
.left = 113,
- .top = 477,
+ .top = 477+30+60+5,
.width = 240,
.height = 35,
.fontSize = 30,
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::UpdateNowButtton new fail!");
return;
}
- UpdateNowButtton->SetPosition(63, 317, 340, 100);
+ UpdateNowButtton->SetPosition(63, 317+30+60+5, 340, 100);
UpdateNowButtton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c);
UpdateNowButtton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
/* --------------------------- TryAgainLaterButton -------------------------- */
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::TryAgainLaterButton new fail!");
return;
}
- TryAgainLaterButton->SetPosition(63, 427, 340, 100);
+ 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);
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+60, 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(0xff, 0xff, 0xff, 0xff));
+ updatasider->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);
+ updatasider->SetDraggable(false);
+ updatasider->SetVisible(false);
+
+ updatasider->SetValue(0);
+
+
+
/* ----------------------------------- Add ---------------------------------- */
SystemUpdateScrollView->Add(Title);
SystemUpdateScrollView->Add(KUMILOGOImage);
SystemUpdateScrollView->Add(TryAgainLaterButton);
SystemUpdateScrollView->Add(UpdateNowLabel);
SystemUpdateScrollView->Add(TryAgainLaterLabel);
- RootView::GetInstance()->Add(SystemUpdateScrollView);
- }
+ SystemUpdateScrollView->Add(updatasider);
+ SystemUpdateScrollView->Add(IMEIlabel);
+ SystemUpdateScrollView->Add(NEWMSGLabel);
+ SystemUpdateScrollView->Add(NEWVersionIdLabel);
- void SystemUpdateView::NoNeedUpdateViewInit(void)
- {
- if (NoNeedUpdateScrollView == nullptr)
+ SystemUpdateScrollView->Add(CATlabel);
+
+ LatestVersionLabel->SetText("当前版本");
+
+ if(flag==OTA_BUTTON_GET_VISON)
{
- NoNeedUpdateScrollView = new UIScrollView();
- if (NoNeedUpdateScrollView == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemAboutTheWatchView::NoNeedUpdateScrollView new fail!");
- return;
- }
- NoNeedUpdateScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- NoNeedUpdateScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- NoNeedUpdateScrollView->SetStyle(STYLE_BORDER_RADIUS, 1294);
- NoNeedUpdateScrollView->SetScrollBlankSize(35);
- NoNeedUpdateScrollView->SetReboundSize(50);
- NoNeedUpdateScrollView->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;
- }
- NoNeedUpdateScrollView->SetOnDragListener(draglistener);
- NoNeedUpdateScrollView->SetTouchable(true);
- NoNeedUpdateScrollView->SetDraggable(true);
+ UpdateNowLabel->SetText("获取升级");
+ NEWMSGLabel->SetText("");
+ NEWVersionIdLabel->SetText("");
+
}
- /* -------------------------------------------------------------------------- */
- LabelConfig Config = {
- .left = 83,
- .top = 52,
- .width = 300,
- .height = 35,
- .fontSize = 30,
- .lineHeigh = 35,
- //.text = "系统",
- .textId = STR_SYSTEM,
- .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
- };
- NoNeedUpdateTitle = InitLabel_Ext(Config);
- if (NoNeedUpdateTitle == nullptr)
+ if(flag==OTA_BUTTON_GET_ABLE_DOWNLOAD)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::NoNeedUpdateTitle new fail!");
- return;
+ UpdateNowLabel->SetText("开始下载");
+ NEWMSGLabel->SetText(SystemUpdateModel ::GetInstance().OTA_MSG);
+ NEWVersionIdLabel->SetText(SystemUpdateModel ::GetInstance().NEW_VISON);
+
+
+
}
- NoNeedUpdateScrollView->Add(NoNeedUpdateTitle);
- /* -------------------------------------------------------------------------- */
- for (int i = 0; i < 2; i++)
+ if(flag==OTA_BUTTON_GET_DOWNLOADING)
{
- if (NoNeedUpdateNote[i] == nullptr)
- {
- NoNeedUpdateNote[i] = new UILabelExt();
- if (NoNeedUpdateNote[i] == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemAboutTheWatchView:: NoNeedUpdateNote[%d] can not be nullptr!", i);
- return;
- }
- uint16_t textId = i ? STR_UP_TO_DATE : STR_NO_UPDATE;
- uint16_t posY = i ? 227 : 262;
- NoNeedUpdateNote[i]->SetPosition(33, posY, 400, 35);
- NoNeedUpdateNote[i]->SetTextId(textId);
- NoNeedUpdateNote[i]->SetStyle(STYLE_TEXT_FONT, 30);
- NoNeedUpdateNote[i]->SetStyle(STYLE_LINE_HEIGHT, 35);
- NoNeedUpdateNote[i]->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
- NoNeedUpdateNote[i]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- NoNeedUpdateNote[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- }
- NoNeedUpdateScrollView->Add(NoNeedUpdateNote[i]);
+ UpdateNowLabel->SetText("正在下载");
+ UpdateNowLabel->SetVisible(false);
+ UpdateNowButtton->SetVisible(false);
+
+ TryAgainLaterButton->SetVisible(false);
+ TryAgainLaterLabel->SetVisible(false);
+
+ NEWMSGLabel->SetVisible(false);
+ NEWVersionIdLabel->SetVisible(false);
+
+ //VersionIdLabel->SetText("OTA V4.0.0");
+ updatasider->SetVisible(true);
+ updatasider->SetValue(SystemUpdateModel ::GetInstance().download_schedule_value);
}
- RootView::GetInstance()->Add(NoNeedUpdateScrollView);
- }
+ if(flag==OTA_BUTTON_GET_ABLE_UPDTAT)
+ {
+ UpdateNowLabel->SetText("开始升级");
- void SystemUpdateView::OnStart()
- {
- View<SystemUpdatePresenter>::OnStart();
+ 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 (SystemUpdateModel::GetInstance().IsLatestVersion() == true) // 如果是最新版本显示不需要更新界面
+ 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)
{
- NoNeedUpdateViewInit();
+ UpdateNowLabel->SetText("重新获取升级");
+ NEWMSGLabel->SetText("升级失败");
+ NEWVersionIdLabel->SetText("");
+ SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON;
}
- else
+
+ if(ConfigModel::GetInstance()->get_configData_bool(ConfigModel::CONFIGMODEL_ITEM_CAT1_SERVICE_ON)==false)
{
- // 如果需要系统更新
- SystemUpdateViewInit();
+ 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);
+
}
+ RootView::GetInstance()->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);