[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);
+}
+