[Bugfix][API-333][FOTA]Fota interface with wakeup lock
Change-Id: I2a03c3fae1812b112609c6f3f9eb68f80f502e1f
diff --git a/src/lynq/lib/liblynq-fota/makefile b/src/lynq/lib/liblynq-fota/makefile
index b460dbc..4fe83ea 100755
--- a/src/lynq/lib/liblynq-fota/makefile
+++ b/src/lynq/lib/liblynq-fota/makefile
@@ -2,9 +2,14 @@
RM = rm -f
LOCAL_CFLAGS := -Wall \
- -Os \
+ -g -Os \
-flto \
-fpermissive \
+ -DRIL_SHLIB \
+ -DATCI_PARSE \
+ -DKEEP_ALIVE \
+ -D__LINUX_OS__ \
+ -DECALL_SUPPORT
CFLAGS += -fPIC -O2 $(INCLUDE) -D_LARGEFILE64_SOURCE
@@ -26,6 +31,8 @@
LOCAL_LIBS := \
-L. \
-L./lib \
+ -ldl \
+ -lpthread \
-llog \
-lstdc++ \
-liotpatch \
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 8a80ac2..9252126 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -17,6 +17,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <dlfcn.h>
//#include <hardware/hardware.h>
//#define off64_t __off64_t
@@ -108,6 +109,9 @@
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_release_wake_lock(void);
int rock_mismatch(void* ctx, unsigned char* buf, unsigned int start, unsigned int size,
unsigned int source_hash,unsigned int target_hash) {
@@ -547,6 +551,9 @@
LYERRLOG("+[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);
@@ -571,6 +578,7 @@
if(0 != init_dev_fd())
{
LYVERBLOG("+[UA]: get fota addr error\n");
+ lynq_fota_release_wake_lock();
return E_ROCK_FOTA_ADDR;
}
@@ -715,6 +723,7 @@
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;
@@ -723,6 +732,7 @@
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;
@@ -799,6 +809,7 @@
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);
@@ -837,6 +848,7 @@
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;
@@ -845,6 +857,7 @@
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;
@@ -922,6 +935,7 @@
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);
@@ -960,6 +974,7 @@
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;
@@ -968,6 +983,7 @@
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;
@@ -1040,6 +1056,7 @@
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);
@@ -1077,6 +1094,7 @@
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;
@@ -1085,6 +1103,7 @@
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;
@@ -1157,6 +1176,7 @@
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);
@@ -1194,6 +1214,7 @@
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;
@@ -1202,6 +1223,7 @@
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;
@@ -1275,7 +1297,8 @@
sync();
close(fd_update_status);
mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
+ mtk_device_wrap_close(fd_write);
+ lynq_fota_release_wake_lock();
return status;
}
mtk_device_wrap_close(fd_read);
@@ -1312,6 +1335,7 @@
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;
@@ -1320,6 +1344,7 @@
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;
@@ -1391,7 +1416,8 @@
sync();
close(fd_update_status);
mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
+ mtk_device_wrap_close(fd_write);
+ lynq_fota_release_wake_lock();
return status;
}
mtk_device_wrap_close(fd_read);
@@ -1420,6 +1446,7 @@
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;
@@ -1480,6 +1507,7 @@
mtk_device_wrap_close(fd_curr);
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
mtk_device_wrap_close(fd_curr);
@@ -1505,6 +1533,7 @@
if (lseek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
err = errno;
LYERRLOG("+[UA]: mtk_device_wrap_seek df_delta err\n");
+ lynq_fota_release_wake_lock();
return -1;
}
@@ -1534,6 +1563,7 @@
}
fota_status.update_result = ERROR;
save_fota_status();
+ lynq_fota_release_wake_lock();
return -1;
}
}
@@ -1551,6 +1581,7 @@
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;
@@ -1559,6 +1590,7 @@
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;
@@ -1610,6 +1642,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -1627,6 +1660,7 @@
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;
@@ -1635,6 +1669,7 @@
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;
@@ -1684,6 +1719,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -1699,6 +1735,7 @@
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;
@@ -1707,6 +1744,7 @@
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;
@@ -1752,6 +1790,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -1768,6 +1807,7 @@
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;
@@ -1776,6 +1816,7 @@
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;
@@ -1822,6 +1863,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -1838,6 +1880,7 @@
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;
@@ -1846,6 +1889,7 @@
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;
@@ -1892,6 +1936,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -1908,6 +1953,7 @@
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;
@@ -1916,6 +1962,7 @@
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;
@@ -1962,6 +2009,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -2026,12 +2074,13 @@
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;
}
@@ -2214,6 +2263,9 @@
LYERRLOG("+[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);
@@ -2238,6 +2290,7 @@
if(0 != init_dev_fd())
{
LYVERBLOG("+[UA]: get fota addr error\n");
+ lynq_fota_release_wake_lock();
return E_ROCK_FOTA_ADDR;
}
@@ -2382,6 +2435,7 @@
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;
@@ -2390,6 +2444,7 @@
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;
@@ -2465,7 +2520,8 @@
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);
@@ -2504,6 +2560,7 @@
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;
@@ -2512,6 +2569,7 @@
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;
@@ -2588,7 +2646,8 @@
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);
@@ -2627,6 +2686,7 @@
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;
@@ -2635,6 +2695,7 @@
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;
@@ -2707,6 +2768,7 @@
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);
@@ -2744,6 +2806,7 @@
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;
@@ -2752,6 +2815,7 @@
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;
@@ -2824,6 +2888,7 @@
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);
@@ -2861,6 +2926,7 @@
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;
@@ -2869,6 +2935,7 @@
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;
@@ -2942,7 +3009,8 @@
sync();
close(fd_update_status);
mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
+ mtk_device_wrap_close(fd_write);
+ lynq_fota_release_wake_lock();
return status;
}
mtk_device_wrap_close(fd_read);
@@ -2979,6 +3047,7 @@
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;
@@ -2987,6 +3056,7 @@
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;
@@ -3058,7 +3128,8 @@
sync();
close(fd_update_status);
mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
+ mtk_device_wrap_close(fd_write);
+ lynq_fota_release_wake_lock();
return status;
}
mtk_device_wrap_close(fd_read);
@@ -3087,6 +3158,7 @@
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;
@@ -3147,6 +3219,7 @@
mtk_device_wrap_close(fd_curr);
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
mtk_device_wrap_close(fd_curr);
@@ -3172,6 +3245,7 @@
if (lseek(fd_delta, DELTA_HEARD_SIZE + delta_size, SEEK_SET) < 0) {
err = errno;
LYERRLOG("+[UA]: mtk_device_wrap_seek df_delta err\n");
+ lynq_fota_release_wake_lock();
return -1;
}
@@ -3201,6 +3275,7 @@
}
fota_status.update_result = ERROR;
save_fota_status();
+ lynq_fota_release_wake_lock();
return -1;
}
}
@@ -3218,6 +3293,7 @@
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;
@@ -3226,6 +3302,7 @@
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;
@@ -3277,6 +3354,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -3294,6 +3372,7 @@
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;
@@ -3302,6 +3381,7 @@
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;
@@ -3351,6 +3431,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -3366,6 +3447,7 @@
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;
@@ -3374,6 +3456,7 @@
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;
@@ -3419,6 +3502,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -3435,6 +3519,7 @@
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;
@@ -3443,6 +3528,7 @@
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;
@@ -3489,6 +3575,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -3505,6 +3592,7 @@
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;
@@ -3513,6 +3601,7 @@
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;
@@ -3559,6 +3648,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -3575,6 +3665,7 @@
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;
@@ -3583,6 +3674,7 @@
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;
@@ -3629,6 +3721,7 @@
write(fd_update_status, &up_info,sizeof(up_info));
sync();
close(fd_update_status);
+ lynq_fota_release_wake_lock();
return status;
}
@@ -3683,7 +3776,7 @@
slot = (current_slot == 0) ? 1 : 0;
LYVERBLOG("+[UA]: slot SLOT = %d\n",slot);
-
+
if(update_mode==MODE_NORMAL){
module->setActiveBootSlot(module,slot);
LYVERBLOG("+[UA]: upgrade is success!!!!\n");
@@ -3693,7 +3786,8 @@
fota_status.switch_slot = PASS;
fota_status.update_result = status;
save_fota_status();
-
+
+ lynq_fota_release_wake_lock();
return status;
}
@@ -3723,3 +3817,77 @@
return lynq_get_value(FOTA_UCI_FILE, FOTA_UCI_MODULE,FOTA_UCI_ADDR, tmp);
}
+/**
+ * @brief The following is the wake up
+ * start
+ */
+
+#define ANDROID_WAKE_LOCK_NAME "fota-interface"
+
+void *dlHandle_wakelock;
+
+enum {
+ PARTIAL_WAKE_LOCK = 1, // the cpu stays on, but the screen is off
+ FULL_WAKE_LOCK = 2 // the screen is also on
+};
+
+// while you have a lock held, the device will stay on at least at the
+// level you request.
+
+int (*acquire_wake_lock)(int lock, const char* id);
+int (*release_wake_lock)(const char* id);
+
+/**
+ * @brief Porting wakes up the demo content
+ */
+static void lynq_init_wake_lock_func(void)
+{
+ const char *lynqLibPath_WakeLock = "/usr/lib64/libpower.so";
+
+ dlHandle_wakelock = dlopen(lynqLibPath_WakeLock, RTLD_NOW);
+ if (dlHandle_wakelock == NULL)
+ {
+ printf("dlopen lynqLibPath_WakeLock failed: %s", dlerror());
+ exit(EXIT_FAILURE);
+ }
+
+ acquire_wake_lock = (int(*)(int,const char*))dlsym(dlHandle_wakelock, "acquire_wake_lock");
+ if (acquire_wake_lock == NULL) {
+ printf("acquire_wake_lock not defined or exported in %s", lynqLibPath_WakeLock);
+ exit(EXIT_FAILURE);
+ }
+ release_wake_lock = (int(*)( const char*))dlsym(dlHandle_wakelock, "release_wake_lock");
+ if (release_wake_lock == NULL) {
+ printf("release_wake_lock not defined or exported in %s", lynqLibPath_WakeLock);
+ exit(EXIT_FAILURE);
+ }
+ dlerror(); // Clear any previous dlerror
+
+ return;
+}
+
+/**
+ * @brief fota wake lock
+ *
+ * @param1 value:void
+ * @return ;
+ */
+static void lynq_fota_grab_artial_wake_lock(void)
+{
+ acquire_wake_lock(PARTIAL_WAKE_LOCK, ANDROID_WAKE_LOCK_NAME);
+}
+
+/**
+ * @brief get the upgrade package address
+ *
+ * @param1 value:void
+ * @return ;
+ */
+static void lynq_fota_release_wake_lock(void)
+{
+ release_wake_lock(ANDROID_WAKE_LOCK_NAME);
+}
+/**
+ * @brief This is the wake up call
+ * end
+ */