ota升级
authorhcj_ <1224667075@qq.com>
Fri, 10 May 2024 06:44:10 +0000 (14:44 +0800)
committerhcj_ <1224667075@qq.com>
Fri, 10 May 2024 06:44:10 +0000 (14:44 +0800)
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h
code/sdk/application/wearable/fd230app/nativeui/system/include/Systemupgrade.h
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemModel.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/Systemupgrade.cpp
code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateModel.h
code/sdk/application/wearable/fd230app/nativeui/systemupdate/include/SystemUpdateView.h
code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateModel.cpp
code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdatePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/systemupdate/src/SystemUpdateView.cpp
code/sdk/drivers/peripheral/slip/cat1Service/CMakeLists.txt
code/sdk/drivers/peripheral/slip/cat1Service/cat1_server_hal.cpp

index 887572d..eba88ed 100644 (file)
@@ -82,11 +82,20 @@ namespace OHOS
             CONFIFMOFEL_ITEM_DRINK_START,//提醒开始时间 int类型 前16位小时,后16位分钟
             CONFIFMOFEL_ITEM_DRINK_END,//提醒结束时间 int类型 前16位小时,后16位分钟
             CONFIGMODEL_ITEM_DRINK_FREQ,//提醒频率 0:30分钟1:1小时2:2小时 3:3小时
+            //睡眠提醒相关
+            CONFIFMOFEL_ITEM_SLEEP, //开关
+            CONFIFMOFEL_ITEM_SLEEP_BEDTIME,//就寝时间
+            CONFIFMOFEL_ITEM_SLEEP_GET_UP,//起床时间
             CONFIFMOFEL_ITEM_SLEEP_REMIND,//提前20分钟提醒开关
+
             CONFIGMODEL_ITEM_MAX,
         } ;
 
         struct configmodel_item{
+            ConfigDataType type;
+            const char* itemname;
+            char  *defaultValue;
+        };
 
   
         const char* get_config_name(ConfigItem item)
index f070ade..588b3c3 100644 (file)
 
 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
     {
index d8a841f..908a359 100644 (file)
 
 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)
     {
index 4cd9299..4a5693b 100644 (file)
@@ -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<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");
-                }
-                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); 
index 82c7b6d..319ac05 100644 (file)
@@ -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 <iostream>
+#include <fstream>
+/**
+ * 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;
index af5307d..73b9d4d 100644 (file)
 #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<SystemUpdatePresenter>
     {
 
@@ -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};
index 17fed69..1a62e4e 100644 (file)
@@ -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;
+    // }
+
 }
index bd59459..17b9ff1 100644 (file)
@@ -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()) // 如果点击的是稍后再说按钮
index 8c6d247..ffc7975 100644 (file)
 #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");
@@ -68,6 +350,8 @@ namespace OHOS
 
             delete SystemUpdateScrollView;
             SystemUpdateScrollView = nullptr;
+
+
         }
 
         if (NoNeedUpdateScrollView != nullptr)
@@ -87,6 +371,143 @@ 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();
+            //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)
     {
@@ -132,7 +553,7 @@ namespace OHOS
         return true;
     }
 
-    void SystemUpdateView::SystemUpdateViewInit(void)
+    void SystemUpdateView::SystemUpdateViewInit(uint8_t flag)
     {
         if (!SetSystemUpdateScrollView())
         {
@@ -169,7 +590,7 @@ namespace OHOS
         /* --------------------------- LatestVersionLabel --------------------------- */
         Config = {
             .left = 33,
-            .top = 227,
+            .top = 227+30,
             .width = 400,
             .height = 35,
             .fontSize = 30,
@@ -178,12 +599,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<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)
@@ -191,17 +650,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 +717,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 +742,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 +752,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 +766,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 +800,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<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);
index be64061..04fe4ea 100644 (file)
@@ -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
index 090a022..491aba3 100644 (file)
@@ -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" {