Merge "[Bugfix][T106BUG-114][Network] for lynq_set_state_buffer_valid_period_of_network, if type is 3 shoudl return -1, for lynq_get_state_buffer_valid_period_of_network, if type is 3 shoudl return 0 Only Configure: No, Affected branch: unknown, Affected module: unknown, Is it affected on both ZXIC and MTK: both, Self-test: Yes, Doc Update: No"
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc.conf b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc.conf
index e550600..333a235 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc.conf
+++ b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc.conf
@@ -221,6 +221,7 @@
gdb \
mobiletek-tester-rdit \
lynq-qser-voice-demo \
+ lynq-qser-fota-demo \
"
zxic_app_open += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', 'rild', '', d)}"
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-fota-demo/lynq-qser-fota-demo.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-fota-demo/lynq-qser-fota-demo.bb
new file mode 100644
index 0000000..ad8af28
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-fota-demo/lynq-qser-fota-demo.bb
@@ -0,0 +1,36 @@
+#inherit externalsrc package
+#inherit externalsrc package systemd
+DESCRIPTION = "lynq-qser-fota-demo"
+LICENSE = "CLOSED"
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1e07e8d88e26263e71d3a9e2aa9a2ff"
+DEPENDS += "liblynq-qser-fota"
+#inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/packages/apps/lynq-qser-fota-demo"
+FILESEXTRAPATHS_prepend :="${TOPDIR}/../src/lynq/packages/apps:"
+SRC_URI = " \
+ file://lynq-qser-fota-demo \
+ "
+
+SRC-DIR = "${S}/../lynq-qser-fota-demo"
+TARGET_CC_ARCH += "${LDFLAGS}"
+SYSTEMD_PACKAGES = "${PN}"
+#Parameters passed to do_compile()
+EXTRA_OEMAKE = "'TARGET_PLATFORM = ${TARGET_PLATFORM}'\"
+EXTRA_OEMAKE += "'MOBILETEK_RIL_CFG = ${MOBILETEK_RIL_CFG}'"
+
+EXTRA_OEMAKE += "'MOBILETEK_FOTA_CFG = ${MOBILETEK_FOTA_CFG}'"
+
+#INHIBIT_PACKAGE_STRIP = "1"
+do_compile () {
+ if test "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" || test "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4"; then
+ oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -mhard-float"
+ else
+ oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}"
+ fi
+}
+
+do_install() {
+ install -d ${D}${bindir}/
+ install -m 0755 ${SRC-DIR}/lynq-qser-fota-demo ${D}${bindir}/
+}
diff --git a/cap/zx297520v3/src/lynq/packages/apps/lynq-qser-fota-demo/lynq-qser-fota-demo.cpp b/cap/zx297520v3/src/lynq/packages/apps/lynq-qser-fota-demo/lynq-qser-fota-demo.cpp
new file mode 100755
index 0000000..63c9504
--- /dev/null
+++ b/cap/zx297520v3/src/lynq/packages/apps/lynq-qser-fota-demo/lynq-qser-fota-demo.cpp
@@ -0,0 +1,94 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <stdint.h>
+
+int (*lynq_get_upgrade_status)(void);
+int (*lynq_fota_set_addr_value)(char *value,int size);
+int (*lynq_fota_nrestart)(void);
+int (*lynq_rock_main)(int first_run);
+
+void *dlHandle_fota = NULL;
+
+int main(int argc,char *argv[])
+{
+ int ret = 0;
+ int reboot_flag;
+ char *value = argv[1];
+ printf("Enter main function\n");
+
+ const char *lynqLibPath_fota = "/lib/liblynq-fota.so";
+ dlHandle_fota = dlopen(lynqLibPath_fota, RTLD_NOW);
+ if (dlHandle_fota == NULL)
+ {
+ printf("dlopen dlHandle_fota failed: %s\n", dlerror());
+ return -1;
+ }
+
+ lynq_fota_set_addr_value = (int (*)(char *value,int size))dlsym(dlHandle_fota, "lynq_fota_set_addr_value");
+ if(lynq_fota_set_addr_value == NULL)
+ {
+ printf("lynq fota ser addr value is null\n");
+ return -1;
+ }
+
+ lynq_get_upgrade_status = (int (*)(void))dlsym(dlHandle_fota,"lynq_get_upgrade_status");
+ if(lynq_get_upgrade_status == NULL)
+ {
+ printf("lynq_get_upgrade_status is null\n");
+ return -1;
+ }
+ lynq_fota_nrestart = (int (*)())dlsym(dlHandle_fota,"lynq_fota_nrestart");
+ if(lynq_fota_nrestart == NULL)
+ {
+ printf("lynq_fota_nrestart is null\n");
+ return -1;
+ }
+ lynq_rock_main = (int (*)(int first_run))dlsym(dlHandle_fota,"lynq_rock_main");
+ if(lynq_rock_main == NULL)
+ {
+ printf("lynq_rock_main is null\n");
+ return -1;
+ }
+
+ ret = lynq_fota_set_addr_value(value,(int )strlen(value));
+ if(ret != 0)
+ {
+ printf("set upgrade package addr failed\n");
+ return -1;
+ }
+
+ printf("Please chose reboot or not when upgrade done 1: reboot 0: not reboot\n");
+ scanf("%d",&reboot_flag);
+
+ switch(reboot_flag)
+ {
+ case 0:
+ printf("Not reboot when upgrade done!!!\n ");
+ ret = lynq_fota_nrestart();
+ printf("upgrade result is %d\n",ret);
+ ret = lynq_get_upgrade_status();
+ printf("get upgrade status result is %d\n",ret);
+ break;
+
+ case 1:
+ printf("Will reboot when upgrade done!!!\n ");
+ ret = lynq_rock_main(1);
+ printf("upgrade result is %d\n",ret);
+ ret = lynq_get_upgrade_status();
+ printf("get upgrade status result is %d\n",ret);
+ break;
+
+ default:
+ printf("please input right flag 1 or 0\n");
+ break;
+
+ }
+
+ return 0;
+
+}
+
diff --git a/cap/zx297520v3/src/lynq/packages/apps/lynq-qser-fota-demo/makefile b/cap/zx297520v3/src/lynq/packages/apps/lynq-qser-fota-demo/makefile
new file mode 100755
index 0000000..7a6d23f
--- /dev/null
+++ b/cap/zx297520v3/src/lynq/packages/apps/lynq-qser-fota-demo/makefile
@@ -0,0 +1,57 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+ -std=gnu++14 \
+ -g -Os \
+ -flto \
+ -fPIC \
+
+
+
+ifeq ($(strip $(TARGET_PLATFORM)), T106)
+LOCAL_CFLAGS += -DBINDER_IPC_32BIT=1 -DHAVE_ENDIAN_H -DHAVE_PTHREADS -DHAVE_SYS_UIO_H -DHAVE_POSIX_FILEMAP -DHAVE_STRLCPY -DHAVE_PRCTL -DHAVE_MEMSET16 -DHAVE_MEMSET32 -DANDROID_SMP=0
+endif
+
+LOCAL_CFLAGS += -Werror=format-security
+
+$(warning ################# rock ROOT: $(ROOT),includedir:$(includedir),)
+
+LOCAL_PATH = .
+
+LOCAL_C_INCLUDES = \
+ -I. \
+ -I$(LOCAL_PATH)/include \
+ -I$(ROOT)$(includedir)/logger \
+ -I$(ROOT)$(includedir)/liblog \
+ -I$(ROOT)$(includedir)/glib-2.0 \
+ -I$(ROOT)$(libdir)/glib-2.0/include \
+ -I$(ROOT)$(includedir) \
+
+
+
+LOCAL_LIBS := \
+ -L. \
+ -ldl \
+ -lstdc++ \
+
+SOURCES = lynq-qser-fota-demo.cpp
+
+EXECUTABLE = lynq-qser-fota-demo
+
+OBJECTS=$(SOURCES:.cpp=.o)
+
+OBJECTS_TOOL=$(SOURCES_TOOL:.cpp=.o)
+all: $(EXECUTABLE)
+
+$(EXECUTABLE): $(OBJECTS)
+ $(CXX) $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.cpp
+ $(CXX) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
+
+.PHONY: clean
+clean:
+ $(RM) $(OBJECTS) $(EXECUTABLE)
+ $(RM) $(OBJECTS_TOOL) $(EXECUTABLE)
+