From: 胡传军 <1224667075@qq.com> Date: Sat, 11 May 2024 07:39:51 +0000 (+0000) Subject: Merge #159 into xts_origin from refs/changes/159/head X-Git-Tag: release_V1.2.70_20241020_135402~1121^2~4^2~2 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=8d53d389d5226463bf9bee03e673e5ef4ea85617;p=mirrors%2FFD230.git Merge #159 into xts_origin from refs/changes/159/head Code review from 胡传军 * refs/changes/159/head: (8 commits squashed) - 喝水及睡眠协议对接 - Merge branch 'xts_origin' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin - 合并冲突 - Merge branch 'xts_origin' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin - ota升级 - Merge branch 'xts_origin' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin - ota升级 - 重构OTA升级 Signed-off-by: aliyun8003852482 <1224667075@qq.com> Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/159 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h index c6e2d3f2d..8bba96423 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h @@ -88,6 +88,7 @@ namespace OHOS CONFIFMOFEL_ITEM_SLEEP_BEDTIME,//就寝时间 CONFIFMOFEL_ITEM_SLEEP_GET_UP,//起床时间 CONFIFMOFEL_ITEM_SLEEP_REMIND,//提前20分钟提醒开关 + CONFIGMODEL_ITEM_MAX, } ; diff --git a/code/sdk/application/wearable/fd230app/nativeui/system/include/Systemupgrade.h b/code/sdk/application/wearable/fd230app/nativeui/system/include/Systemupgrade.h index f070ade68..588b3c3b7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/system/include/Systemupgrade.h +++ b/code/sdk/application/wearable/fd230app/nativeui/system/include/Systemupgrade.h @@ -52,15 +52,14 @@ namespace OHOS { - typedef enum { - IOT_CODE_0, - IOT_CODE_IS_NEW=20006,//已是最新版本 - IOT_CODE_SUCCESS=20007,//有新版本,唯一成功id,不是这个都表示没有升级版本data为NULL - IOT_CODE_FAIL_1=50000,//设备源版本不能为空 - IOT_CODE_FAIL_2=50012,//设备未注册 - } iot_code; - - void upgrade_reported_data(void); + // typedef enum { + // IOT_CODE_0, + // IOT_CODE_IS_NEW=20006,//已是最新版本 + // IOT_CODE_SUCCESS=20007,//有新版本,唯一成功id,不是这个都表示没有升级版本data为NULL + // IOT_CODE_FAIL_1=50000,//设备源版本不能为空 + // IOT_CODE_FAIL_2=50012,//设备未注册 + // } iot_code; + class SystemupgradeView { diff --git a/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemModel.cpp index d8a841f3d..908a359c3 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemModel.cpp @@ -23,67 +23,7 @@ namespace OHOS { - static void upgrade_report_task(void *arg) - { - FILE * fp = fopen(UPDATAREPORT_M,"rb+"); - bool falg=false; - if(fp!=NULL) - { - falg=true; - PRINT("UPDATAREPORT_M IS TRUE!\r\n"); - fclose(fp); - } - - while (falg) - { - - // for(int i=0;i<60;i++) - // { - // msleep(1000); - // } - if(ConfigModel::GetInstance()->GetCat1_4Gability()) - { - upgrade_reported_data(); - } - for(int i=0;i<60;i++) - { - msleep(1000); - } - fp = fopen(UPDATAREPORT_M,"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; - - } + SystemModel *SystemModel::GetInstance(void) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/system/src/Systemupgrade.cpp b/code/sdk/application/wearable/fd230app/nativeui/system/src/Systemupgrade.cpp index 4cd929972..4a5693be2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/system/src/Systemupgrade.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/system/src/Systemupgrade.cpp @@ -101,83 +101,8 @@ namespace OHOS (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; - } - 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(); - imei_str= const_cast(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"); - } - else - { - cJSON_AddStringToObject(dataJSON,"result","0"); - } - 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); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "use_post_"); } - //#define UP_TEST static void upgrade_task(void *arg) { @@ -242,34 +167,34 @@ namespace OHOS char msg_buf[256]={0}; bool falg=false; - if(code==IOT_CODE_SUCCESS) - { - falg=true; - cJSON *data=cJSON_GetObjectItem(root, "data"); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, ""); + // if(code==IOT_CODE_SUCCESS) + // { + // falg=true; + // cJSON *data=cJSON_GetObjectItem(root, "data"); + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, ""); - report_jsonString = cJSON_PrintUnformatted(data); - //cJSON_Delete(data); + // report_jsonString = cJSON_PrintUnformatted(data); + // //cJSON_Delete(data); - if(data!=NULL) - { - cJSON *downloadFileVo=cJSON_GetObjectItem(data, "downloadFileVo"); + // if(data!=NULL) + // { + // cJSON *downloadFileVo=cJSON_GetObjectItem(data, "downloadFileVo"); - if(downloadFileVo!=NULL) - { + // if(downloadFileVo!=NULL) + // { - //"http://r-oss.thisiot.com/device-ota/2024_04_22/1782329689464958978.fwpkg?Expires=1713780167&OSSAccessKeyId=LTAI5tJa2arDBmqSUsSTQJ1T&Signature=OlbdNsfnz9Zje6ypFgXINQPXVE0%3D" - // char *uri = "http://icfota.snicker.com.cn:8089/FD230/V1.1/update.fwpkg"; - char *uri = cJSON_GetObjectItem(downloadFileVo, "url")->valuestring; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uri %s",uri); - sprintf((char *)uri_ota_package,"%s",uri); - } - } - } - else - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "code!=IOT_CODE_SUCCESS"); - } + // //"http://r-oss.thisiot.com/device-ota/2024_04_22/1782329689464958978.fwpkg?Expires=1713780167&OSSAccessKeyId=LTAI5tJa2arDBmqSUsSTQJ1T&Signature=OlbdNsfnz9Zje6ypFgXINQPXVE0%3D" + // // char *uri = "http://icfota.snicker.com.cn:8089/FD230/V1.1/update.fwpkg"; + // char *uri = cJSON_GetObjectItem(downloadFileVo, "url")->valuestring; + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uri %s",uri); + // sprintf((char *)uri_ota_package,"%s",uri); + // } + // } + // } + // else + // { + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "code!=IOT_CODE_SUCCESS"); + // } sprintf(msg_buf,"%s",msg); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",msg); diff --git a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateModel.h b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateModel.h index 82c7b6d94..319ac05b1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateModel.h @@ -8,16 +8,97 @@ #ifndef SYSTEM_UPDATE_MODEL_H #define SYSTEM_UPDATE_MODEL_H +#if USE_THISIOT +#define HTTP_JSON_SERVER_NAME "test.iot.api.thisiot.com"//"test.app.api.thisiot.com"//获取升级服务器 +#define HTTP_FWPGK_SERVER_NAME "r-oss.thisiot.com"//"//升级包服务器 +#define PORT (80)//(443)//http端口号 +#define POST_URL "http://test.iot.api.thisiot.com/ota/update-result"//上报url +#define JSON_URL "http://test.iot.api.thisiot.com/ota/task?deviceId=%s&sourceVersion=%s"//获取升级url +#else +#include +#include +/** + * http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=V1.1_20240316_115535&imei=864430010001091 +查看 返回的"UptoDate" == False,即可根据"url"地址下载,文件校验可以后面再加。 +{ "UptoDate": false , + "url" : "http://icfota.snicker.com.cn:8089/FD230/V1.1_20240316_115535/update.fwpkg", +"OtaPackageLength" : 177504, + "OtaPackageName" : "update.fwpkg", + "OtaPackageVersion" : "V1.1_20240316_130929", +"SystemVersion" : "V1.1_20240316_115535", +"description" : " update to checkota version 3 ", + "md5sum" : "f51486072dc3d81f30610d6d5a58d717", +"AutoUpdate" : true } +*/ +#define HTTP_JSON_SERVER_NAME "snicker.com.cn"//"test.app.api.thisiot.com"//获取升级服务器 +#define HTTP_FWPGK_SERVER_NAME "snicker.com.cn"//"//升级包服务器 +#define PORT (8089)//(443)//http端口号 +#define POST_URL "http://snicker.com.cn:8089"//上报url +#define JSON_URL "http://snicker.com.cn:8089/fd230otanew.jsp?product=FD230&imei=%s&pkgver=%s"//获取升级url +#endif + +#define UPDATAJSONPATH "/update/ota_start_.json"//获取升级的得到的json + +#define UPDATAREPORT "/update/ota_start_reported_.json"//点升级后保存下来的json + +#define UPDATAFWPKGPATH "/update/update.fwpkg" //升级包 +#define UPDATAREPORT_ "/update/ota_report_.json"//上报升级得到的json + +#define UPDATAFWPKGPATHURL 256 + +#define MSG_LEN 64 namespace OHOS { + int start_report_timer(void); + typedef enum + { + OTA_UPDATA_MSG_NEW_VER, + OTA_UPDATA_MSG_FWKG, + OTA_UPDATA_MSG_REPORT, + }OTA_UPDATA_MSG; + + typedef enum + { + OTA_BUTTON_GET_VISON, + OTA_BUTTON_GET_ABLE_DOWNLOAD, + OTA_BUTTON_GET_DOWNLOADING, + OTA_BUTTON_GET_ABLE_UPDTAT, + OTA_BUTTON_GET_VISON_ING, + OTA_BUTTON_GET_ABLE_DOWNLOAD_FAIL, + OTA_BUTTON_GET_ABLE_UPDTAT_SUCCESS, + OTA_BUTTON_GET_ABLE_UPDTAT_FAIL, + }OTA_BUTTON; + + + typedef enum { + IOT_CODE_0, + IOT_CODE_IS_NEW=20006,//已是最新版本 + IOT_CODE_SUCCESS=20007,//有新版本,唯一成功id,不是这个都表示没有升级版本data为NULL + IOT_CODE_FAIL_1=50000,//设备源版本不能为空 + IOT_CODE_FAIL_2=50012,//设备未注册 + } iot_code; + class SystemUpdateModel { public: static SystemUpdateModel &GetInstance(void); bool IsLatestVersion(void); + bool OTA_Update_msg_back(uint8_t); + uint8_t button_flag=0; + bool OTA_JSON_Parse(char* msg); + uint8_t uri_ota_package[256] ={0}; + + char OTA_MSG[MSG_LEN] ={0}; + char NEW_VISON[MSG_LEN]={0}; + + bool OTA_FWPKG_CHECK(void); + uint8_t download_schedule_value=0; + void report_jsonString_write(void); + private: + SystemUpdateModel(); SystemUpdateModel(const SystemUpdateModel &) = delete; SystemUpdateModel &operator=(const SystemUpdateModel &) = delete; diff --git a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateView.h b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateView.h index af5307d95..73b9d4dbf 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateView.h @@ -15,10 +15,12 @@ #include "components/ui_label_ext.h" #include "components/ui_image_view.h" #include "components/ui_button.h" +#include "components/ui_slider.h" namespace OHOS { class SystemUpdatePresenter; + void upgrade_reported_data(void); class SystemUpdateView : public View { @@ -47,22 +49,42 @@ namespace OHOS UIButton *GetUpdateNowButtton(void); UIButton *GetTryAgainLaterButton(void); + void UpdateNowbutton_back(void); + void msg_text_set(bool); + void updatasider_back(void); + + void start_dwonload(void); + + UILabelExt *LatestVersionLabel{nullptr}; // 当前版本 + UILabelExt *VersionIdLabel{nullptr}; // 版本编号 + + UILabelExt *NEWMSGLabel{nullptr}; // 更新信息 + UILabelExt *NEWVersionIdLabel{nullptr}; // 需要更新的版本编号 + + UILabelExt *UpdateNowLabel{nullptr}; // 立即升级标签 + UILabelExt *TryAgainLaterLabel{nullptr}; // 稍后再试标签 + UIButton *UpdateNowButtton{nullptr}; // 立即升级按钮 + UIButton *TryAgainLaterButton{nullptr}; // 稍后再试按钮 + UISlider *updatasider{nullptr}; + UILabelExt *IMEIlabel{nullptr}; //imei + + UILabelExt *CATlabel{nullptr}; //imei + + private: bool SetSystemUpdateScrollView(void); UILabelExt *InitLabel_Ext(LabelConfig &labelConfig); - void SystemUpdateViewInit(void); + void SystemUpdateViewInit(uint8_t ); void NoNeedUpdateViewInit(void); void ClearAll(void); + + + UIScrollView *SystemUpdateScrollView{nullptr}; UILabelExt *Title{nullptr}; // 标题 UIImageView *KUMILOGOImage{nullptr}; // KUMILogo图片 - UILabelExt *LatestVersionLabel{nullptr}; // 最新版本 - UILabelExt *VersionIdLabel{nullptr}; // 版本编号 - UILabelExt *UpdateNowLabel{nullptr}; // 立即升级标签 - UILabelExt *TryAgainLaterLabel{nullptr}; // 稍后再试标签 - UIButton *UpdateNowButtton{nullptr}; // 立即升级按钮 - UIButton *TryAgainLaterButton{nullptr}; // 稍后再试按钮 + /* -------------------------------------------------------------------------- */ UIScrollView *NoNeedUpdateScrollView{nullptr}; UILabelExt *NoNeedUpdateTitle{nullptr}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateModel.cpp index 17fed699e..3c0c316c8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateModel.cpp @@ -7,9 +7,107 @@ */ #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"); @@ -25,11 +123,195 @@ namespace OHOS 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; + // } + } diff --git a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdatePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdatePresenter.cpp index bd5945988..17b9ff1ff 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdatePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdatePresenter.cpp @@ -68,6 +68,7 @@ namespace OHOS if (&view == systemUpdateView->GetUpdateNowButtton()) // 如果点击的是立即更新按钮 { + systemUpdateView->UpdateNowbutton_back(); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetUpdateNowButtton"); } else if (&view == systemUpdateView->GetTryAgainLaterButton()) // 如果点击的是稍后再说按钮 diff --git a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateView.cpp b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateView.cpp index 8c6d24773..0262dde94 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateView.cpp @@ -12,12 +12,294 @@ #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 +#include +#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 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 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(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(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_20240507_185224"); + #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"); @@ -66,8 +348,27 @@ namespace OHOS 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) @@ -87,6 +388,148 @@ namespace OHOS 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(); + #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) { @@ -132,7 +575,7 @@ namespace OHOS return true; } - void SystemUpdateView::SystemUpdateViewInit(void) + void SystemUpdateView::SystemUpdateViewInit(uint8_t flag) { if (!SetSystemUpdateScrollView()) { @@ -169,7 +612,7 @@ namespace OHOS /* --------------------------- LatestVersionLabel --------------------------- */ Config = { .left = 33, - .top = 227, + .top = 227+30, .width = 400, .height = 35, .fontSize = 30, @@ -178,12 +621,50 @@ namespace OHOS .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(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(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) @@ -191,17 +672,60 @@ namespace OHOS 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, @@ -215,10 +739,11 @@ namespace OHOS 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, @@ -239,7 +764,7 @@ namespace OHOS 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 -------------------------- */ @@ -249,7 +774,7 @@ namespace OHOS 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); @@ -263,6 +788,31 @@ namespace OHOS 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); @@ -272,94 +822,136 @@ namespace OHOS 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(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::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) { - NoNeedUpdateViewInit(); + UpdateNowLabel->SetText("获取升级"); + NEWMSGLabel->SetText("升级成功"); + NEWVersionIdLabel->SetText(""); + SystemUpdateModel ::GetInstance().button_flag=OTA_BUTTON_GET_VISON; } - else + if(flag==OTA_BUTTON_GET_ABLE_UPDTAT_FAIL) { - // 如果需要系统更新 - SystemUpdateViewInit(); + 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); + } + RootView::GetInstance()->Add(SystemUpdateScrollView); + } + + void SystemUpdateView::NoNeedUpdateViewInit(void) + { + + } + + void SystemUpdateView::OnStart() + { + View::OnStart(); + + + + SystemUpdateViewInit(SystemUpdateModel ::GetInstance().button_flag); + + // 增加按键监听 RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::SystemUpdatePresenter::GetInstance(); RootView::GetInstance()->SetOnKeyActListener(keyactListener); diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h index f405686ce..8c5315c84 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h @@ -180,7 +180,6 @@ void ble_get_drink_remind(msg_drink_info_t *data); void ble_get_sleep_remind(msg_get_sleep_param_info_t *data); void ble_set_sleep_remind(msg_get_sleep_param_info_t data); - #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/CMakeLists.txt b/code/sdk/drivers/peripheral/slip/cat1Service/CMakeLists.txt index be64061ae..04fe4ea30 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/CMakeLists.txt +++ b/code/sdk/drivers/peripheral/slip/cat1Service/CMakeLists.txt @@ -12,8 +12,8 @@ set(PRIVATE_HEADER ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits ${ROOT_DIR}/application/wearable/nativeapp/nativeui/heartrate/include - ${ROOT_DIR}/application/wearable/fd230app/nativeui/phone/include - ${ROOT_DIR}/application/wearable/fd230app/nativeui/system/include + ${ROOT_DIR}/application/wearable/fd230app/nativeui/phone/include + ${ROOT_DIR}/application/wearable/fd230app/nativeui/systemupdate/include ) set(SOURCES diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server_hal.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server_hal.cpp index 090a022bc..491aba3a4 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server_hal.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server_hal.cpp @@ -17,7 +17,7 @@ #include "samgr_lite.h" #include "thread_adapter.h" #include "graphic_service.h" -#include "SystemModel.h" +#include "SystemUpdateModel.h" #ifdef __cplusplus extern "C" { diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 3de235e39..842114fc4 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -322,7 +322,7 @@ void startup_post_init_task(void) LOS_Msleep(5000); addressbookToRead(NULL); - // up_report_timer(); + up_report_timer(); if ( poweron_cat1_on_bootup_flag() ) { PRINT("PowerOn Cat1 !\r\n");