Merge "[Feature][ZK-65][mtklog] ftp log to soc"
diff --git a/IC_meta/mtk/2735/liblynq-at-fota/liblynq-at-fota.bb b/IC_meta/mtk/2735/liblynq-at-fota/liblynq-at-fota.bb
new file mode 100755
index 0000000..f22fcb2
--- /dev/null
+++ b/IC_meta/mtk/2735/liblynq-at-fota/liblynq-at-fota.bb
@@ -0,0 +1,47 @@
+inherit externalsrc package
+
+DESCRIPTION = "liblynq-at-fota"
+LICENSE = "MobiletekProprietary"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c8a2ee6e65c8c0723cb8de987f22458c"
+DEPENDS += "platform-libs liblynq-log liblynq-protcl liblynq-fota"
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../LYNQ_PUBLIC/common_src/lib/liblynq-at-fota"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+BB_INCLUDE_ADD = "--sysroot=${STAGING_DIR_HOST}"
+BB_LDFLAGS_ADD = "--sysroot=${STAGING_DIR_HOST} -Wl,--hash-style=gnu"
+#Parameters passed to do_compile()
+
+FILES_${PN} = "${base_libdir}/*.so \
+ ${base_bindir}\
+ ${base_sbindir} \
+ /etc/dbus-1/system.d/"
+FILES_${PN}-dev = "/test \
+ ${includedir}"
+FILES_${PN}-doc = "/doc"
+FILES_${PN}-dbg ="${base_bindir}/.debug \
+ ${base_libdir}/.debug \
+ ${base_sbindir}/.debug"
+INSANE_SKIP_${PN} += "already-stripped"
+INSANE_SKIP_${PN} += "installed-vs-shipped"
+#INHIBIT_PACKAGE_STRIP = "1"
+do_compile () {
+ if [ "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ elif [ "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ elif [ "${PACKAGE_ARCH}" = "cortexa53hf-neon-fp-armv8" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE -mhard-float -mfpu=neon-fp-armv8 -mfloat-abi=hard -mcpu=cortex-a53 -mtune=cortex-a53"
+ else
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ fi
+}
+
+do_install() {
+ oe_runmake install ROOT=${D}
+ if [ -d "${WORKONSRC}" ] ; then
+ install -d ${D}${includedir}
+ cp -af ${S}/include/libat/ ${D}${includedir}/libat
+ fi
+}
+
diff --git a/IC_meta/mtk/2735/lynq-log-transfer/lynq-log-transfer.bb b/IC_meta/mtk/2735/lynq-log-transfer/lynq-log-transfer.bb
new file mode 100755
index 0000000..b067aaa
--- /dev/null
+++ b/IC_meta/mtk/2735/lynq-log-transfer/lynq-log-transfer.bb
@@ -0,0 +1,30 @@
+inherit externalsrc package
+
+DESCRIPTION = "lynq-log-transfer"
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+DEPENDS += "platform-libs liblynq-log"
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../LYNQ_PUBLIC/IC_src/mtk/packages/apps/lynq-log-transfer"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+
+#INHIBIT_PACKAGE_STRIP = "1"
+do_compile () {
+ if [ "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ elif [ "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ elif [ "${PACKAGE_ARCH}" = "cortexa53hf-neon-fp-armv8" ]; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE -mhard-float -mfpu=neon-fp-armv8 -mfloat-abi=hard -mcpu=cortex-a53 -mtune=cortex-a53"
+ else
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ fi
+}
+
+do_install() {
+ install -d ${D}${bindir}/
+ install -m 0755 ${S}/lynq-log-transfer ${D}${bindir}/
+ install -m 0755 ${B}/lynq_inner_log_transfer.sh ${D}${bindir}/
+}
diff --git a/IC_meta/mtk/2735/packagegroups/packagegroup-lync-mt2735.bb b/IC_meta/mtk/2735/packagegroups/packagegroup-lync-mt2735.bb
index 9546799..0e964a0 100755
--- a/IC_meta/mtk/2735/packagegroups/packagegroup-lync-mt2735.bb
+++ b/IC_meta/mtk/2735/packagegroups/packagegroup-lync-mt2735.bb
@@ -39,9 +39,7 @@
liblynq-system-own \
lynq-wg870 \
lynq-ril-service \
- lynq-uart-service \
lynq-sdk-ready \
- lynq-ndis-uevent \
liblynq-call \
liblynq-data \
liblynq-sms \
@@ -51,11 +49,11 @@
liblynq-at-factory \
liblynq-at-common \
lynq-gnss-test \
- lynq-audio-service \
ntp \
tzdata \
lynq-tester-service \
liblynq-shm \
liblynq-misc \
liblynq-codec \
+ liblynq-at-fota \
"
diff --git a/IC_src/mtk/lib/liblynq-fota/include/iot_rock.h b/IC_src/mtk/lib/liblynq-fota/include/iot_rock.h
index a6e6821..ea557b9 100755
--- a/IC_src/mtk/lib/liblynq-fota/include/iot_rock.h
+++ b/IC_src/mtk/lib/liblynq-fota/include/iot_rock.h
@@ -140,7 +140,7 @@
int iot_patch(IOT_UPDATA_CONTEXT* update_ctx);
-
+int lynq_read_process(void);
unsigned int iot_hash(unsigned char *buf,unsigned int len, unsigned int* value);
int lynq_md5_file_verfy(char* filePath, char* file_md5);
//xf.li@20230822 add for ab recover start
diff --git a/IC_src/mtk/lib/liblynq-fota/rock_ua/rock_ua.c b/IC_src/mtk/lib/liblynq-fota/rock_ua/rock_ua.c
index e65becb..d510633 100755
--- a/IC_src/mtk/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/IC_src/mtk/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -38,20 +38,9 @@
#define ROCK_BACKUP_LEN ROCK_DEFAULT_BLOCK_SIZE
-
#define FILENAME_SIZE 50
-
-//#define DEV_DELTA "/dev/disk/by-partlabel/delta"
-#if 0
-#define DEV_DELTA "/dev/disk/by-partlabel/delta"
-#else
-#define DEV_DELTA "/dev/mtd41"
-#endif
-
-
-
char partition_filename_a[][FILENAME_SIZE] = {
{"/dev/disk/by-partlabel/system_a"},
{"/dev/disk/by-partlabel/boot_a"},
@@ -63,15 +52,15 @@
{"/dev/disk/by-partlabel/oemapp2_a"},
{"/dev/disk/by-partlabel/medmcu_a"},
{"/dev/disk/by-partlabel/spm_a"},
- {"/dev/disk/by-partlabel/protect_a"},
+ {"/dev/disk/by-partlabel/protect_a"},
{"/dev/disk/by-partlabel/mcf1_a"},
{"/dev/disk/by-partlabel/mcf2_a"},
{"/dev/disk/by-partlabel/mcupm_a"},
- {"/dev/disk/by-partlabel/sspm_a"},
+ {"/dev/disk/by-partlabel/sspm_a"},
{"/dev/disk/by-partlabel/dpm_a"},
- {"/dev/disk/by-partlabel/pi_img_a"},
+ {"/dev/disk/by-partlabel/pi_img_a"},
{"/dev/disk/by-partlabel/hsm_os_a"},
- {"/dev/disk/by-partlabel/bl2_a"},
+ {"/dev/disk/by-partlabel/bl2_a"},
{"/dev/disk/by-partlabel/bl33_a"}
};
@@ -85,17 +74,17 @@
{"/dev/disk/by-partlabel/vbmeta_b"},
{"/dev/disk/by-partlabel/oemapp_b"},
{"/dev/disk/by-partlabel/oemapp2_b"},
- {"/dev/disk/by-partlabel/medmcu_b"},
+ {"/dev/disk/by-partlabel/medmcu_b"},
{"/dev/disk/by-partlabel/spm_b"},
{"/dev/disk/by-partlabel/protect_b"},
{"/dev/disk/by-partlabel/mcf1_b"},
{"/dev/disk/by-partlabel/mcf2_b"},
{"/dev/disk/by-partlabel/mcupm_b"},
- {"/dev/disk/by-partlabel/sspm_b"},
+ {"/dev/disk/by-partlabel/sspm_b"},
{"/dev/disk/by-partlabel/dpm_b"},
{"/dev/disk/by-partlabel/pi_img_b"},
{"/dev/disk/by-partlabel/hsm_os_b"},
- {"/dev/disk/by-partlabel/bl2_b"},
+ {"/dev/disk/by-partlabel/bl2_b"},
{"/dev/disk/by-partlabel/bl33_b"}
};
@@ -209,6 +198,7 @@
static unsigned int now_patch = 0;
unsigned int current_slot = 0;
unsigned char rock_debug_buffer[512];
+char g_delta_mtd[16];
@@ -306,6 +296,23 @@
close(fd_fota_status);
}
+int lynq_read_process(void)
+{
+ int err;
+ fd_fota_status = open(FILE_FOTA_STATE,O_RDWR | O_CREAT,0777);
+
+ if (fd_fota_status < 0) {
+ err = errno;
+ RLOGD("+[UA]: save_fota_status: Error opening metadata file: %s\n",strerror(errno));
+ return -err;
+ }
+ memset(&fota_status, 0 , sizeof(fota_status));
+ read(fd_fota_status, &fota_status,sizeof(fota_status));
+ sync();
+ close(fd_fota_status);
+ return fota_status.ota_run;
+}
+
static int save_fota_info()
{
int err;
@@ -343,12 +350,10 @@
}
int rock_process_block(void* ctx, unsigned char* data, unsigned int start, unsigned int size){
- //rock_trace(ctx, "rock update progress block %d\n", size);
int writen = 0;
int ret,err;
-
-
+
if (start == BACKUP_ADDR_FLAG) {
int fd_backup = open(FILE_BACKUP,O_RDWR | O_CREAT,0777);
while (writen < size) {
@@ -359,16 +364,14 @@
close(fd_backup);
return size;
}
-
-
-
+
writen = 0;
if (mtk_device_wrap_seek(fd_write, start, SEEK_SET) < 0) {
err = errno;
rock_trace(ctx, "mtk_device_wrap_seek write\n");
return err;
- }
+ }
while (writen < size) {
ret = mtk_device_wrap_write(fd_write,data+writen, ROCK_DEFAULT_BLOCK_SIZE);
@@ -461,7 +464,7 @@
} while(size > 0);
- return ret;
+ return ret;
}
@@ -470,8 +473,7 @@
int rock_read_delta(void* ctx, unsigned char* dest, unsigned int offset, unsigned int size){
int ret = 0,err = 0;
-
-
+
if (lseek(fd_delta, offset + delta_offset, SEEK_SET) < 0) {
err = -errno;
rock_trace(ctx, "mtk_device_wrap_seek df_delta err\n");
@@ -512,12 +514,68 @@
int rock_delete_file(void* ctx, void* name){return 0;}
/* ROCK IPL end */
+void delete_enter(char data[])
+{
+ char *find = strchr(data, ':');
+ if(find)
+ *find = '\0';
+ return ;
+}
+
+void get_delta_mtd(char *delta_mtd)
+{
+ FILE *fp;
+ char mtd_buffer[8];
+ fp = popen("cat /proc/mtd|grep delta|awk '{print $1}'","r");
+ fgets(mtd_buffer, sizeof(mtd_buffer), fp);
+ delete_enter(mtd_buffer);
+ sprintf(delta_mtd,"/dev/%s", mtd_buffer);
+ RLOGD("delta_mtd:%s\n", delta_mtd);
+ pclose(fp);
+ return;
+}
+
+int get_file_size(void)
+{
+ FILE *stream;
+ stream = fopen("/tmp/fota.delta", "r");
+ long file_size = -1;
+ long cur_offset = ftell(stream);
+ if (cur_offset == -1)
+ {
+ printf("ftell failed :%s\n", strerror(errno));
+ return -1;
+ }
+ if (fseek(stream, 0, SEEK_END) != 0)
+ {
+ printf("fseek failed: %s\n", strerror(errno));
+ return -1;
+ }
+ file_size = ftell(stream);
+ if (file_size == -1)
+ {
+ printf("ftell failed :%s\n", strerror(errno));
+ }
+ if (fseek(stream, cur_offset, SEEK_SET) != 0)
+ {
+ printf("fseek failed: %s\n", strerror(errno));
+ return -1;
+ }
+ fclose(stream);
+ if(file_size >52428800)
+ {
+ return -1;
+ }
+ return 0;
+}
static int init_dev_fd()
{
int err;
+ int ret;
+ int result;
char lynq_fota_addr[64] = {0};
char fota_name[]= "fota.delta";
int n;
@@ -526,6 +584,29 @@
return E_ROCK_FOTA_ADDR;
}
RLOGD("+[UA]: get fota pack addr: %s\n",lynq_fota_addr);
+ if(!(strcmp(lynq_fota_addr, "/tmp/fota.delta")))
+ {
+ ret = get_file_size();
+ if(ret != 0)
+ {
+ RLOGD("the delta size over 50M\n");
+ return -1;
+ }
+ get_delta_mtd(g_delta_mtd);
+ result = test_write_delta(lynq_fota_addr, g_delta_mtd);
+ if(result != 0)
+ {
+ RLOGD("fota.delta write into mtd fail !\n");
+ }
+ strcpy(lynq_fota_addr, g_delta_mtd);
+ }
+ if(lynq_fota_set_addr_value(lynq_fota_addr,strlen(lynq_fota_addr)))
+ {
+ RLOGD("set addr fail\n");
+ return 1;
+ }
+ RLOGD("+[UA]: get fota pack addr: %s\n", lynq_fota_addr);
+
fd_delta = open(lynq_fota_addr,O_RDWR);
if (fd_delta < 0) {
@@ -570,9 +651,9 @@
int test_write_delta(char *source, char *target)
{
int fd_source,fd_target,size;
-
+ char buf[32];
char delta_data[ROCK_DEFAULT_BLOCK_SIZE];
-
+ char lynq_fota_addr[64];
fd_source = open(source,O_RDONLY);
if (fd_source < 0) {
@@ -588,7 +669,12 @@
RLOGD("+[UA]: open target error\n");
return 1;
}
-
+
+ if(!(strcmp(lynq_fota_addr, g_delta_mtd)))
+ {
+ sprintf(buf,"flash_eraseall %s", g_delta_mtd);
+ system(buf);
+ }
while(( size = read(fd_source,delta_data,ROCK_DEFAULT_BLOCK_SIZE))>0) {
mtk_device_wrap_write(fd_target,delta_data,ROCK_DEFAULT_BLOCK_SIZE);
}
@@ -602,7 +688,7 @@
int nand_copyto_nand(char *source, char *target)
{
int fd_source,fd_target,size;
-
+
char delta_data[ROCK_DEFAULT_BLOCK_SIZE];
fd_source = mtk_device_wrap_open(source,O_RDONLY);
@@ -828,7 +914,7 @@
ctx.ram_len = ROCK_RAM_LEN;
ctx.backup_base = BACKUP_ADDR_FLAG;
//ctx.backup_len = ROCK_DEFAULT_BLOCK_SIZE;
- ctx.backup_len = 0;
+ ctx.backup_len = 0;
ctx.update_nvram = 0;
ctx.read_rom_directly = read_rom_directly;
//ctx.first_run = first_run;
@@ -845,7 +931,7 @@
memset(&fota_status,0,sizeof(fota_status));
RLOGD("+[UA]: up_info.ota_run = %d\n",up_info.ota_run);
-#if 0
+#if 0
if ((up_info.ota_run>PATCH_BL33)||(up_info.ota_run<PATCH_SYSTEM))
{
up_info.ota_run = 0;
@@ -870,10 +956,6 @@
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));
memset(&delta_head, 0, sizeof(delta_head));
read(fd_delta, (char *)&delta_head[0], sizeof(delta_head));
@@ -885,12 +967,10 @@
if (delta_head[i] > 0) {
fota_status.update_status[i].need_update = 1;
delta_size+=delta_head[i];
-
}
- RLOGD("+[UA]: %s,delta size = %d\n",partition_filename[i],delta_head[i]);
+ RLOGD("+[UA]: %s,delta size = %d, i=%d\n",partition_filename[i],delta_head[i], i);
}
-
-
+
for(i = MAX_OTA_ROLE/2;i<(MAX_OTA_ROLE/2+REAL_OTA_ROLE); i++) {
if (delta_head[i] > 0) {
fota_status.update_status[i].need_update = 1;
@@ -928,13 +1008,6 @@
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.medmcu+da_head.bl33;
-
- //sha_size = 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_medmcu+da_head.full_bl33
-
-
-
-
is_need_fullupdate = 0;
if(sha_size>0) {
is_need_fullupdate = 1;
@@ -958,7 +1031,7 @@
RLOGD("+[UA]: delta calc sha = %s\n",str_sha);
if(memcmp(digest_s,digest_t,SHA_DIGEST_SIZE)==0) {
-
+
RLOGD("sha verify pass\n");
}else{
@@ -966,9 +1039,8 @@
system("echo fota-interface >/sys/power/wake_unlock");
return -1;
-
}
-
+
memset(digest_s,0,SHA_DIGEST_SIZE);
memset(digest_t,0,SHA_DIGEST_SIZE);
@@ -1021,7 +1093,7 @@
}
if(current_slot==SLOT_B){
fd_read = fd_partition_b;
- fd_write = fd_partition_a;
+ fd_write = fd_partition_a;
} else {
fd_read = fd_partition_a;
fd_write = fd_partition_b;
@@ -1088,7 +1160,7 @@
return status;
}
mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
+ mtk_device_wrap_close(fd_write);
}
@@ -1766,28 +1838,39 @@
{
FILE *fp;
char check_result[64];
+ int ret;
if(strcmp(name, "oemapp") == 0)
{
RLOGD("lynq_check_oemapp oemapp");
- if(system("df -lh|grep oemapp |grep -v oemapp2") != 0)
+ ret = system("cat /proc/mtd|grep oemapp");
+ if(ret != 0)
{
return 0;
}
+ if(system("df -lh|grep oemapp |grep -v oemapp2") != 0)
+ {
+ return -1;
+ }
else
{
- return 1;
+ return 0;
}
}
else if(strcmp(name, "oemapp2") == 0)
{
RLOGD("lynq_check_oemapp oemapp2");
- if(system("df -lh|grep oemapp2") != 0)
+ ret = system("cat /proc/mtd|grep oemapp2");
+ if(ret != 0)
{
return 0;
}
+ if(system("df -lh|grep oemapp2") != 0)
+ {
+ return -1;
+ }
else
{
- return 1;
+ return 0;
}
}
}
@@ -1839,8 +1922,7 @@
close(fd);
RLOGD("[+UP]: lynq_up_info.ota_run=%d\n",lynq_up_info.ota_run);
- /*
- if((lynq_check_oemapp("oemapp") == 0) || (lynq_check_oemapp("oemapp2") == 0))
+ if((lynq_check_oemapp("oemapp") != 0) || (lynq_check_oemapp("oemapp2") != 0))
{
RLOGD("ENTER LYNQ_CHECK_OEMAPP\n");
system("echo mode 001 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio");
@@ -1859,7 +1941,6 @@
sleep(5);
reboot_device();
}
- */
if(lynq_up_info.ota_run != 0)