[Feature] You can specify the address for obtaining the upgrade package(The third party code )

Change-Id: I294c21d33d84d53c700598624e6863737ae97414
diff --git a/src/lynq/lib/liblynq-fota/include/iot_rock.h b/src/lynq/lib/liblynq-fota/include/iot_rock.h
index fbeba75..3fe2427 100755
--- a/src/lynq/lib/liblynq-fota/include/iot_rock.h
+++ b/src/lynq/lib/liblynq-fota/include/iot_rock.h
@@ -17,6 +17,7 @@
 #define E_ROCK_WRITE_BLOCK_ERROR (-12)

 #define E_ROCK_RAM_NOT_ENOUGH (-20)

 #define E_ROCK_INVALID_CTX	(-30)

+#define E_ROCK_FOTA_ADDR (-50)

 

 

 #define PATCH_SYSTEM   (1)

@@ -129,6 +130,10 @@
 ssize_t lynq_nand_write(int fd, void *buf, size_t count);

 int lynq_nand_close(int fd);

 int lynq_get_upgrade_status(void);

+void lynq_reboot_device(void);

+int lynq_fota_nrestart(void);

+int lynq_fota_set_addr_value(char *value,int size);

+int lynq_fota_get_addr_value(char *tmp);

 #endif

 

 

diff --git a/src/lynq/lib/liblynq-fota/makefile b/src/lynq/lib/liblynq-fota/makefile
old mode 100644
new mode 100755
index dfdb8f6..b460dbc
--- a/src/lynq/lib/liblynq-fota/makefile
+++ b/src/lynq/lib/liblynq-fota/makefile
@@ -34,6 +34,7 @@
     -lbootctrl  \
     -llynq-log \
     -llynq-protcl \
+    -llynq-uci \
 
 SOURCES = $(wildcard *.c wildcard *.h rock_ua/*.c  MD5/*c)
 
diff --git a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
index 50b3c37..8a80ac2 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -30,6 +30,7 @@
 
 #include "liblog/lynq_deflog.h"
 #include "mtk_device_wrap.h"
+#include <include/lynq_uci.h>
 
 #define ROCK_DEFAULT_BLOCK_SIZE 0x40000
 #define ROCK_RAM_LEN  (1024*1024)
@@ -69,6 +70,9 @@
 #define DEV_DELTA       "/dev/mtd41"	
 #endif
 
+#define FOTA_UCI_MODULE "lynq_fota"
+#define FOTA_UCI_FILE "lynq_uci"
+#define FOTA_UCI_ADDR "lynq_fota_addr"
 
 #define FILE_UPDATE_STATE  "/data/.update_status"
 #define FILE_FOTA_STATE    "/data/.fota_status"
@@ -292,7 +296,7 @@
     int ret = 0,err = 0;
 	
     
-    if (mtk_device_wrap_seek(fd_delta, offset + delta_offset, SEEK_SET) < 0) {
+    if (lseek(fd_delta, offset + delta_offset, SEEK_SET) < 0) {
         err = -errno;
         rock_trace(ctx, "mtk_device_wrap_seek df_delta err\n");
 		return err;
@@ -300,7 +304,7 @@
 
     do {
 
-        ret = mtk_device_wrap_read(fd_delta, dest, size);
+        ret = read(fd_delta, dest, size);
 
         if (ret == 0) {
             break;
@@ -311,7 +315,7 @@
             err = -errno;
             rock_trace(ctx," Error reading metadata file\n");
 
-            mtk_device_wrap_close(fd_delta);
+            close(fd_delta);
 
             return err;
         }
@@ -338,9 +342,14 @@
 {
 
     int err;
-
+    char lynq_fota_addr[64] = {0};
+    if(0 != lynq_fota_get_addr_value(lynq_fota_addr))
+    {
+        return E_ROCK_FOTA_ADDR;
+    }
+    LYERRLOG("+[UA]: get fota pack addr: %s\n",lynq_fota_addr);
     //fd_delta = mtk_device_wrap_open(DEV_DELTA,O_RDONLY);
-    fd_delta = mtk_device_wrap_open(DEV_DELTA,O_RDWR);
+    fd_delta = open(lynq_fota_addr,O_RDWR);
 
     if (fd_delta < 0) {
         err = errno;
@@ -366,7 +375,7 @@
 
 static int close_dev_fd(int fd)
 {
-    mtk_device_wrap_close(fd);
+    close(fd);
 }
 
 
@@ -451,7 +460,7 @@
 	int err;
 
 
-	if (mtk_device_wrap_seek(fd_delta, start, SEEK_SET) < 0) {
+	if (lseek(fd_delta, start, SEEK_SET) < 0) {
         LYERRLOG("+[UA]: delta_copyto_nand seek err\n");
 		return -1;
     }
@@ -464,7 +473,7 @@
  
     do {
 
-        ret = mtk_device_wrap_read(fd_delta, delta_data, NAND_PAGE_SIZE);
+        ret = read(fd_delta, delta_data, NAND_PAGE_SIZE);
 
         if (ret == 0) {
             break;
@@ -559,9 +568,11 @@
     //ctx.first_run = first_run;
     ctx.first_run = 1;
 
-	
-    init_dev_fd();
-	
+    if(0 != init_dev_fd())
+    {
+        LYVERBLOG("+[UA]: get fota addr error\n");
+        return E_ROCK_FOTA_ADDR;
+    }
 
     memset(&up_info, 0, sizeof(up_info));
 	
@@ -594,7 +605,7 @@
 	
     memset(&da_head, 0, sizeof(da_head));
 
-	mtk_device_wrap_read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
+	read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
 
 
     rock_trace(&ctx, "da_head.sys:%d,da_head.boot:%d,da_head.tee:%d,da_head.md1img=%d,da_head.md1dsp=%d,da_head.vbmeta=%d,da_head.bl33=%d\n", da_head.sys, da_head.boot,da_head.tee,da_head.md1img,da_head.md1dsp,da_head.vbmeta,da_head.bl33);
@@ -1491,13 +1502,13 @@
 		fota_status.switch_slot = WAIT;
 		save_fota_status();
 		
-	    if (mtk_device_wrap_seek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
+	    if (lseek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
             err = errno;
             LYERRLOG("+[UA]: mtk_device_wrap_seek df_delta err\n");
 		    return -1;
         }
 		
-		mtk_device_wrap_read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
+		read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
 		
 
 	    if (memcmp(full_header, "full-ota", DELTA_FULL_HEARD_SIZE) != 0) {
@@ -2093,25 +2104,25 @@
 
 int lynq_nand_open(const char *pathname, int flags)
 {
-    printf("pathname:%s---flags:%d",pathname,flags);
-    return mtk_device_wrap_open(pathname,flags);
+//    printf("pathname:%s---flags:%d",pathname,flags);
+    return open(pathname,flags);
 }
 
 ssize_t lynq_nand_read(int fd, void *buf, size_t count)
 {
-    printf("rfd:%d---buf:%s---count:%d",fd,buf,count);
-    return mtk_device_wrap_read(fd,buf,count);
+//    printf("rfd:%d---buf:%s---count:%d",fd,buf,count);
+    return read(fd,buf,count);
 }
 
 ssize_t lynq_nand_write(int fd, void *buf, size_t count)
 {
-    printf("wfd:%d---buf:%s---count:%d",fd,buf,count);
-    return mtk_device_wrap_write(fd,buf,count);
+ //   printf("wfd:%d---buf:%s---count:%d",fd,buf,count);
+    return write(fd,buf,count);
 }
 
 int lynq_nand_close(int fd)
 {
-    return mtk_device_wrap_close(fd);
+    return close(fd);
 }
 
 /**
@@ -2224,9 +2235,11 @@
     //ctx.first_run = first_run;
     ctx.first_run = 1;
 
-	
-    init_dev_fd();
-	
+    if(0 != init_dev_fd())
+    {
+        LYVERBLOG("+[UA]: get fota addr error\n");
+        return E_ROCK_FOTA_ADDR;
+    }
 
     memset(&up_info, 0, sizeof(up_info));
 	
@@ -2259,7 +2272,7 @@
 	
     memset(&da_head, 0, sizeof(da_head));
 
-	mtk_device_wrap_read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
+	read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
 
 
     rock_trace(&ctx, "da_head.sys:%d,da_head.boot:%d,da_head.tee:%d,da_head.md1img=%d,da_head.md1dsp=%d,da_head.vbmeta=%d,da_head.bl33=%d\n", da_head.sys, da_head.boot,da_head.tee,da_head.md1img,da_head.md1dsp,da_head.vbmeta,da_head.bl33);
@@ -3156,13 +3169,13 @@
 		fota_status.switch_slot = WAIT;
 		save_fota_status();
 		
-	    if (mtk_device_wrap_seek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
+	    if (lseek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
             err = errno;
             LYERRLOG("+[UA]: mtk_device_wrap_seek df_delta err\n");
 		    return -1;
         }
 		
-		mtk_device_wrap_read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
+	    read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
 		
 
 	    if (memcmp(full_header, "full-ota", DELTA_FULL_HEARD_SIZE) != 0) {
@@ -3682,4 +3695,31 @@
     save_fota_status();
 	
 	return status;
-}
\ No newline at end of file
+}
+
+/**
+ * @brief Set the upgrade package address
+ * 
+ * @param1 value:fota addr
+ * @param1 szie:fota addr length
+ * @return 0:set success other:set fail
+ */
+int lynq_fota_set_addr_value(char *value,int size)
+{
+    if(size < 64)
+    {
+        return lynq_set_value(FOTA_UCI_MODULE,FOTA_UCI_ADDR, value);
+    }
+    return -1;
+}
+/**
+ * @brief get the upgrade package address
+ * 
+ * @param1 value:fota addr
+ * @return 0:get success other:set fail
+ */
+int lynq_fota_get_addr_value(char *tmp)
+{
+	return lynq_get_value(FOTA_UCI_FILE, FOTA_UCI_MODULE,FOTA_UCI_ADDR, tmp);
+}
+