[Bugfix][API-822]lynq_fota_nrestart return -2
Change-Id: Ifb6ba1fbbf1ceb0a376cfa66197621fc51ea9681
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-fota/liblynq-fota.bb b/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-fota/liblynq-fota.bb
index b46e947..85ccbee 100755
--- a/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-fota/liblynq-fota.bb
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-fota/liblynq-fota.bb
@@ -6,7 +6,7 @@
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
-DEPENDS += "bootctrl nandapi liblynq-protcl liblynq-log liblynq-uci"
+DEPENDS += "bootctrl nandapi liblynq-protcl liblynq-log"
inherit workonsrc
WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-fota"
@@ -64,4 +64,4 @@
addtask bachclean
do_bachclean () {
oe_runmake clean
-}
\ No newline at end of file
+}
diff --git a/src/lynq/lib/liblynq-fota/makefile b/src/lynq/lib/liblynq-fota/makefile
index 75b3e6e..26db17f 100755
--- a/src/lynq/lib/liblynq-fota/makefile
+++ b/src/lynq/lib/liblynq-fota/makefile
@@ -50,7 +50,6 @@
-lbootctrl \
-llynq-log \
-llynq-protcl \
- -llynq-uci \
SOURCES = $(wildcard *.c wildcard *.h rock_ua/*.c MD5/*c)
@@ -85,4 +84,4 @@
$(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
.PHONY: clean
clean:
- $(RM) $(OBJECTS) $(EXECUTABLE)
\ No newline at end of file
+ $(RM) $(OBJECTS) $(EXECUTABLE)
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 ead63c0..cd07981 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -5,7 +5,6 @@
#ifdef ROCK_FOTA_SUPPORT
-
#include "iot_rock.h"
#include "iot_rock_ipl.h"
#include "sha.h"
@@ -37,9 +36,7 @@
#define LOG_TAG "LYNQ_FOTA"
#define ROCK_BACKUP_LEN ROCK_DEFAULT_BLOCK_SIZE
-#ifdef GSW_FOTA_CFG
#define READ_BLOCK_SIZE 0x40000
-#endif
#define DEV_SYSTEM_A "/dev/disk/by-partlabel/system_a"
@@ -54,18 +51,19 @@
#define DEV_TEE_B "/dev/disk/by-partlabel/tee_b"
#define DEV_MD1DSP_A "/dev/disk/by-partlabel/md1dsp_a"
-#define DEV_MD1DSP_B "/dev/disk/by-partlabel/md1dsp_b"
+#define DEV_MD1DSP_B "/dev/disk/by-partlabel/md1dsp_b"
#define DEV_VBMETA_A "/dev/disk/by-partlabel/vbmeta_a"
#define DEV_VBMETA_B "/dev/disk/by-partlabel/vbmeta_b"
#ifdef GSW_FOTA_CFG
#define DEV_OEMAPP_A "/dev/disk/by-partlabel/oemapp_a"
-#define DEV_OEMAPP_B "/dev/disk/by-partlabel/oemapp_b"
+#define DEV_OEMAPP_B "/dev/disk/by-partlabel/oemapp_b"
#define DEV_OEMAPP2_A "/dev/disk/by-partlabel/oemapp2_a"
-#define DEV_OEMAPP2_B "/dev/disk/by-partlabel/oemapp2_b"
-#endif
+#define DEV_OEMAPP2_B "/dev/disk/by-partlabel/oemapp2_b"
+#endif
+
#define DEV_BL2 "/dev/disk/by-partlabel/bl2"
#define DEV_BL33 "/dev/disk/by-partlabel/bl33"
@@ -117,30 +115,27 @@
OTA_STATUS fota_status;
-#ifdef MOBILETEK_FOTA_CFG
UPDATE_INFO up_info;
-#endif
+
extern const hw_module_t HAL_MODULE_INFO_SYM;
boot_control_module_t* module;
static void lynq_init_wake_lock_func(void);
-static void lynq_fota_grab_artial_wake_lock(void);
+static void lynq_fota_acquire_wake_lock(void);
static void lynq_fota_release_wake_lock(void);
-
-#ifdef MOBILETEK_FOTA_CFG
int matchString(char* buf, char* sub);
int reset_fota_flag(void);
int get_fota_flag(void);
void check_ril_service(void);
-#endif
-int rock_mismatch(void* ctx, unsigned char* buf, unsigned int start, unsigned int size,
- unsigned int source_hash,unsigned int target_hash) {
- return 0;
+int rock_mismatch(void* ctx, unsigned char* buf, unsigned int start, unsigned int size,
+ unsigned int source_hash,unsigned int target_hash) {
+
+ return 0;
}
-
+
int rock_fatal(void* ctx, int error_code) {
return 0;
}
@@ -151,7 +146,7 @@
memset(rock_debug_buffer,0x0,sizeof(rock_debug_buffer));
va_start (ap, fmt);
vsnprintf(rock_debug_buffer,sizeof(rock_debug_buffer),fmt,ap);
- LYDBGLOG("+[UA]: %s",rock_debug_buffer);
+ RLOGD("+[UA]: %s",rock_debug_buffer);
va_end (ap);
}
@@ -350,36 +345,7 @@
/* ROCK IPL end */
-#ifdef GSW_FOTA_CFG
-static int init_dev_fd()
-{
- int err;
- char lynq_fota_addr[64] = {0};
- if(0 != lynq_fota_get_addr_value(lynq_fota_addr))
- {
- return E_ROCK_FOTA_ADDR;
- }
- RLOGD("+[UA]: get fota pack addr: %s\n", lynq_fota_addr);
- fd_delta = open(lynq_fota_addr,O_RDWR);
-
- if (fd_delta < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- return -err;
- }
-
- fd_update_status = open(FILE_UPDATE_STATE,O_RDWR | O_CREAT,0777);
- if (fd_update_status < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening fd_delta file: %s\n",strerror(errno));
- return -err;
- }
-
- return 0;
-}
-#endif
-#ifdef MOBILETEK_FOTA_CFG
static int init_dev_fd()
{
@@ -414,11 +380,7 @@
get_fota_flag();
return 0;
}
-#endif
-
-
-#ifdef MOBILETEK_FOTA_CFG
static int reboot_device()
{
sleep(5);
@@ -426,21 +388,6 @@
sleep(5);
system("reboot");
}
-#endif
-#ifdef GSW_FOTA_CFG
-static int close_dev_fd(int fd)
-{
- close(fd);
-}
-
-
-static int reboot_device() {
-
- reboot(RB_AUTOBOOT);
-
- while (1) pause();
-}
-#endif
@@ -463,9 +410,7 @@
RLOGD("+[UA]: open target error\n");
return 1;
}
-#ifdef MOBILETEK_FOTA_CFG
system("flash_eraseall /dev/mtd41");
-#endif
while(( size = read(fd_source,delta_data,ROCK_DEFAULT_BLOCK_SIZE))>0) {
mtk_device_wrap_write(fd_target,delta_data,ROCK_DEFAULT_BLOCK_SIZE);
}
@@ -501,7 +446,7 @@
while(( size = mtk_device_wrap_read(fd_source,delta_data,ROCK_DEFAULT_BLOCK_SIZE))>0) {
mtk_device_wrap_write(fd_target,delta_data,ROCK_DEFAULT_BLOCK_SIZE);
}
-
+
mtk_device_wrap_close(fd_target);
mtk_device_wrap_close(fd_source);
return 0;
@@ -509,23 +454,23 @@
int delta_copyto_nand(unsigned int start,int size)
{
-
+
char delta_data[NAND_PAGE_SIZE];
- unsigned int ret = 0;
- int err;
+ unsigned int ret = 0;
+ int err;
- if (lseek(fd_delta, start, SEEK_SET) < 0) {
- LYERRLOG("+[UA]: delta_copyto_nand seek err\n");
- return -1;
+ if (lseek(fd_delta, start, SEEK_SET) < 0) {
+ RLOGD("+[UA]: delta_copyto_nand seek err\n");
+ return -1;
}
-
- if (mtk_device_wrap_seek(fd_curr, 0, SEEK_SET) < 0) {
- LYERRLOG("+[UA]: delta_copyto_nand seek err\n");
- return -1;
+
+ if (mtk_device_wrap_seek(fd_curr, 0, SEEK_SET) < 0) {
+ RLOGD("+[UA]: delta_copyto_nand seek err\n");
+ return -1;
}
-
-
+
+
do {
memset(delta_data,0,NAND_PAGE_SIZE);
ret = read(fd_delta, delta_data, NAND_PAGE_SIZE);
@@ -540,23 +485,20 @@
return err;
}
-
- size -= NAND_PAGE_SIZE;
- mtk_device_wrap_write(fd_curr,delta_data,NAND_PAGE_SIZE);
- //mtk_device_wrap_write(fd_curr,delta_data,ret);
+ size -= NAND_PAGE_SIZE;
+ mtk_device_wrap_write(fd_curr,delta_data,NAND_PAGE_SIZE);
+ //mtk_device_wrap_write(fd_curr,delta_data,ret);
} while(size > 0);
-
-
- return 0;
-
+ return 0;
+
}
unsigned char ram_buffer[ROCK_RAM_LEN];
-#ifdef MOBILETEK_FOTA_CFG
-static int rock_update_main(unsigned int rom_base, unsigned int backup_base, unsigned int backup_len, int read_rom_directly, int first_run) {
+
+static int rock_update_main(unsigned int rom_base, unsigned int backup_base, unsigned int backup_len, int read_rom_directly, int first_run, int reboot_flag) {
int status,err;
int ret = 0;
int i = 0;
@@ -594,13 +536,13 @@
}
lynq_init_wake_lock_func();
- lynq_fota_grab_artial_wake_lock();
- /************* Bootctrl Init End *************/
+ lynq_fota_acquire_wake_lock();
+ /************* Bootctrl Init End *************/
current_slot = module->getCurrentSlot(module);
-
+
int is_successful = module->isSlotMarkedSuccessful(module, current_slot);
-
+
RLOGD("+[UA]: Booting slot = %d, : isSlotMarkedSuccessful= %d\n",current_slot,is_successful);
@@ -657,11 +599,17 @@
memset(&da_head, 0, sizeof(da_head));
read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
-
+#ifdef MOBILETEK_FOTA_CFG
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);
rock_trace(&ctx, "da_head.fullsys:%d,da_head.fullboot:%d,da_head.fulltee:%d,da_head.fullmd1img=%d,da_head.fullmd1dsp=%d,da_head.fullvbmeta=%d,da_head.fullbl33=%d\n", da_head.full_sys, da_head.full_boot,da_head.full_tee, da_head.full_md1img,da_head.full_md1dsp,da_head.full_vbmeta,da_head.full_bl33);
+#endif
-
+#ifdef GSW_FOTA_CFG
+ 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.oemapp=%d,da_head.oemapp2=%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.oemapp,da_head.oemapp2,da_head.bl33);
+ rock_trace(&ctx, "da_head.fullsys:%d,da_head.fullboot:%d,da_head.fulltee:%d,da_head.fullmd1img=%d,da_head.fullmd1dsp=%d,da_head.fullvbmeta=%d,da_head.full_oemapp=%d,da_head.full_oemapp2=%d,da_head.fullbl33=%d\n", da_head.full_sys, da_head.full_boot,da_head.full_tee, da_head.full_md1img,da_head.full_md1dsp,da_head.full_vbmeta,da_head.full_oemapp,da_head.full_oemapp2,da_head.full_bl33);
+#endif
+
+
if (da_head.sys>0) {
fota_status.update_status[PATCH_SYSTEM - 1].need_update = 1;
}
@@ -680,10 +628,20 @@
if (da_head.vbmeta>0) {
fota_status.update_status[PATCH_VBMETA - 1].need_update = 1;
}
+#ifdef GSW_FOTA_CFG
+ if (da_head.oemapp>0)
+ {
+ fota_status.update_status[PATCH_OEMAPP - 1].need_update = 1;
+ }
+ if (da_head.oemapp2>0)
+ {
+ fota_status.update_status[PATCH_OEMAPP2 - 1].need_update = 1;
+ }
+#endif
if (da_head.bl33>0) {
fota_status.update_status[PATCH_BL33 - 1].need_update = 1;
}
-
+
if (da_head.full_sys>0) {
fota_status.update_status[FULL_SYSTEM - 1].need_update = 1;
}
@@ -705,11 +663,21 @@
if (da_head.full_vbmeta>0) {
fota_status.update_status[FULL_VBMETA - 1].need_update = 1;
}
+#ifdef GSW_FOTA_CFG
+ if (da_head.full_oemapp>0)
+ {
+ fota_status.update_status[FULL_OEMAPP - 1].need_update = 1;
+ }
+ if (da_head.full_oemapp2>0)
+ {
+ fota_status.update_status[FULL_OEMAPP2 - 1].need_update = 1;
+ }
+#endif
fota_status.switch_slot = WAIT;
save_fota_status();
delta_size = da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.bl33;
-
+
if ((da_head.sys>0) && (up_info.ota_run <= PATCH_SYSTEM))
{
@@ -1465,9 +1433,226 @@
mtk_device_wrap_close(fd_read);
mtk_device_wrap_close(fd_write);
+ }
+#ifdef GSW_FOTA_CFG
+if ((da_head.oemapp>0) && (up_info.ota_run <= PATCH_OEMAPP))
+ {
+ now_patch = PATCH_OEMAPP;
+ delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta;
+
+ if (up_info.ota_run == PATCH_OEMAPP)
+ {
+ ctx.first_run = 0;
+ }
+ else
+ {
+ ctx.first_run = 1;
+ }
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/oemapp_a");
+ }
+ else
+ {
+ system("flash_eraseall /dev/disk/by-partlabel/oemapp_b");
+ }
+ fd_oemapp_a = mtk_device_wrap_open(DEV_OEMAPP_A,O_RDWR);
+ if (fd_oemapp_a < 0)
+ {
+ err = errno;
+ RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
+ lynq_fota_release_wake_lock();
+ return -err;
+ }
+
+ fd_oemapp_b = mtk_device_wrap_open(DEV_OEMAPP_B,O_RDWR);
+ if (fd_oemapp_b < 0)
+ {
+ err = errno;
+ RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
+ lynq_fota_release_wake_lock();
+ return -err;
+ }
+
+ if(current_slot==SLOT_B)
+ {
+ fd_read = fd_oemapp_b;
+ fd_write = fd_oemapp_a;
+ }
+ else
+ {
+ fd_read = fd_oemapp_a;
+ fd_write = fd_oemapp_b;
+ }
+
+
+ fota_status.ota_run = PATCH_OEMAPP;
+ fota_status.update_status[PATCH_OEMAPP-1].check_delta = WAIT;
+ fota_status.update_status[PATCH_OEMAPP-1].check_rom = WAIT;
+ fota_status.update_status[PATCH_OEMAPP-1].update_result= WAIT;
+
+ save_fota_status();
+
+ up_info.ota_run = PATCH_OEMAPP;
+
+ lseek(fd_update_status,0,SEEK_SET);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
+
+ RLOGD("+[UA]: Start upgrading oemapp.\n");
+ status = iot_patch(&ctx);
+ RLOGD("+[UA]: oemapp upgrade result:%d\n",status);
+
+ up_info.ota_run = 0;
+ //fota_status.ota_run = 0;
+ fota_status.update_status[PATCH_OEMAPP-1].update_result= status;
+ fota_status.update_result= status;
+
+ if((status == 0)||(status ==1))
+ {
+ fota_status.update_status[PATCH_OEMAPP-1].check_delta = PASS;
+ fota_status.update_status[PATCH_OEMAPP-1].check_rom = PASS;
+ }else if(status == E_ROCK_INVALID_DELTA) {
+ fota_status.update_status[PATCH_OEMAPP-1].check_delta = ERROR;
+ fota_status.update_status[PATCH_OEMAPP-1].check_rom = WAIT;
+ }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
+ fota_status.update_status[PATCH_OEMAPP-1].check_delta = PASS;
+ fota_status.update_status[PATCH_OEMAPP-1].check_rom = ERROR;
+ }else{
+ //fota_status.update_status[PATCH_OEMAPP -1].check_delta = PASS;
+ //fota_status.update_status[PATCH_OEMAPP -1].check_rom = WAIT;
+ }
+
+ save_fota_status();
+
+ if ((status != 0) &&(status != 1))
+ {
+ up_info.fota_flag[0] = 'e';
+ up_info.fota_flag[1] = 'n';
+ up_info.fota_flag[2] = 'd';
+ up_info.update_result = status;
+ up_info.ota_run = 0;
+ lseek(fd_update_status,0,SEEK_SET);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
+ close(fd_update_status);
+ mtk_device_wrap_close(fd_read);
+ mtk_device_wrap_close(fd_write);
+ lynq_fota_release_wake_lock();
+ return status;
+ }
+ mtk_device_wrap_close(fd_read);
+ mtk_device_wrap_close(fd_write);
}
+ if ((da_head.oemapp2>0) && (up_info.ota_run <= PATCH_OEMAPP2))
+ {
+
+ now_patch = PATCH_OEMAPP2;
+ delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp;
+
+ if (up_info.ota_run == PATCH_OEMAPP2)
+ {
+ ctx.first_run = 0;
+ }
+ else
+ {
+ ctx.first_run = 1;
+ }
+
+ if(current_slot==SLOT_B)
+ {
+ system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
+ }
+ else
+ {
+ system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
+ }
+
+ fd_oemapp2_a = mtk_device_wrap_open(DEV_OEMAPP2_A,O_RDWR);
+ if (fd_oemapp2_a < 0)
+ {
+ err = errno;
+ RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
+ lynq_fota_release_wake_lock();
+ return -err;
+ }
+
+ fd_oemapp2_b = mtk_device_wrap_open(DEV_OEMAPP2_B,O_RDWR);
+ if (fd_oemapp2_b < 0)
+ {
+ err = errno;
+ RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
+ lynq_fota_release_wake_lock();
+ return -err;
+ }
+
+ if(current_slot==SLOT_B)
+ {
+ fd_read = fd_oemapp2_b;
+ fd_write = fd_oemapp2_a;
+ }
+ else
+ {
+ fd_read = fd_oemapp2_a;
+ fd_write = fd_oemapp2_b;
+ }
+
+ fota_status.ota_run = PATCH_OEMAPP2;
+ fota_status.update_status[PATCH_OEMAPP2-1].check_delta = WAIT;
+ fota_status.update_status[PATCH_OEMAPP2-1].check_rom = WAIT;
+ fota_status.update_status[PATCH_OEMAPP2-1].update_result= WAIT;
+
+ save_fota_status();
+ up_info.ota_run = PATCH_OEMAPP2;
+ lseek(fd_update_status,0,SEEK_SET);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
+ RLOGD("+[UA]: Start upgrading oemapp2.\n");
+ status = iot_patch(&ctx);
+ RLOGD("+[UA]: oemapp2 upgrade result:%d\n",status);
+
+ up_info.ota_run = 0;
+ fota_status.update_status[PATCH_OEMAPP2-1].update_result= status;
+ fota_status.update_result= status;
+
+ if((status == 0)||(status ==1))
+ {
+ fota_status.update_status[PATCH_OEMAPP2-1].check_delta = PASS;
+ fota_status.update_status[PATCH_OEMAPP2-1].check_rom = PASS;
+ }else if(status == E_ROCK_INVALID_DELTA) {
+ fota_status.update_status[PATCH_OEMAPP2-1].check_delta = ERROR;
+ fota_status.update_status[PATCH_OEMAPP2-1].check_rom = WAIT;
+ }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
+ fota_status.update_status[PATCH_OEMAPP2-1].check_delta = PASS;
+ fota_status.update_status[PATCH_OEMAPP2-1].check_rom = ERROR;
+ }else{
+ //fota_status.update_status[PATCH_OEMAPP2 -1].check_delta = PASS;
+ //fota_status.update_status[PATCH_OEMAPP2 -1].check_rom = WAIT;
+ }
+
+ save_fota_status();
+ if ((status != 0) &&(status != 1))
+ {
+ up_info.fota_flag[0] = 'e';
+ up_info.fota_flag[1] = 'n';
+ up_info.fota_flag[2] = 'd';
+ up_info.update_result = status;
+ up_info.ota_run = 0;
+ lseek(fd_update_status,0,SEEK_SET);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
+ close(fd_update_status);
+ mtk_device_wrap_close(fd_read);
+ mtk_device_wrap_close(fd_write);
+ lynq_fota_release_wake_lock();
+ return status;
+ }
+ mtk_device_wrap_close(fd_read);
+ mtk_device_wrap_close(fd_write);
+ }
+#endif
if ((da_head.bl33>0) && (up_info.ota_run <= PATCH_BL33))
{
@@ -1723,1860 +1908,6 @@
fd_boot_b = mtk_device_wrap_open(DEV_BOOT_B,O_RDWR);
if (fd_boot_b < 0) {
err = errno;
- RLOGD("+[UA]: Error opening full_boot file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_boot_b;
- }
- fota_status.ota_run = FULL_BOOT;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading boot full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_boot);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_boot,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_boot,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
-
- RLOGD("+[UA]: boot full retry_cnt = %d\n",retry_cnt);
- mtk_device_wrap_close(fd_curr);
-
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_BOOT_B,DEV_BOOT_A);
- }
- else{
- nand_copyto_nand(DEV_BOOT_A,DEV_BOOT_B);
- }
- }
-
-
- RLOGD("+[UA]: boot full upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_BOOT-1].update_result = status;
- save_fota_status();
-
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
- }
-
-
- if(da_head.full_tee>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/tee_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/tee_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_tee_a = mtk_device_wrap_open(DEV_TEE_A,O_RDWR);
- if (fd_tee_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_tee file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_tee_a;
- }else{
- fd_tee_b = mtk_device_wrap_open(DEV_TEE_B,O_RDWR);
- if (fd_tee_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_tee file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_tee_b;
- }
- fota_status.ota_run = FULL_TEE;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading tee full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_tee);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_tee,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_tee,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
- RLOGD("+[UA]: tee full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_TEE_B,DEV_TEE_A);
- }
- else{
- nand_copyto_nand(DEV_TEE_A,DEV_TEE_B);
- }
- }
-
- printf("+[UA] tee full upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_TEE-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_md1img>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_md1img_a = mtk_device_wrap_open(DEV_MD1IMG_A,O_RDWR);
- if (fd_md1img_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_md1img file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1img_a;
- }else{
- fd_md1img_b = mtk_device_wrap_open(DEV_MD1IMG_B,O_RDWR);
- if (fd_md1img_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_md1img file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1img_b;
- }
- fota_status.ota_run = FULL_MD1IMG;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading md1img full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_md1img);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1img,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1img,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: md1img full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_MD1IMG_B,DEV_MD1IMG_A);
- }
- else{
- nand_copyto_nand(DEV_MD1IMG_A,DEV_MD1IMG_B);
- }
- }
-
- RLOGD("+[UA]: md1img upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_MD1IMG-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_md1dsp>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_md1dsp_a = mtk_device_wrap_open(DEV_MD1DSP_A,O_RDWR);
- if (fd_md1dsp_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_md1dsp file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1dsp_a;
- }else{
- fd_md1dsp_b = mtk_device_wrap_open(DEV_MD1DSP_B,O_RDWR);
- if (fd_md1dsp_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_md1dsp file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1dsp_b;
- }
- fota_status.ota_run = FULL_MD1DSP;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading md1dsp full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_md1dsp);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1dsp,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1dsp,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: md1dsp full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_MD1DSP_B,DEV_MD1DSP_A);
- }
- else{
- nand_copyto_nand(DEV_MD1DSP_A,DEV_MD1DSP_B);
- }
- }
-
- RLOGD("+[UA]: md1dsp upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_MD1DSP-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_vbmeta>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_vbmeta_a = mtk_device_wrap_open(DEV_VBMETA_A,O_RDWR);
- if (fd_vbmeta_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_vbmeta file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_vbmeta_a;
- }else{
- fd_vbmeta_b = mtk_device_wrap_open(DEV_VBMETA_B,O_RDWR);
- if (fd_vbmeta_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_vbmeta file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_vbmeta_b;
- }
- fota_status.ota_run = FULL_VBMETA;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading vbmeta full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_vbmeta);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_vbmeta,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_vbmeta,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: vbmeta full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_VBMETA_B,DEV_VBMETA_A);
- }
- else{
- nand_copyto_nand(DEV_VBMETA_A,DEV_VBMETA_B);
- }
- }
-
- RLOGD("+[UA]: vbmeta upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_VBMETA-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
- if(da_head.full_bl33>0) {
-
- }
-
-
-
- if(update_mode == MODE_NORMAL)
- {
- RLOGD("set fota_flag start\n");
- if(current_slot == SLOT_A)
- {
- up_info.fota_flag[0] = 'B';
- up_info.fota_flag[1] = '-';
- up_info.fota_flag[2] = 'A';
- }
- else
- {
- up_info.fota_flag[0] = 'A';
- up_info.fota_flag[1] = '-';
- up_info.fota_flag[2] = 'B';
- }
- }
- else
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- }
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- RLOGD("up_info: fota_flag: %s\n",up_info.fota_flag);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_delta);
- close(fd_update_status);
- sync();
-
- slot = (current_slot == 0) ? 1 : 0;
- RLOGD("+[UA]: slot SLOT = %d\n",slot);
- if(update_mode==MODE_NORMAL){
- module->setActiveBootSlot(module,slot);
- RLOGD("+[UA]:slot %d upgrade is success!!!!\n", slot);
- }
- fota_status.ota_run = 0;
- fota_status.switch_slot = PASS;
- fota_status.update_result = status;
- save_fota_status();
- lynq_fota_release_wake_lock();
-
- if(update_mode==MODE_NORMAL)
- {
- reboot_device();
- }
-
- return status;
-}
-#endif
-#ifdef GSW_FOTA_CFG
-static int rock_update_main(unsigned int rom_base, unsigned int backup_base, unsigned int backup_len, int read_rom_directly, int first_run, int switch_slot_flag) {
- int status,err,start;
- int ret = 0;
- int i = 0;
- int retry_cnt = 0;
-
- IOT_UPDATA_CONTEXT ctx;
- UPDATE_INFO up_info;
- //OTA_STATUS fota_status;
-
-
- const hw_module_t* hw_module;
- unsigned int slot;
-
- unsigned int update_mode = MODE_NORMAL;
- unsigned int delta_size;
- unsigned char full_header[9];
-
- char digest_s[SHA_DIGEST_SIZE];
- char digest_t[SHA_DIGEST_SIZE];
-
-
- hw_module = &HAL_MODULE_INFO_SYM;
-
- if (!hw_module ||
- strcmp(BOOT_CONTROL_HARDWARE_MODULE_ID, hw_module->id) != 0) {
- ret = -EINVAL;
- }
- if (ret != 0) {
- RLOGD("+[UA]: Error loading boot_control HAL implementation.\n");
- return -1;
- }
-
- module = (boot_control_module_t*)hw_module;
- module->init(module);
-
-
- if (module == NULL) {
- RLOGD("+[UA]: Error getting bootctrl module.\n");
- return -1;
- }
-
- lynq_init_wake_lock_func();
- lynq_fota_grab_artial_wake_lock();
- /************* Bootctrl Init End *************/
-
- current_slot = module->getCurrentSlot(module);
-
- int is_successful = module->isSlotMarkedSuccessful(module, current_slot);
-
- RLOGD("Booting slot = %d, : isSlotMarkedSuccessful= %d\n",current_slot,is_successful);
-
-
-
- memset(&ctx, 0, sizeof(ctx));
- ctx.rom_base = 0;
- ctx.ram_base =(unsigned char *)&ram_buffer[0];
- ctx.ram_len = ROCK_RAM_LEN;
- ctx.backup_base = BACKUP_ADDR_FLAG;
- ctx.backup_len = ROCK_DEFAULT_BLOCK_SIZE;
- ctx.update_nvram = 0;
- ctx.read_rom_directly = read_rom_directly;
- //ctx.first_run = first_run;
- ctx.first_run = 1;
-
- if(0 != init_dev_fd())
- {
- RLOGD("+[UA]: get fota addr error\n");
- lynq_fota_release_wake_lock();
- return E_ROCK_FOTA_ADDR;
- }
-
- memset(&up_info, 0, sizeof(up_info));
-
- memset(&fota_status,0,sizeof(fota_status));
-
-
- lseek(fd_update_status,0,SEEK_SET);
- read(fd_update_status,(unsigned char *)&up_info,sizeof(up_info));
-
- RLOGD("+[UA]: up_info.ota_run = %d\n",up_info.ota_run);
-
-
- if ((up_info.ota_run>PATCH_BL33)||(up_info.ota_run<PATCH_SYSTEM))
- {
- up_info.ota_run = 0;
- }
-
- up_info.ota_run = 0;
-
- if((up_info.fota_flag[0]=='A')&&(up_info.fota_flag[1]=='-')&&(up_info.fota_flag[2]=='B')){
- update_mode = MODE_A2B;
- }else if((up_info.fota_flag[0]=='B')&&(up_info.fota_flag[1]=='-')&&(up_info.fota_flag[2]=='A')){
- update_mode = MODE_B2A;
- }else{
- update_mode = MODE_NORMAL;
- }
-
- RLOGD("+[UA]: up_info.fota_flag = %s\n",up_info.fota_flag);
- RLOGD("+[UA]: update_mode = %d\n",update_mode);
-
- memset(&da_head, 0, 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.oemapp=%d,da_head.oemapp2=%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.oemapp,da_head.oemapp2,da_head.bl33);
- rock_trace(&ctx, "da_head.fullsys:%d,da_head.fullboot:%d,da_head.fulltee:%d,da_head.fullmd1img=%d,da_head.fullmd1dsp=%d,da_head.fullvbmeta=%d,da_head.full_oemapp=%d,da_head.full_oemapp2=%d,da_head.fullbl33=%d\n", da_head.full_sys, da_head.full_boot,da_head.full_tee, da_head.full_md1img,da_head.full_md1dsp,da_head.full_vbmeta,da_head.full_oemapp,da_head.full_oemapp2,da_head.full_bl33);
-
-
- if (da_head.sys>0) {
- fota_status.update_status[PATCH_SYSTEM - 1].need_update = 1;
- }
- if (da_head.boot>0) {
- fota_status.update_status[PATCH_BOOT - 1].need_update = 1;
- }
- if (da_head.tee>0) {
- fota_status.update_status[PATCH_TEE - 1].need_update = 1;
- }
- if (da_head.md1img>0) {
- fota_status.update_status[PATCH_MD1IMG - 1].need_update = 1;
- }
- if (da_head.md1dsp>0) {
- fota_status.update_status[PATCH_MD1DSP - 1].need_update = 1;
- }
- if (da_head.vbmeta>0) {
- fota_status.update_status[PATCH_VBMETA - 1].need_update = 1;
- }
- if (da_head.oemapp>0) {
- fota_status.update_status[PATCH_OEMAPP - 1].need_update = 1;
- }
- if (da_head.oemapp2>0) {
- fota_status.update_status[PATCH_OEMAPP2 - 1].need_update = 1;
- }
- if (da_head.bl33>0) {
- fota_status.update_status[PATCH_BL33 - 1].need_update = 1;
- }
-
- if (da_head.full_sys>0) {
- fota_status.update_status[FULL_SYSTEM - 1].need_update = 1;
- }
- if (da_head.full_boot>0) {
- fota_status.update_status[FULL_BOOT - 1].need_update = 1;
- }
- if (da_head.full_tee>0) {
- fota_status.update_status[FULL_TEE - 1].need_update = 1;
- }
- if (da_head.full_md1img>0) {
- fota_status.update_status[FULL_MD1IMG - 1].need_update = 1;
- }
- if (da_head.full_bl33>0) {
- fota_status.update_status[FULL_BL33 - 1].need_update = 1;
- }
- if (da_head.full_md1dsp>0) {
- fota_status.update_status[FULL_MD1DSP - 1].need_update = 1;
- }
- if (da_head.full_vbmeta>0) {
- fota_status.update_status[FULL_VBMETA - 1].need_update = 1;
- }
- if (da_head.full_oemapp>0) {
- fota_status.update_status[FULL_OEMAPP - 1].need_update = 1;
- }
- if (da_head.full_oemapp2>0) {
- fota_status.update_status[FULL_OEMAPP2 - 1].need_update = 1;
- }
- fota_status.switch_slot = WAIT;
- save_fota_status();
-
- delta_size = da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp + da_head.oemapp2 + da_head.bl33;
-
-
- if ((da_head.sys>0) && (up_info.ota_run <= PATCH_SYSTEM))
- {
-
- now_patch = PATCH_SYSTEM;
- delta_offset = DELTA_HEARD_SIZE;
-
-#if 0
- if (up_info.ota_run == PATCH_SYSTEM)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
- //up_info.ota_run = 0;
-
-
- if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- return -err;
- }
- fd_curr = fd_system_a;
- }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- return -err;
- }
- fd_curr = fd_system_b;
- }
-
-#endif
-
-
- ctx.first_run = 1; // always
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/system_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/system_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening system file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_system_a;
-// }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening system file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_system_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_system_b;
- fd_write = fd_system_a;
- } else {
- fd_read = fd_system_a;
- fd_write = fd_system_b;
- }
-
-
- fota_status.ota_run = PATCH_SYSTEM;
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = WAIT;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- fota_status.update_status[PATCH_SYSTEM-1].update_result= WAIT;
-
- save_fota_status();
-
-
- up_info.ota_run = PATCH_SYSTEM;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
- RLOGD("+[UA]: Start upgrading system.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: system upgrade result:%d\n",status);
-
- //up_info.ota_run = 0;
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_SYSTEM -1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = PASS;
- RLOGD("system upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = ERROR;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- //fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
-
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
-
-
-
- if ((da_head.boot>0) && (up_info.ota_run <= PATCH_BOOT))
- {
-
- now_patch = PATCH_BOOT;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys;
-
-
- if (up_info.ota_run == PATCH_BOOT)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/boot_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/boot_b");
- }
- //if(current_slot==SLOT_B) {
- fd_boot_a = mtk_device_wrap_open(DEV_BOOT_A,O_RDWR);
- if (fd_boot_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening boot file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_boot_a;
-// }else{
- fd_boot_b = mtk_device_wrap_open(DEV_BOOT_B,O_RDWR);
- if (fd_boot_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening boot file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_boot_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_boot_b;
- fd_write = fd_boot_a;
- } else {
- fd_read = fd_boot_a;
- fd_write = fd_boot_b;
- }
-
-
- fota_status.ota_run = PATCH_BOOT;
- fota_status.update_status[PATCH_BOOT-1].check_delta = WAIT;
- fota_status.update_status[PATCH_BOOT-1].check_rom = WAIT;
- fota_status.update_status[PATCH_BOOT-1].update_result= WAIT;
-
- save_fota_status();
-
-
- up_info.ota_run = PATCH_BOOT;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
-
- RLOGD("+[UA]: Start upgrading boot.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: boot upgrade result:%d\n",status);
- //up_info.ota_run = 0;
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_BOOT-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_BOOT-1].check_delta = PASS;
- fota_status.update_status[PATCH_BOOT-1].check_rom = PASS;
- RLOGD("boot upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_BOOT-1].check_delta = ERROR;
- fota_status.update_status[PATCH_BOOT-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_BOOT-1].check_delta = PASS;
- fota_status.update_status[PATCH_BOOT-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- //fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- }
-
-
-
-
-
- if ((da_head.tee>0) && (up_info.ota_run <= PATCH_TEE))
- {
-
- now_patch = PATCH_TEE;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot;
-
-
- if (up_info.ota_run == PATCH_TEE)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/tee_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/tee_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_tee_a = mtk_device_wrap_open(DEV_TEE_A,O_RDWR);
- if (fd_tee_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening tee file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_tee_a;
-// }else{
- fd_tee_b = mtk_device_wrap_open(DEV_TEE_B,O_RDWR);
- if (fd_tee_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening tee file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_tee_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_tee_b;
- fd_write = fd_tee_a;
- } else {
- fd_read = fd_tee_a;
- fd_write = fd_tee_b;
- }
-
-
- fota_status.ota_run = PATCH_TEE;
- fota_status.update_status[PATCH_TEE-1].check_delta = WAIT;
- fota_status.update_status[PATCH_TEE-1].check_rom = WAIT;
- fota_status.update_status[PATCH_TEE-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_TEE;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- RLOGD("+[UA]: Start upgrading tee.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: tee upgrade result:%d\n",status);
- //up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_TEE-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_TEE-1].check_delta = PASS;
- fota_status.update_status[PATCH_TEE-1].check_rom = PASS;
- RLOGD("tee upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_TEE-1].check_delta = ERROR;
- fota_status.update_status[PATCH_TEE-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_TEE-1].check_delta = PASS;
- fota_status.update_status[PATCH_TEE-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- //fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- }
-
-
-
-
- if ((da_head.md1img>0) && (up_info.ota_run <= PATCH_MD1IMG))
- {
-
- now_patch = PATCH_MD1IMG;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee;
-
-
- if (up_info.ota_run == PATCH_MD1IMG)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_md1img_a = mtk_device_wrap_open(DEV_MD1IMG_A,O_RDWR);
- if (fd_md1img_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening md1img file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1img_a;
-// }else{
- fd_md1img_b = mtk_device_wrap_open(DEV_MD1IMG_B,O_RDWR);
- if (fd_md1img_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening md1img file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1img_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_md1img_b;
- fd_write = fd_md1img_a;
- } else {
- fd_read = fd_md1img_a;
- fd_write = fd_md1img_b;
- }
-
- fota_status.ota_run = PATCH_MD1IMG;
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = WAIT;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = WAIT;
- fota_status.update_status[PATCH_MD1IMG-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_MD1IMG;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
- RLOGD("+[UA]: Start upgrading md1img.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: md1img upgrade result:%d\n",status);
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_MD1IMG-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = PASS;
- RLOGD("md1img upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = ERROR;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
-
-
- if ((da_head.md1dsp>0) && (up_info.ota_run <= PATCH_MD1DSP))
- {
-
- now_patch = PATCH_MD1DSP;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img;
-
-
- if (up_info.ota_run == PATCH_MD1DSP)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
- }
-// if(current_slot==SLOT_B) {
- fd_md1dsp_a = mtk_device_wrap_open(DEV_MD1DSP_A,O_RDWR);
- if (fd_md1dsp_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening md1dsp file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1dsp_a;
-// }else{
- fd_md1dsp_b = mtk_device_wrap_open(DEV_MD1DSP_B,O_RDWR);
- if (fd_md1dsp_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening md1dsp file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1dsp_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_md1dsp_b;
- fd_write = fd_md1dsp_a;
- } else {
- fd_read = fd_md1dsp_a;
- fd_write = fd_md1dsp_b;
- }
-
-
- fota_status.ota_run = PATCH_MD1DSP;
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = WAIT;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = WAIT;
- fota_status.update_status[PATCH_MD1DSP-1].update_result= WAIT;
-
- save_fota_status();
-
-
- up_info.ota_run = PATCH_MD1DSP;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
- RLOGD("+[UA]: Start upgrading md1dsp.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: md1dsp upgrade result:%d\n",status);
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_MD1DSP-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = PASS;
- RLOGD("md1dsp upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = ERROR;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
- if ((da_head.vbmeta>0) && (up_info.ota_run <= PATCH_VBMETA))
- {
-
- now_patch = PATCH_VBMETA;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp;
-
-
- if (up_info.ota_run == PATCH_VBMETA)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
- }
-// if(current_slot==SLOT_B) {
- fd_vbmeta_a = mtk_device_wrap_open(DEV_VBMETA_A,O_RDWR);
- if (fd_vbmeta_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening vbmeta file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_vbmeta_a;
-// }else{
- fd_vbmeta_b = mtk_device_wrap_open(DEV_VBMETA_B,O_RDWR);
- if (fd_vbmeta_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening vbmeta file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_vbmeta_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_vbmeta_b;
- fd_write = fd_vbmeta_a;
- } else {
- fd_read = fd_vbmeta_a;
- fd_write = fd_vbmeta_b;
- }
-
-
- fota_status.ota_run = PATCH_VBMETA;
- fota_status.update_status[PATCH_VBMETA-1].check_delta = WAIT;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = WAIT;
- fota_status.update_status[PATCH_VBMETA-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_VBMETA;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- RLOGD("+[UA]: Start upgrading vbmeta.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: vbmeta upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_VBMETA-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_VBMETA-1].check_delta = PASS;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = PASS;
- RLOGD("vbmeta upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_VBMETA-1].check_delta = ERROR;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_VBMETA-1].check_delta = PASS;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
- if ((da_head.oemapp>0) && (up_info.ota_run <= PATCH_OEMAPP))
- {
-
- now_patch = PATCH_OEMAPP;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta;
-
-
- if (up_info.ota_run == PATCH_OEMAPP)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_b");
- }
-// if(current_slot==SLOT_B) {
- fd_oemapp_a = mtk_device_wrap_open(DEV_OEMAPP_A,O_RDWR);
- if (fd_oemapp_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp_a;
-// }else{
- fd_oemapp_b = mtk_device_wrap_open(DEV_OEMAPP_B,O_RDWR);
- if (fd_oemapp_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_oemapp_b;
- fd_write = fd_oemapp_a;
- } else {
- fd_read = fd_oemapp_a;
- fd_write = fd_oemapp_b;
- }
-
-
- fota_status.ota_run = PATCH_OEMAPP;
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = WAIT;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = WAIT;
- fota_status.update_status[PATCH_OEMAPP-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_OEMAPP;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading oemapp.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: oemapp upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_OEMAPP-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = ERROR;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_OEMAPP -1].check_delta = PASS;
- //fota_status.update_status[PATCH_OEMAPP -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
- if ((da_head.oemapp2>0) && (up_info.ota_run <= PATCH_OEMAPP2))
- {
-
- now_patch = PATCH_OEMAPP2;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp;
-
-
- if (up_info.ota_run == PATCH_OEMAPP2)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
- }
-// if(current_slot==SLOT_B) {
- fd_oemapp2_a = mtk_device_wrap_open(DEV_OEMAPP2_A,O_RDWR);
- if (fd_oemapp2_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_a;
-// }else{
- fd_oemapp2_b = mtk_device_wrap_open(DEV_OEMAPP2_B,O_RDWR);
- if (fd_oemapp2_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_oemapp2_b;
- fd_write = fd_oemapp2_a;
- } else {
- fd_read = fd_oemapp2_a;
- fd_write = fd_oemapp2_b;
- }
-
-
- fota_status.ota_run = PATCH_OEMAPP2;
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = WAIT;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = WAIT;
- fota_status.update_status[PATCH_OEMAPP2-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_OEMAPP2;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading oemapp2.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: oemapp2 upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_OEMAPP2-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = ERROR;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_delta = PASS;
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
- if ((da_head.bl33>0) && (up_info.ota_run <= PATCH_BL33))
- {
-
- now_patch = PATCH_BL33;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp + da_head.oemapp2;
-
-
- if (up_info.ota_run == PATCH_BL33)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- fd_bl33 = mtk_device_wrap_open(DEV_BL33,O_RDWR);
- if (fd_bl33 < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_bl33;
-
- fota_status.ota_run = PATCH_BL33;
- fota_status.update_status[PATCH_BL33-1].check_delta = WAIT;
- fota_status.update_status[PATCH_BL33-1].check_rom = WAIT;
- fota_status.update_status[PATCH_BL33-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_BL33;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- RLOGD("+[UA]: Start upgrading bl33.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: bl33 upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_BL33-1].update_result= status;
- fota_status.update_result= status;
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_BL33-1].check_delta = PASS;
- fota_status.update_status[PATCH_BL33-1].check_rom = PASS;
- RLOGD("bl33 upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_BL33-1].check_delta = ERROR;
- fota_status.update_status[PATCH_BL33-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_BL33-1].check_delta = PASS;
- fota_status.update_status[PATCH_BL33-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_BL33 -1].check_delta = PASS;
- //fota_status.update_status[PATCH_BL33 -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
- if ((status != 0) &&(status != 1))
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- mtk_device_wrap_close(fd_curr);
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_curr);
-
- }
-
-
-
- //if(current_slot==SLOT_B)
-
-
-
- if ((da_head.full_sys>0)|| (da_head.full_boot>0)|| (da_head.full_tee>0)||(da_head.full_md1img>0)||(da_head.full_md1dsp>0)||(da_head.full_vbmeta>0)||(da_head.full_oemapp>0)||(da_head.full_oemapp2>0)||(da_head.full_bl33>0))
- {
-
- now_patch = 0;
- up_info.ota_run = 0;
-
- memset(&fota_status,0,sizeof(fota_status));
- fota_status.switch_slot = WAIT;
- save_fota_status();
-
- if (lseek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
- err = errno;
- RLOGD("+[UA]: mtk_device_wrap_seek df_delta err\n");
- lynq_fota_release_wake_lock();
- return -1;
- }
-
- read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
-
-
- if (memcmp(full_header, "full-ota", DELTA_FULL_HEARD_SIZE) != 0) {
- RLOGD("+[UA]: invalid full delta header\r\n");
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = -1;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- //mtk_device_wrap_close(fd_curr);
- sync();
- close(fd_update_status);
-
- for (i = FULL_SYSTEM;i<=FULL_BL33;i++){
- if (fota_status.update_status[i-1].need_update ==1) {
- fota_status.ota_run = i;
- fota_status.update_status[i-1].check_delta = ERROR;
- fota_status.update_status[i-1].check_rom= WAIT;
- fota_status.update_status[i-1].update_result= ERROR;
- }
- }
- fota_status.update_result = ERROR;
- save_fota_status();
- lynq_fota_release_wake_lock();
- return -1;
- }
- }
-
-
-
-
-
- if(da_head.full_sys>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/system_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/system_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_sys file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_system_a;
- }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_sys file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_system_b;
- }
- fota_status.ota_run = FULL_SYSTEM;
- save_fota_status();
-
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading system full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_sys);
-
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_sys,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_sys,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
-
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: system full retry_cnt = %d\n",retry_cnt);
-
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_SYSTEM_B,DEV_SYSTEM_A);
- }
- else{
- nand_copyto_nand(DEV_SYSTEM_A,DEV_SYSTEM_B);
- }
- }
-
- RLOGD("+[UA]: system full upgrade result:%d\n",status);
-
- fota_status.update_result = status;
- fota_status.update_status[FULL_SYSTEM-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
-
- if(da_head.full_boot>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/boot_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/boot_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_boot_a = mtk_device_wrap_open(DEV_BOOT_A,O_RDWR);
- if (fd_boot_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_boot file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_boot_a;
- }else{
- fd_boot_b = mtk_device_wrap_open(DEV_BOOT_B,O_RDWR);
- if (fd_boot_b < 0) {
- err = errno;
LYERRLOG("+[UA]: Error opening full_boot file: %s\n",strerror(errno));
lynq_fota_release_wake_lock();
return -err;
@@ -3924,7 +2255,8 @@
nand_copyto_nand(DEV_VBMETA_A,DEV_VBMETA_B);
}
}
-
+
+
RLOGD("+[UA]: vbmeta upgrade result:%d\n",status);
fota_status.update_result = status;
fota_status.update_status[FULL_VBMETA-1].update_result = status;
@@ -3932,83 +2264,97 @@
if (status != 0)
{
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
+
+ up_info.fota_flag[0] = 'e';
+ up_info.fota_flag[1] = 'n';
+ up_info.fota_flag[2] = 'd';
+ up_info.update_result = status;
up_info.ota_run = 0;
lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
+ close(fd_update_status);
lynq_fota_release_wake_lock();
return status;
}
+
+
+ }
+#ifdef GSW_FOTA_CFG
+ if(da_head.full_oemapp>0)
+ {
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta;
- }
-
- if(da_head.full_oemapp>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta;
-
- if(current_slot==SLOT_B) {
+ if(current_slot==SLOT_B)
+ {
system("flash_eraseall /dev/disk/by-partlabel/oemapp_a");
- } else {
+ }
+ else
+ {
system("flash_eraseall /dev/disk/by-partlabel/oemapp_b");
}
- if(current_slot==SLOT_B) {
- fd_oemapp_a = mtk_device_wrap_open(DEV_OEMAPP_A,O_RDWR);
- if (fd_oemapp_a < 0) {
+ if(current_slot==SLOT_B)
+ {
+ fd_oemapp_a = mtk_device_wrap_open(DEV_OEMAPP_A,O_RDWR);
+ if (fd_oemapp_a < 0)
+ {
err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
+ RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
lynq_fota_release_wake_lock();
return -err;
}
- fd_curr = fd_oemapp_a;
- }else{
- fd_oemapp_b = mtk_device_wrap_open(DEV_OEMAPP_B,O_RDWR);
- if (fd_oemapp_b < 0) {
+ fd_curr = fd_oemapp_a;
+ }
+ else
+ {
+ fd_oemapp_b = mtk_device_wrap_open(DEV_OEMAPP_B,O_RDWR);
+ if (fd_oemapp_b < 0)
+ {
err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
+ RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
lynq_fota_release_wake_lock();
return -err;
}
- fd_curr = fd_oemapp_b;
- }
- fota_status.ota_run = FULL_OEMAPP;
+ fd_curr = fd_oemapp_b;
+ }
+ fota_status.ota_run = FULL_OEMAPP;
save_fota_status();
retry_cnt = 0;
- LYVERBLOG("+[UA]: Start upgrading oemapp full.\n");
+ RLOGD("+[UA]: Start upgrading oemapp full.\n");
do {
- status = delta_copyto_nand(delta_offset,da_head.full_oemapp);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_oemapp,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_oemapp,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
+ status = delta_copyto_nand(delta_offset,da_head.full_oemapp);
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_oemapp,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_oemapp,digest_t);
+ retry_cnt++;
+ }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
+ mtk_device_wrap_close(fd_curr);
- LYVERBLOG("+[UA]: oemapp full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_OEMAPP_B,DEV_OEMAPP_A);
- }
- else{
- nand_copyto_nand(DEV_OEMAPP_A,DEV_OEMAPP_B);
- }
- }
+ RLOGD("+[UA]: oemapp full retry_cnt = %d\n",retry_cnt);
+ if (retry_cnt>3)
+ {
+ if (status == 0)
+ {
+ status = retry_cnt;
+ }
+ if(current_slot==SLOT_B)
+ {
+ nand_copyto_nand(DEV_OEMAPP_B,DEV_OEMAPP_A);
+ }
+ else
+ {
+ nand_copyto_nand(DEV_OEMAPP_A,DEV_OEMAPP_B);
+ }
+ }
- LYVERBLOG("+[UA]: oemapp upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_OEMAPP-1].update_result = status;
- save_fota_status();
+ RLOGD("+[UA]: oemapp upgrade result:%d\n",status);
+ fota_status.update_result = status;
+ fota_status.update_status[FULL_OEMAPP-1].update_result = status;
+ save_fota_status();
- if (status != 0)
- {
+ if (status != 0)
+ {
up_info.fota_flag[0] = 'e';
up_info.fota_flag[1] = 'n';
up_info.fota_flag[2] = 'd';
@@ -4020,73 +2366,83 @@
close(fd_update_status);
lynq_fota_release_wake_lock();
return status;
- }
+ }
+ }
+ if(da_head.full_oemapp2>0)
+ {
+ int ret;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta + da_head.full_oemapp;
- }
-
- if(da_head.full_oemapp2>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta + da_head.full_oemapp;
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
+ if(current_slot==SLOT_B)
+ {
+ ret = system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
+ }
+ else
+ {
+ ret = system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
+ }
+ if(current_slot==SLOT_B)
+ {
+ fd_oemapp2_a = mtk_device_wrap_open(DEV_OEMAPP2_A,O_RDWR);
+ if (fd_oemapp2_a < 0)
+ {
+ err = errno;
+ RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
+ lynq_fota_release_wake_lock();
+ return -err;
+ }
+ fd_curr = fd_oemapp2_a;
+ }
+ else
+ {
+ fd_oemapp2_b = mtk_device_wrap_open(DEV_OEMAPP2_B,O_RDWR);
+ if (fd_oemapp2_b < 0)
+ {
+ err = errno;
+ RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
+ lynq_fota_release_wake_lock();
+ return -err;
+ }
+ fd_curr = fd_oemapp2_b;
}
- if(current_slot==SLOT_B) {
- fd_oemapp2_a = mtk_device_wrap_open(DEV_OEMAPP2_A,O_RDWR);
- if (fd_oemapp2_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp2_a;
- }else{
- fd_oemapp2_b = mtk_device_wrap_open(DEV_OEMAPP2_B,O_RDWR);
- if (fd_oemapp2_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp2_b;
- }
fota_status.ota_run = FULL_OEMAPP2;
save_fota_status();
retry_cnt = 0;
- LYVERBLOG("+[UA]: Start upgrading oemapp2 full.\n");
+ RLOGD("+[UA]: Start upgrading oemapp2 full.\n");
do {
- status = delta_copyto_nand(delta_offset,da_head.full_oemapp2);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_oemapp2,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_oemapp2,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
+ status = delta_copyto_nand(delta_offset,da_head.full_oemapp2);
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_oemapp2,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_oemapp2,digest_t);
+ retry_cnt++;
+ }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
+ mtk_device_wrap_close(fd_curr);
- LYVERBLOG("+[UA]: oemapp2 full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_OEMAPP2_B,DEV_OEMAPP2_A);
- }
- else{
- nand_copyto_nand(DEV_OEMAPP2_A,DEV_OEMAPP2_B);
- }
- }
+ RLOGD("+[UA]: oemapp2 full retry_cnt = %d\n",retry_cnt);
+ if (retry_cnt>3)
+ {
+ if (status == 0)
+ {
+ status = retry_cnt;
+ }
+ if(current_slot==SLOT_B)
+ {
+ nand_copyto_nand(DEV_OEMAPP2_B,DEV_OEMAPP2_A);
+ }
+ else
+ {
+ nand_copyto_nand(DEV_OEMAPP2_A,DEV_OEMAPP2_B);
+ }
+ }
- LYVERBLOG("+[UA]: oemapp2 upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_OEMAPP2-1].update_result = status;
- save_fota_status();
+ RLOGD("+[UA]: oemapp2 upgrade result:%d\n",status);
+ fota_status.update_result = status;
+ fota_status.update_status[FULL_OEMAPP2-1].update_result = status;
+ save_fota_status();
- if (status != 0)
- {
+ if (status != 0)
+ {
up_info.fota_flag[0] = 'e';
up_info.fota_flag[1] = 'n';
up_info.fota_flag[2] = 'd';
@@ -4098,118 +2454,363 @@
close(fd_update_status);
lynq_fota_release_wake_lock();
return status;
- }
+ }
+ }
+#endif
-
- }
-
- if(da_head.full_bl33>0) {
-
- }
-
-
-
- if(update_mode == MODE_NORMAL){ //need A VS B
- if(current_slot == SLOT_A) {
-
- up_info.fota_flag[0] = 'B';
- up_info.fota_flag[1] = '-';
- up_info.fota_flag[2] = 'A';
-
- }else{
-
- up_info.fota_flag[0] = 'A';
- up_info.fota_flag[1] = '-';
- up_info.fota_flag[2] = 'B';
-
- }
-
- }else{
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
-
- }
-
-
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- close_dev_fd(fd_delta);
-
- //close_dev_fd(fd_curr);
-
-
-
- close(fd_update_status);
- sync();
-
-
- slot = (current_slot == 0) ? 1 : 0;
-
- RLOGD("+[UA]: slot SLOT = %d\n",slot);
-
- if(switch_slot_flag==1)
+ if(update_mode == MODE_NORMAL)
+ {
+ RLOGD("set fota_flag start\n");
+ if(current_slot == SLOT_A)
{
- module->setActiveBootSlot(module,slot);
- RLOGD("+[UA]: upgrade is success!!!!\n");
+ up_info.fota_flag[0] = 'B';
+ up_info.fota_flag[1] = '-';
+ up_info.fota_flag[2] = 'A';
+ }
+ else
+ {
+ up_info.fota_flag[0] = 'A';
+ up_info.fota_flag[1] = '-';
+ up_info.fota_flag[2] = 'B';
+ }
+ }
+ else
+ {
+ up_info.fota_flag[0] = 'e';
+ up_info.fota_flag[1] = 'n';
+ up_info.fota_flag[2] = 'd';
+ }
+ up_info.update_result = status;
+ up_info.ota_run = 0;
+ lseek(fd_update_status,0,SEEK_SET);
+ RLOGD("up_info: fota_flag: %s\n",up_info.fota_flag);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
+ close(fd_delta);
+ close(fd_update_status);
+ sync();
+
+ slot = (current_slot == 0) ? 1 : 0;
+ RLOGD("+[UA]: slot SLOT = %d\n",slot);
+ module->setActiveBootSlot(module,slot);
+ RLOGD("+[UA]:slot %d upgrade is success!!!!\n", slot);
+ fota_status.ota_run = 0;
+ fota_status.switch_slot = PASS;
+ fota_status.update_result = status;
+ save_fota_status();
+ lynq_fota_release_wake_lock();
+
+ if(reboot_flag == 1)
+ {
+ reboot_device();
+ }
+
+ return status;
+
+}
+
+int lynq_backup_main()
+{
+ const hw_module_t* hw_module;
+ hw_module = &HAL_MODULE_INFO_SYM;
+
+ int is_successful;
+ int ret = 0;
+ if (!hw_module || strcmp(BOOT_CONTROL_HARDWARE_MODULE_ID, hw_module->id) != 0)
+ {
+ ret = -1;
+ }
+ RLOGD("ret = %d\n", ret);
+ if (ret != 0)
+ {
+ RLOGD("+[UA]: Error loading boot_control HAL implementation.\n");
+ return -1;
+ }
+ module = (boot_control_module_t*)hw_module;
+ module->init(module);
+ if (module == NULL)
+ {
+ RLOGD("+[UA]: Error getting bootctrl module.\n");
+ return -1;
+ }
+ lynq_init_wake_lock_func();
+ lynq_fota_acquire_wake_lock();
+
+ current_slot = module->getCurrentSlot(module);
+ is_successful = module->isSlotMarkedSuccessful(module, current_slot);
+ RLOGD("+[UA]: Booting slot = %d, : isSlotMarkedSuccessful= %d\n",current_slot,is_successful);
+
+
+ if(current_slot==SLOT_B)
+ {
+ ret = system("flash_eraseall /dev/disk/by-partlabel/system_a");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase system_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_SYSTEM_B,DEV_SYSTEM_A);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup system_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
}
- fota_status.ota_run = 0;
- fota_status.switch_slot = PASS;
- fota_status.update_result = status;
- save_fota_status();
-
- lynq_fota_release_wake_lock();
-
- if(update_mode==MODE_NORMAL){
- reboot_device();
- }
+ ret = system("flash_eraseall /dev/disk/by-partlabel/boot_a");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase boot_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_BOOT_B,DEV_BOOT_A);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup boot_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
- return status;
-}
-#endif
+ ret = system("flash_eraseall /dev/disk/by-partlabel/tee_a");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase tee_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_TEE_B,DEV_TEE_A);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup tee_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase md1img_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_MD1IMG_B,DEV_MD1IMG_A);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup md1img_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase md1dsp_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_MD1DSP_B,DEV_MD1DSP_A);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup md1dsp_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+
+ ret = system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase vbmeta_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_VBMETA_B,DEV_VBMETA_A);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup vbmeta_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
#ifdef GSW_FOTA_CFG
-static void rock_fail_handler()
-{
- int ret = 0;
- RLOGD("rock_fail_handler start\n");
- ret = rock_update_main(0, 0, 0, 0, 1, 1);
- if(ret)
- {
- RLOGD("fota update fail again!\n");
- }
-}
+ ret = system("flash_eraseall /dev/disk/by-partlabel/oemapp_a");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase oemapp_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_OEMAPP_B,DEV_OEMAPP_A);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup vbmeta_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase oemapp2_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_OEMAPP2_B,DEV_OEMAPP2_A);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup vbmeta_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
#endif
+ }
+ else
+ {
+ ret = system("flash_eraseall /dev/disk/by-partlabel/system_b");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase system_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_SYSTEM_A,DEV_SYSTEM_B);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup system_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = system("flash_eraseall /dev/disk/by-partlabel/boot_b");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase boot_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_BOOT_A,DEV_BOOT_B);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup boot_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+
+ ret = system("flash_eraseall /dev/disk/by-partlabel/tee_b");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase tee_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_TEE_A,DEV_TEE_B);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup tee_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+
+ ret = system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase md1img_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_MD1IMG_A,DEV_MD1IMG_B);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup md1img_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+
+ ret = system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase md1dsp_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_MD1DSP_A,DEV_MD1DSP_B);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup md1dsp_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+
+ ret = system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase vbmeta_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_VBMETA_A,DEV_VBMETA_B);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup vbmeta_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+
+#ifdef GSW_FOTA_CFG
+ ret = system("flash_eraseall /dev/disk/by-partlabel/oemapp_b");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase oemapp_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_OEMAPP_A,DEV_OEMAPP_B);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup vbmeta_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+
+ ret = system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: erase oemapp2_b fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+ ret = nand_copyto_nand(DEV_OEMAPP2_A,DEV_OEMAPP2_B);
+ if(ret != 0)
+ {
+ RLOGD("+[UA]: backup vbmeta_a fail\n");
+ lynq_fota_release_wake_lock();
+ return 1;
+ }
+#endif
+
+ }
+
+ lynq_fota_release_wake_lock();
+ RLOGD("+[UA]: lynq_backup_main success \n");
+ return 0;
+}
/* main entrpoint */
-int lynq_rock_main(int first_run)
-{
+int lynq_rock_main(int first_run) {
+
int ret = 0;
#if 0
-
+
printf("-********copy delta ***-\n");
test_write_delta("/data/delta",DEV_DELTA);
#endif
-#ifdef MOBILETEK_FOTA_CFG
- ret = rock_update_main(0, 0, 0, 0, first_run);
-#endif
-#ifdef GSW_FOTA_CFG
- ret = rock_update_main(0, 0, 0, 0, first_run, 1);
-#endif
+
+ ret = rock_update_main(0, 0, 0, 0, first_run,1);
RLOGD("rock_update_main ret = %d\n", ret);
- if(ret)
- {
+ if(ret) {
RLOGD("fota update fail!\n");
}
return ret;
@@ -4218,75 +2819,48 @@
#endif
//lt add @2021.9.23 for deal with power down \ backup or upgrade.
-#ifdef GSW_FOTA_CFG
-int lynq_fota_func(void)
+int lynq_fota_func(void)
{
- int fd;
- int first_run = 1;
- int ret = 0;
- UPDATE_INFO lynq_up_info;
- memset(&lynq_up_info, 0, sizeof(lynq_up_info));
- fd = open(FILE_UPDATE_STATE,O_RDWR | O_CREAT,0777);
- if (fd < 0)
- {
- return -1;
- }
- read(fd,(unsigned char *)&lynq_up_info,sizeof(lynq_up_info));
- close(fd);
-
- if(lynq_up_info.ota_run != 0)
- {
- //Power off, call UA
- RLOGD("[+UP]: ***Power off, call UA***\n");
- ret = rock_update_main(0, 0, 0, 0, first_run, 1);
- RLOGD("rock_update_main ret = %d\n", ret);
- if(ret)
- {
- RLOGD("fota update fail!\n");
- }
- }
- if(((lynq_up_info.fota_flag[0]=='A')&&(lynq_up_info.fota_flag[1]=='-')&&(lynq_up_info.fota_flag[2]=='B'))||
- ((lynq_up_info.fota_flag[0]=='B')&&(lynq_up_info.fota_flag[1]=='-')&&(lynq_up_info.fota_flag[2]=='A')))
- {
- //Upgrade the other side and call UA
- RLOGD("[+UP]: ***Upgrade the other side and call UA***\n");
- ret = rock_update_main(0, 0, 0, 0, first_run, 0);
- RLOGD("rock_update_main ret = %d\n", ret);
- if(ret)
- {
- RLOGD("fota update fail!\n");
- }
- }
- return 0;
-}
-#endif
-#ifdef MOBILETEK_FOTA_CFG
-int lynq_fota_func(void)
-{
- int fd;
+ int fd, ret;
int first_run = 1;
UPDATE_INFO lynq_up_info;
+
memset(&lynq_up_info, 0, sizeof(lynq_up_info));
+
fd = open(FILE_UPDATE_STATE,O_RDWR | O_CREAT,0777);
- if (fd < 0)
- {
+ if (fd < 0) {
return -1;
}
read(fd,(unsigned char *)&lynq_up_info,sizeof(lynq_up_info));
close(fd);
RLOGD("lynq_up_info: fota_flag: %s\n",lynq_up_info.fota_flag);
if(lynq_up_info.ota_run != 0)
- {
+ {
//Power off, call UA
RLOGD("[+UP]: ***Power off, call UA***\n");
- lynq_rock_main(first_run);
+ ret = rock_update_main(0, 0, 0, 0, first_run,0);
+ RLOGD("rock_update_main ret = %d\n", ret);
+ if(ret)
+ {
+ RLOGD("fota update fail!\n");
+ }
}
if (((lynq_up_info.fota_flag[0]=='A')&&(lynq_up_info.fota_flag[1]=='-')&&(lynq_up_info.fota_flag[2]=='B'))||
((lynq_up_info.fota_flag[0]=='B')&&(lynq_up_info.fota_flag[1]=='-')&&(lynq_up_info.fota_flag[2]=='A')))
{
//Upgrade the other side and call UA
RLOGD("[+UP]: ***Upgrade the other side and call UA***\n");
- lynq_rock_main(first_run);
+ ret = lynq_backup_main();
+ RLOGD("lynq_backup_main ret = %d\n", ret);
+ if(ret == 0)
+ {
+ RLOGD("fota backup success!!!\n");
+ }
+ else
+ {
+ RLOGD("fota backup fail!!!\n");
+ }
+
if( 0 != reset_fota_flag())
{
RLOGD("reset_fota_flag fail\n");
@@ -4295,7 +2869,7 @@
sleep(120);
check_ril_service();
return 0;
-}
+}
int reset_fota_flag(void)
{
@@ -4381,7 +2955,6 @@
return 0;
}
-#endif
int lynq_nand_open(const char *pathname, int flags)
{
@@ -4446,6 +3019,7 @@
reboot_device();
return ;
}
+
/**
* @brief fota no resatrt
@@ -4455,2048 +3029,21 @@
*/
int lynq_fota_nrestart(void)
{
- int status,err;
-#ifdef GSW_FOTA_CFG
- int start;
-#endif
int ret = 0;
- int i = 0;
- int retry_cnt = 0;
-
- IOT_UPDATA_CONTEXT ctx;
-#ifdef GSW_FOTA_CFG
- UPDATE_INFO up_info;
+
+#if 0
+
+ printf("-********copy delta ***-\n");
+ test_write_delta("/data/delta",DEV_DELTA);
#endif
- //OTA_STATUS fota_status;
-
- const hw_module_t* hw_module;
- unsigned int slot;
-
- unsigned int update_mode = MODE_NORMAL;
- unsigned int delta_size;
- unsigned char full_header[9];
-
- char digest_s[SHA_DIGEST_SIZE];
- char digest_t[SHA_DIGEST_SIZE];
-
-
- hw_module = &HAL_MODULE_INFO_SYM;
-
- if (!hw_module ||
- strcmp(BOOT_CONTROL_HARDWARE_MODULE_ID, hw_module->id) != 0) {
- ret = -EINVAL;
- }
- if (ret != 0) {
- RLOGD("+[UA]: Error loading boot_control HAL implementation.\n");
- return -1;
- }
-
- module = (boot_control_module_t*)hw_module;
- module->init(module);
-
-
- if (module == NULL) {
- RLOGD("+[UA]: Error getting bootctrl module.\n");
- return -1;
- }
-
- lynq_init_wake_lock_func();
- lynq_fota_grab_artial_wake_lock();
- /************* Bootctrl Init End *************/
-
- current_slot = module->getCurrentSlot(module);
-
- int is_successful = module->isSlotMarkedSuccessful(module, current_slot);
-
- RLOGD("Booting slot = %d, : isSlotMarkedSuccessful= %d\n",current_slot,is_successful);
-
-
-
- memset(&ctx, 0, sizeof(ctx));
- ctx.rom_base = 0;
- ctx.ram_base =(unsigned char *)&ram_buffer[0];
- ctx.ram_len = ROCK_RAM_LEN;
- ctx.backup_base = BACKUP_ADDR_FLAG;
- ctx.backup_len = ROCK_DEFAULT_BLOCK_SIZE;
- ctx.update_nvram = 0;
- ctx.read_rom_directly = 0;
- //ctx.first_run = first_run;
- ctx.first_run = 1;
-
- if(0 != init_dev_fd())
+ ret = rock_update_main(0, 0, 0, 0, 1, 0);
+ RLOGD("rock_update_main ret = %d\n", ret);
+ if(ret)
{
- RLOGD("+[UA]: get fota addr error\n");
- lynq_fota_release_wake_lock();
- return E_ROCK_FOTA_ADDR;
+ RLOGD("fota update fail!\n");
}
-
-
-#ifdef GSW_FOTA_CFG
- memset(&fota_status,0,sizeof(fota_status));
-#endif
-
- lseek(fd_update_status,0,SEEK_SET);
- memset(&up_info, 0, sizeof(up_info));
- read(fd_update_status,(unsigned char *)&up_info,sizeof(up_info));
-
- RLOGD("+[UA]: up_info.ota_run = %d\n",up_info.ota_run);
-
-
- if ((up_info.ota_run>PATCH_BL33)||(up_info.ota_run<PATCH_SYSTEM))
- {
- up_info.ota_run = 0;
- }
-
- up_info.ota_run = 0;
-
- if((up_info.fota_flag[0]=='A')&&(up_info.fota_flag[1]=='-')&&(up_info.fota_flag[2]=='B')){
- update_mode = MODE_A2B;
- }else if((up_info.fota_flag[0]=='B')&&(up_info.fota_flag[1]=='-')&&(up_info.fota_flag[2]=='A')){
- update_mode = MODE_B2A;
- }else{
- update_mode = MODE_NORMAL;
- }
-
- RLOGD("+[UA]: up_info.fota_flag = %s\n",up_info.fota_flag);
- RLOGD("+[UA]: update_mode = %d\n",update_mode);
-
- memset(&da_head, 0, sizeof(da_head));
-
- read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
-
-#ifdef GSW_FOTA_CFG
- 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.oemapp=%d,da_head.oemapp2=%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.oemapp,da_head.oemapp2,da_head.bl33);
- rock_trace(&ctx, "da_head.fullsys:%d,da_head.fullboot:%d,da_head.fulltee:%d,da_head.fullmd1img=%d,da_head.fullmd1dsp=%d,da_head.fullvbmeta=%d,da_head.full_oemapp=%d,da_head.full_oemapp2=%d,da_head.fullbl33=%d\n", da_head.full_sys, da_head.full_boot,da_head.full_tee, da_head.full_md1img,da_head.full_md1dsp,da_head.full_vbmeta,da_head.full_oemapp,da_head.full_oemapp2,da_head.full_bl33);
-#endif
-
-#ifdef MOBILETEK_FOTA_CFG
- 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);
- rock_trace(&ctx, "da_head.fullsys:%d,da_head.fullboot:%d,da_head.fulltee:%d,da_head.fullmd1img=%d,da_head.fullmd1dsp=%d,da_head.fullvbmeta=%d,da_head.fullbl33=%d\n", da_head.full_sys, da_head.full_boot,da_head.full_tee, da_head.full_md1img,da_head.full_md1dsp,da_head.full_vbmeta,da_head.full_bl33);
-#endif
-
- if (da_head.sys>0) {
- fota_status.update_status[PATCH_SYSTEM - 1].need_update = 1;
- }
- if (da_head.boot>0) {
- fota_status.update_status[PATCH_BOOT - 1].need_update = 1;
- }
- if (da_head.tee>0) {
- fota_status.update_status[PATCH_TEE - 1].need_update = 1;
- }
- if (da_head.md1img>0) {
- fota_status.update_status[PATCH_MD1IMG - 1].need_update = 1;
- }
- if (da_head.md1dsp>0) {
- fota_status.update_status[PATCH_MD1DSP - 1].need_update = 1;
- }
- if (da_head.vbmeta>0) {
- fota_status.update_status[PATCH_VBMETA - 1].need_update = 1;
-#ifdef GSW_FOTA_CFG
- }
- if (da_head.oemapp>0) {
- fota_status.update_status[PATCH_OEMAPP - 1].need_update = 1;
- }
- if (da_head.oemapp2>0) {
- fota_status.update_status[PATCH_OEMAPP2 - 1].need_update = 1;
-#endif
- }
- if (da_head.bl33>0) {
- fota_status.update_status[PATCH_BL33 - 1].need_update = 1;
- }
-
- if (da_head.full_sys>0) {
- fota_status.update_status[FULL_SYSTEM - 1].need_update = 1;
- }
- if (da_head.full_boot>0) {
- fota_status.update_status[FULL_BOOT - 1].need_update = 1;
- }
- if (da_head.full_tee>0) {
- fota_status.update_status[FULL_TEE - 1].need_update = 1;
- }
- if (da_head.full_md1img>0) {
- fota_status.update_status[FULL_MD1IMG - 1].need_update = 1;
- }
- if (da_head.full_bl33>0) {
- fota_status.update_status[FULL_BL33 - 1].need_update = 1;
- }
- if (da_head.full_md1dsp>0) {
- fota_status.update_status[FULL_MD1DSP - 1].need_update = 1;
- }
- if (da_head.full_vbmeta>0) {
- fota_status.update_status[FULL_VBMETA - 1].need_update = 1;
- }
-#ifdef GSW_FOTA_CFG
- if (da_head.full_oemapp>0) {
- fota_status.update_status[FULL_OEMAPP - 1].need_update = 1;
- }
- if (da_head.full_oemapp2>0) {
- fota_status.update_status[FULL_OEMAPP2 - 1].need_update = 1;
- }
-#endif
- fota_status.switch_slot = WAIT;
- save_fota_status();
-#ifdef GSW_FOTA_CFG
- delta_size = da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp + da_head.oemapp2 + da_head.bl33;
-#endif
-#ifdef MOBILETEK_FOTA_CFG
- delta_size = da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.bl33;
-#endif
-
- if ((da_head.sys>0) && (up_info.ota_run <= PATCH_SYSTEM))
- {
-
- now_patch = PATCH_SYSTEM;
- delta_offset = DELTA_HEARD_SIZE;
-
-#if 0
- if (up_info.ota_run == PATCH_SYSTEM)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
- //up_info.ota_run = 0;
-
-
- if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- return -err;
- }
- fd_curr = fd_system_a;
- }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- return -err;
- }
- fd_curr = fd_system_b;
- }
-
-#endif
-
-
- ctx.first_run = 1; // always
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/system_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/system_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_system_a;
-// }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_system_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_system_b;
- fd_write = fd_system_a;
- } else {
- fd_read = fd_system_a;
- fd_write = fd_system_b;
- }
-
-
- fota_status.ota_run = PATCH_SYSTEM;
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = WAIT;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- fota_status.update_status[PATCH_SYSTEM-1].update_result= WAIT;
-
- save_fota_status();
-
-
- up_info.ota_run = PATCH_SYSTEM;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
- LYVERBLOG("+[UA]: Start upgrading system.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: system upgrade result:%d\n",status);
-
- //up_info.ota_run = 0;
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_SYSTEM -1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = ERROR;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- //fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
-
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
-
-
-
- if ((da_head.boot>0) && (up_info.ota_run <= PATCH_BOOT))
- {
-
- now_patch = PATCH_BOOT;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys;
-
-
- if (up_info.ota_run == PATCH_BOOT)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/boot_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/boot_b");
- }
- //if(current_slot==SLOT_B) {
- fd_boot_a = mtk_device_wrap_open(DEV_BOOT_A,O_RDWR);
- if (fd_boot_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_boot_a;
-// }else{
- fd_boot_b = mtk_device_wrap_open(DEV_BOOT_B,O_RDWR);
- if (fd_boot_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_boot_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_boot_b;
- fd_write = fd_boot_a;
- } else {
- fd_read = fd_boot_a;
- fd_write = fd_boot_b;
- }
-
-
- fota_status.ota_run = PATCH_BOOT;
- fota_status.update_status[PATCH_BOOT-1].check_delta = WAIT;
- fota_status.update_status[PATCH_BOOT-1].check_rom = WAIT;
- fota_status.update_status[PATCH_BOOT-1].update_result= WAIT;
-
- save_fota_status();
-
-
- up_info.ota_run = PATCH_BOOT;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
-
- LYVERBLOG("+[UA]: Start upgrading boot.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: boot upgrade result:%d\n",status);
- //up_info.ota_run = 0;
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_BOOT-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_BOOT-1].check_delta = PASS;
- fota_status.update_status[PATCH_BOOT-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_BOOT-1].check_delta = ERROR;
- fota_status.update_status[PATCH_BOOT-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_BOOT-1].check_delta = PASS;
- fota_status.update_status[PATCH_BOOT-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- //fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- }
-
-
-
-
-
- if ((da_head.tee>0) && (up_info.ota_run <= PATCH_TEE))
- {
-
- now_patch = PATCH_TEE;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot;
-
-
- if (up_info.ota_run == PATCH_TEE)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/tee_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/tee_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_tee_a = mtk_device_wrap_open(DEV_TEE_A,O_RDWR);
- if (fd_tee_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_tee_a;
-// }else{
- fd_tee_b = mtk_device_wrap_open(DEV_TEE_B,O_RDWR);
- if (fd_tee_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_tee_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_tee_b;
- fd_write = fd_tee_a;
- } else {
- fd_read = fd_tee_a;
- fd_write = fd_tee_b;
- }
-
-
- fota_status.ota_run = PATCH_TEE;
- fota_status.update_status[PATCH_TEE-1].check_delta = WAIT;
- fota_status.update_status[PATCH_TEE-1].check_rom = WAIT;
- fota_status.update_status[PATCH_TEE-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_TEE;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading tee.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: tee upgrade result:%d\n",status);
- //up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_TEE-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_TEE-1].check_delta = PASS;
- fota_status.update_status[PATCH_TEE-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_TEE-1].check_delta = ERROR;
- fota_status.update_status[PATCH_TEE-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_TEE-1].check_delta = PASS;
- fota_status.update_status[PATCH_TEE-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- //fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- }
-
-
-
-
- if ((da_head.md1img>0) && (up_info.ota_run <= PATCH_MD1IMG))
- {
-
- now_patch = PATCH_MD1IMG;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee;
-
-
- if (up_info.ota_run == PATCH_MD1IMG)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_md1img_a = mtk_device_wrap_open(DEV_MD1IMG_A,O_RDWR);
- if (fd_md1img_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1img_a;
-// }else{
- fd_md1img_b = mtk_device_wrap_open(DEV_MD1IMG_B,O_RDWR);
- if (fd_md1img_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1img_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_md1img_b;
- fd_write = fd_md1img_a;
- } else {
- fd_read = fd_md1img_a;
- fd_write = fd_md1img_b;
- }
-
- fota_status.ota_run = PATCH_MD1IMG;
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = WAIT;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = WAIT;
- fota_status.update_status[PATCH_MD1IMG-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_MD1IMG;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
- LYVERBLOG("+[UA]: Start upgrading md1img.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: md1img upgrade result:%d\n",status);
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_MD1IMG-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = ERROR;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
-
-
- if ((da_head.md1dsp>0) && (up_info.ota_run <= PATCH_MD1DSP))
- {
-
- now_patch = PATCH_MD1DSP;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img;
-
-
- if (up_info.ota_run == PATCH_MD1DSP)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
- }
-// if(current_slot==SLOT_B) {
- fd_md1dsp_a = mtk_device_wrap_open(DEV_MD1DSP_A,O_RDWR);
- if (fd_md1dsp_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1dsp_a;
-// }else{
- fd_md1dsp_b = mtk_device_wrap_open(DEV_MD1DSP_B,O_RDWR);
- if (fd_md1dsp_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1dsp_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_md1dsp_b;
- fd_write = fd_md1dsp_a;
- } else {
- fd_read = fd_md1dsp_a;
- fd_write = fd_md1dsp_b;
- }
-
-
- fota_status.ota_run = PATCH_MD1DSP;
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = WAIT;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = WAIT;
- fota_status.update_status[PATCH_MD1DSP-1].update_result= WAIT;
-
- save_fota_status();
-
-
- up_info.ota_run = PATCH_MD1DSP;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
- LYVERBLOG("+[UA]: Start upgrading md1dsp.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: md1dsp upgrade result:%d\n",status);
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_MD1DSP-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = ERROR;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
- if ((da_head.vbmeta>0) && (up_info.ota_run <= PATCH_VBMETA))
- {
-
- now_patch = PATCH_VBMETA;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp;
-
-
- if (up_info.ota_run == PATCH_VBMETA)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
- }
-// if(current_slot==SLOT_B) {
- fd_vbmeta_a = mtk_device_wrap_open(DEV_VBMETA_A,O_RDWR);
- if (fd_vbmeta_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_vbmeta_a;
-// }else{
- fd_vbmeta_b = mtk_device_wrap_open(DEV_VBMETA_B,O_RDWR);
- if (fd_vbmeta_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_vbmeta_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_vbmeta_b;
- fd_write = fd_vbmeta_a;
- } else {
- fd_read = fd_vbmeta_a;
- fd_write = fd_vbmeta_b;
- }
-
-
- fota_status.ota_run = PATCH_VBMETA;
- fota_status.update_status[PATCH_VBMETA-1].check_delta = WAIT;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = WAIT;
- fota_status.update_status[PATCH_VBMETA-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_VBMETA;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading vbmeta.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: vbmeta upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_VBMETA-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_VBMETA-1].check_delta = PASS;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_VBMETA-1].check_delta = ERROR;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_VBMETA-1].check_delta = PASS;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
-#ifdef GSW_FOTA_CFG
-
- if ((da_head.oemapp>0) && (up_info.ota_run <= PATCH_OEMAPP))
- {
-
- now_patch = PATCH_OEMAPP;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta;
-
-
- if (up_info.ota_run == PATCH_OEMAPP)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_b");
- }
-// if(current_slot==SLOT_B) {
- fd_oemapp_a = mtk_device_wrap_open(DEV_OEMAPP_A,O_RDWR);
- if (fd_oemapp_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp_a;
-// }else{
- fd_oemapp_b = mtk_device_wrap_open(DEV_OEMAPP_B,O_RDWR);
- if (fd_oemapp_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_oemapp_b;
- fd_write = fd_oemapp_a;
- } else {
- fd_read = fd_oemapp_a;
- fd_write = fd_oemapp_b;
- }
-
-
- fota_status.ota_run = PATCH_OEMAPP;
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = WAIT;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = WAIT;
- fota_status.update_status[PATCH_OEMAPP-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_OEMAPP;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading oemapp.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: oemapp upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_OEMAPP-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = ERROR;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_OEMAPP -1].check_delta = PASS;
- //fota_status.update_status[PATCH_OEMAPP -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
- if ((da_head.oemapp2>0) && (up_info.ota_run <= PATCH_OEMAPP2))
- {
-
- now_patch = PATCH_OEMAPP2;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp;
-
-
- if (up_info.ota_run == PATCH_OEMAPP2)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
- }
-// if(current_slot==SLOT_B) {
- fd_oemapp2_a = mtk_device_wrap_open(DEV_OEMAPP2_A,O_RDWR);
- if (fd_oemapp2_a < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_a;
-// }else{
- fd_oemapp2_b = mtk_device_wrap_open(DEV_OEMAPP2_B,O_RDWR);
- if (fd_oemapp2_b < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_oemapp2_b;
- fd_write = fd_oemapp2_a;
- } else {
- fd_read = fd_oemapp2_a;
- fd_write = fd_oemapp2_b;
- }
-
-
- fota_status.ota_run = PATCH_OEMAPP2;
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = WAIT;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = WAIT;
- fota_status.update_status[PATCH_OEMAPP2-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_OEMAPP2;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading oemapp2.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: oemapp2 upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_OEMAPP2-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = ERROR;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_delta = PASS;
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-#endif
- if ((da_head.bl33>0) && (up_info.ota_run <= PATCH_BL33))
- {
-
- now_patch = PATCH_BL33;
-
-#ifdef GSW_FOTA_CFG
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp + da_head.oemapp2;
-#endif
-#ifdef MOBILETEK_FOTA_CFG
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta;
-#endif
- if (up_info.ota_run == PATCH_BL33)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- fd_bl33 = mtk_device_wrap_open(DEV_BL33,O_RDWR);
- if (fd_bl33 < 0) {
- err = errno;
- LYERRLOG("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_bl33;
-
- fota_status.ota_run = PATCH_BL33;
- fota_status.update_status[PATCH_BL33-1].check_delta = WAIT;
- fota_status.update_status[PATCH_BL33-1].check_rom = WAIT;
- fota_status.update_status[PATCH_BL33-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_BL33;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading bl33.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: bl33 upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_BL33-1].update_result= status;
- fota_status.update_result= status;
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_BL33-1].check_delta = PASS;
- fota_status.update_status[PATCH_BL33-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_BL33-1].check_delta = ERROR;
- fota_status.update_status[PATCH_BL33-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_BL33-1].check_delta = PASS;
- fota_status.update_status[PATCH_BL33-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_BL33 -1].check_delta = PASS;
- //fota_status.update_status[PATCH_BL33 -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- mtk_device_wrap_close(fd_curr);
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_curr);
-
- }
-
-
-
- //if(current_slot==SLOT_B)
-
-#ifdef GSW_FOTA_CFG
- if ((da_head.full_sys>0)|| (da_head.full_boot>0)|| (da_head.full_tee>0)||(da_head.full_md1img>0)||(da_head.full_md1dsp>0)||(da_head.full_vbmeta>0)||(da_head.full_oemapp>0)||(da_head.full_oemapp2>0)||(da_head.full_bl33>0))
-#endif
-
-#ifdef MOBILETEK_FOTA_CFG
- if ((da_head.full_sys>0)|| (da_head.full_boot>0)|| (da_head.full_tee>0)||(da_head.full_md1img>0)||(da_head.full_md1dsp>0)||(da_head.full_vbmeta>0)||(da_head.full_bl33>0))
-#endif
- {
-
- now_patch = 0;
- up_info.ota_run = 0;
-
- memset(&fota_status,0,sizeof(fota_status));
- fota_status.switch_slot = WAIT;
- save_fota_status();
-
- if (lseek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
- err = errno;
- RLOGD("+[UA]: mtk_device_wrap_seek df_delta err\n");
- lynq_fota_release_wake_lock();
- return -1;
- }
-
- read(fd_delta, full_header, DELTA_FULL_HEARD_SIZE);
-
-
- if (memcmp(full_header, "full-ota", DELTA_FULL_HEARD_SIZE) != 0) {
- RLOGD("+[UA]: invalid full delta header\r\n");
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = -1;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- //mtk_device_wrap_close(fd_curr);
- sync();
- close(fd_update_status);
-
- for (i = FULL_SYSTEM;i<=FULL_BL33;i++){
- if (fota_status.update_status[i-1].need_update ==1) {
- fota_status.ota_run = i;
- fota_status.update_status[i-1].check_delta = ERROR;
- fota_status.update_status[i-1].check_rom= WAIT;
- fota_status.update_status[i-1].update_result= ERROR;
- }
- }
- fota_status.update_result = ERROR;
- save_fota_status();
- lynq_fota_release_wake_lock();
- return -1;
- }
- }
-
-
-
-
-
- if(da_head.full_sys>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/system_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/system_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_system_a;
- }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_system_b;
- }
- fota_status.ota_run = FULL_SYSTEM;
- save_fota_status();
-
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading system full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_sys);
-
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_sys,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_sys,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
-
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: system full retry_cnt = %d\n",retry_cnt);
-
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_SYSTEM_B,DEV_SYSTEM_A);
- }
- else{
- nand_copyto_nand(DEV_SYSTEM_A,DEV_SYSTEM_B);
- }
- }
-
- RLOGD("+[UA]: system full upgrade result:%d\n",status);
-
- fota_status.update_result = status;
- fota_status.update_status[FULL_SYSTEM-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
-
- if(da_head.full_boot>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/boot_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/boot_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_boot_a = mtk_device_wrap_open(DEV_BOOT_A,O_RDWR);
- if (fd_boot_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_boot_a;
- }else{
- fd_boot_b = mtk_device_wrap_open(DEV_BOOT_B,O_RDWR);
- if (fd_boot_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_boot_b;
- }
- fota_status.ota_run = FULL_BOOT;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading boot full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_boot);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_boot,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_boot,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
-
- RLOGD("+[UA]: boot full retry_cnt = %d\n",retry_cnt);
- mtk_device_wrap_close(fd_curr);
-
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_BOOT_B,DEV_BOOT_A);
- }
- else{
- nand_copyto_nand(DEV_BOOT_A,DEV_BOOT_B);
- }
- }
-
-
- RLOGD("+[UA]: boot full upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_BOOT-1].update_result = status;
- save_fota_status();
-
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
- }
-
-
- if(da_head.full_tee>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/tee_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/tee_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_tee_a = mtk_device_wrap_open(DEV_TEE_A,O_RDWR);
- if (fd_tee_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_tee_a;
- }else{
- fd_tee_b = mtk_device_wrap_open(DEV_TEE_B,O_RDWR);
- if (fd_tee_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_tee_b;
- }
- fota_status.ota_run = FULL_TEE;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading tee full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_tee);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_tee,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_tee,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
- RLOGD("+[UA]: tee full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_TEE_B,DEV_TEE_A);
- }
- else{
- nand_copyto_nand(DEV_TEE_A,DEV_TEE_B);
- }
- }
-
- RLOGD("+[UA] tee full upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_TEE-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_md1img>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_md1img_a = mtk_device_wrap_open(DEV_MD1IMG_A,O_RDWR);
- if (fd_md1img_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1img_a;
- }else{
- fd_md1img_b = mtk_device_wrap_open(DEV_MD1IMG_B,O_RDWR);
- if (fd_md1img_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1img_b;
- }
- fota_status.ota_run = FULL_MD1IMG;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading md1img full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_md1img);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1img,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1img,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: md1img full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_MD1IMG_B,DEV_MD1IMG_A);
- }
- else{
- nand_copyto_nand(DEV_MD1IMG_A,DEV_MD1IMG_B);
- }
- }
-
- RLOGD("+[UA]: md1img upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_MD1IMG-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_md1dsp>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_md1dsp_a = mtk_device_wrap_open(DEV_MD1DSP_A,O_RDWR);
- if (fd_md1dsp_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1dsp_a;
- }else{
- fd_md1dsp_b = mtk_device_wrap_open(DEV_MD1DSP_B,O_RDWR);
- if (fd_md1dsp_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1dsp_b;
- }
- fota_status.ota_run = FULL_MD1DSP;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading md1dsp full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_md1dsp);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1dsp,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1dsp,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: md1dsp full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_MD1DSP_B,DEV_MD1DSP_A);
- }
- else{
- nand_copyto_nand(DEV_MD1DSP_A,DEV_MD1DSP_B);
- }
- }
-
- RLOGD("+[UA]: md1dsp upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_MD1DSP-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_vbmeta>0) {
-#ifdef GSW_FOTA_CFG
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp;
-#endif
-
-#ifdef MOBILETEK_FOTA_CFG
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img + da_head.full_md1dsp;
-#endif
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_vbmeta_a = mtk_device_wrap_open(DEV_VBMETA_A,O_RDWR);
- if (fd_vbmeta_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_vbmeta_a;
- }else{
- fd_vbmeta_b = mtk_device_wrap_open(DEV_VBMETA_B,O_RDWR);
- if (fd_vbmeta_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_vbmeta_b;
- }
- fota_status.ota_run = FULL_VBMETA;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading vbmeta full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_vbmeta);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_vbmeta,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_vbmeta,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: vbmeta full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_VBMETA_B,DEV_VBMETA_A);
- }
- else{
- nand_copyto_nand(DEV_VBMETA_A,DEV_VBMETA_B);
- }
- }
-
- RLOGD("+[UA]: vbmeta upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_VBMETA-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-#ifdef GSW_FOTA_CFG
- if(da_head.full_oemapp>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_oemapp_a = mtk_device_wrap_open(DEV_OEMAPP_A,O_RDWR);
- if (fd_oemapp_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp_a;
- }else{
- fd_oemapp_b = mtk_device_wrap_open(DEV_OEMAPP_B,O_RDWR);
- if (fd_oemapp_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp_b;
- }
- fota_status.ota_run = FULL_OEMAPP;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading oemapp full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_oemapp);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_oemapp,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_oemapp,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: oemapp full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_OEMAPP_B,DEV_OEMAPP_A);
- }
- else{
- nand_copyto_nand(DEV_OEMAPP_A,DEV_OEMAPP_B);
- }
- }
-
- RLOGD("+[UA]: oemapp upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_OEMAPP-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
- }
-
- if(da_head.full_oemapp2>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta + da_head.full_oemapp;
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_oemapp2_a = mtk_device_wrap_open(DEV_OEMAPP2_A,O_RDWR);
- if (fd_oemapp2_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp2_a;
- }else{
- fd_oemapp2_b = mtk_device_wrap_open(DEV_OEMAPP2_B,O_RDWR);
- if (fd_oemapp2_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp2_b;
- }
- fota_status.ota_run = FULL_OEMAPP2;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading oemapp2 full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_oemapp2);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_oemapp2,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_oemapp2,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
- RLOGD("+[UA]: oemapp2 full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_OEMAPP2_B,DEV_OEMAPP2_A);
- }
- else{
- nand_copyto_nand(DEV_OEMAPP2_A,DEV_OEMAPP2_B);
- }
- }
- RLOGD("+[UA]: oemapp2 upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_OEMAPP2-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
- }
-
-#endif
- if(da_head.full_bl33>0) {
-
- }
-
-
-
- if(update_mode == MODE_NORMAL){ //need A VS B
- if(current_slot == SLOT_A) {
-
- up_info.fota_flag[0] = 'B';
- up_info.fota_flag[1] = '-';
- up_info.fota_flag[2] = 'A';
-
- }else{
-
- up_info.fota_flag[0] = 'A';
- up_info.fota_flag[1] = '-';
- up_info.fota_flag[2] = 'B';
-
- }
-
- }else{
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
-
- }
-
-
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-#ifdef GSW_FOTA_CFG
- close_dev_fd(fd_delta);
-#endif
-
-#ifdef MOBILETEK_FOTA_CFG
- close(fd_delta);
-#endif
-
-
-
- close(fd_update_status);
- sync();
-
- slot = (current_slot == 0) ? 1 : 0;
- RLOGD("+[UA]: slot SLOT = %d\n",slot);
-#ifdef MOBILETEK_FOTA_CFG
- if(update_mode==MODE_NORMAL)
- {
- module->setActiveBootSlot(module,slot);
- RLOGD("+[UA]: upgrade is success!!!!\n");
- }
-#endif
-
-#ifdef GSW_FOTA_CFG
- module->setActiveBootSlot(module,slot);
- RLOGD("+[UA]: upgrade is success!!!!\n");
-#endif
-
- fota_status.ota_run = 0;
- fota_status.switch_slot = PASS;
- fota_status.update_result = status;
- save_fota_status();
-
- lynq_fota_release_wake_lock();
- return status;
+ return ret;
}
/**
@@ -6506,7 +3053,6 @@
* @param1 szie:fota addr length
* @return 0:set success other:set fail
*/
-#ifdef MOBILETEK_FOTA_CFG
int lynq_fota_set_addr_value(char *value,int size)
{
int err = 0;
@@ -6548,29 +3094,7 @@
sync();
return 0;
}
-#endif
-#ifdef GSW_FOTA_CFG
-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);
-}
-#endif
/**
* @brief The following is the wake up
* start
@@ -6622,18 +3146,18 @@
/**
* @brief fota wake lock
- *
+ *
* @param1 value:void
* @return ;
*/
-static void lynq_fota_grab_artial_wake_lock(void)
+static void lynq_fota_acquire_wake_lock(void)
{
acquire_wake_lock(PARTIAL_WAKE_LOCK, ANDROID_WAKE_LOCK_NAME);
}
/**
* @brief get the upgrade package address
- *
+ *
* @param1 value:void
* @return ;
*/