[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
-