[Feature][ZXW-113] add fota Self starting service

Only Configure:No
Affected branch:master
Affected module:Fota
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update:No

Change-Id: I8c51852d482acf3756223dd66076a5a3d8557a10
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-fota/lynq-qser-fota.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-fota/lynq-qser-fota.cpp
index 9baced7..e0dcafd 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-fota/lynq-qser-fota.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-fota/lynq-qser-fota.cpp
@@ -28,14 +28,15 @@
 #include "include/lynq-qser-fota.h"

 #include "liblog/lynq_deflog.h"

 

+#define FOTA_FLAG_FILE "/mnt/userdata/.back_up_flag"

 

-#define USER_LOG_TAG "LYNQ_FOTA"

-

+#define USER_LOG_TAG    "LYNQ_FOTA"

+#define FOTA_ADDR_FILE  "/mnt/userdata/.addr_value"

+#define FOTA_FILE_NAME  "upgrade.package"

 

 #define  SYSTEM_A  "34650"

 #define  SYSTEM_B  "39019"

 

-char path[] = {0};

 

 #define BOOTABLE   "45227"

 #define UNBOOTABLE "47806"

@@ -49,7 +50,6 @@
 #define    LYNQ_UPGRADE_STATUS_UPDATE_FAIL         (5)

 

 

-

 typedef struct

 {

     int system;

@@ -121,7 +121,17 @@
     

     int ret = 0;

     int current_slot = 0;

-

+    int fota_sync_flag = 0;

+    FILE *fp = NULL;

+    fp = fopen(FOTA_FLAG_FILE,"w+");

+    if(fp == NULL)

+    {

+        LYINFLOG("Creat fota flag file failed");

+        return -1;

+    }

+    fwrite(&fota_sync_flag,sizeof(int),1,fp);

+    fclose(fp);

+    

     ret = lynq_fota_verify();

     if(ret != 0)

     {

@@ -209,7 +219,18 @@
         }

 

     }

-

+    

+    fp = fopen(FOTA_FLAG_FILE,"w+");

+    if(fp == NULL)

+    {

+        LYINFLOG("Creat fota flag file failed");

+        return -1;

+    }

+    

+    fota_sync_flag = 1;

+    fwrite(&fota_sync_flag,sizeof(int),1,fp);

+    fclose(fp);

+    

     if(reboot_flag == 1)

     {

         LYINFLOG("Enter reboot device");

@@ -251,7 +272,7 @@
 int lynq_fota_set_addr_value(char        *value,int size)

 {

     int ret =0;

-    

+    FILE *fp = NULL;    

     LYLOGSET(LOG_INFO);

     LYLOGEINIT(USER_LOG_TAG);

     

@@ -267,10 +288,62 @@
         return -1;

     }

     

+    fp = fopen(FOTA_ADDR_FILE,"w+");

+    if(fp == NULL)

+    {

+        LYINFLOG("Open addr file failed");

+        return -1;

+    }

+    

+    fprintf(fp,"%s",value);

+    fclose(fp);

+

     LYINFLOG("Configure upgrade package path success");

     return 0;

 }

 

+/*****************************************

+* @brief:lynq_fota_get_addr_value

+* @param count [IN]:char  *tmp_value

+* @param sum [OUT]:

+* @return :success 0, failed -1

+* @todo:NA

+* @see:NA

+* @warning:NA

+******************************************/

+int lynq_fota_get_addr_value(char *tmp_value)

+{

+    FILE *fp = NULL;

+    char tmp_addr[128] = {0};

+

+ 

+    fp = fopen(FOTA_ADDR_FILE,"r");

+    if(fp == NULL)

+    {

+        LYINFLOG("Open fota addr faile failed!!!");

+        return -1;

+    }

+    while(fgets(tmp_addr,sizeof(tmp_addr),fp) != NULL)

+    {

+        if( strstr(tmp_addr,FOTA_FILE_NAME) != NULL)

+        {

+            strncpy(tmp_value,tmp_addr,sizeof(tmp_addr) - 1);

+            break;

+        }

+        else

+        {

+            LYINFLOG("Get addr failed\n");

+            fclose(fp);

+            return -1;

+        }

+    }

+

+    fclose(fp);

+    return 0;

+        

+

+}

+

 

 /*****************************************

 * @brief:lynq_fota_verify

@@ -740,4 +813,3 @@
 #ifdef __cplusplus

 }

 #endif

-