Merge "[Feature][ZXW-180]Add API to open sample rate channel and other parameters"
diff --git a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin
index 22d545d..48a44e2 100755
--- a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin
+++ b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin
index 7c010ff..1d21a9a 100755
--- a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin
+++ b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin
index 8ce0321..1c458bf 100755
--- a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin
+++ b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin
Binary files differ
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
index b186409..2b189ba 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
+++ b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
@@ -60,7 +60,7 @@
#rootfs文件系统squashfs参数配置,压缩方式和块大小可以更改
#squashfs_xz squashfs_zstd
-DISTRO_FEATURES_append = " squashfs_xz "
+DISTRO_FEATURES_append = " squashfs_zstd "
ROOTFS_SQUASHFS_ARGS = "-nopad -noappend -root-owned -b 256k -p '/dev d 755 0 0' -p '/dev/console c 600 0 0 5 1' -processors 1"
ROOTFS_SQUASHFS_ARGS += " ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "-xattrs", "", d)} "
ROOTFS_SQUASHFS_ARGS += "${@bb.utils.contains("DISTRO_FEATURES", "squashfs_zstd", " -comp zstd ","", d)}"
@@ -263,6 +263,7 @@
msm-svr \
player-demo \
lynq-ril-service \
+ lynq-sdk-ready \
lynq-led-demo \
lynq-led-sev \
uci \
@@ -295,6 +296,7 @@
#开源应用及库
meta_app_open += "\
dropbear \
+ dbus \
e2fsprogs \
iptables \
curl \
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/zcatlog_config.sh b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/zcatlog_config.sh
index b6946d5..cebf7b0 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/zcatlog_config.sh
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/zcatlog_config.sh
@@ -1,7 +1,9 @@
#!/bin/sh
if [ ! -d "/mnt/userdata/config/" ];then
- cp -R /etc/config /mnt/userdata/
+ mkdir config
+ cp -R /etc/config/lynq_uci /mnt/userdata/config/
+ ln -s /etc/config/lynq_uci_ro /mnt/userdata/config/
else
echo "uci config has exist"
fi
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
index 0b1dd7d..3982cbc 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
@@ -23,8 +23,8 @@
int (*qser_nw_get_signal_strength_p)(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info);
int (*qser_nw_set_oos_config_p)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);
int (*qser_nw_get_oos_config_p)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);
-
-
+int (*qser_nw_set_rf_mode_p) (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T rf_mode);
+int (*qser_nw_get_rf_mode_p) (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T* rf_mode);
int getFunc()
{
@@ -46,10 +46,12 @@
qser_nw_add_rx_msg_handler_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr,void* contextPtr))dlsym(handle_network,"qser_nw_add_rx_msg_handler");
qser_nw_get_oos_config_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_oos_config");
qser_nw_set_oos_config_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_set_oos_config");
-
+ qser_nw_set_rf_mode_p = (int (*)(nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T rf_mode))dlsym(handle_network,"qser_nw_set_rf_mode");
+ qser_nw_get_rf_mode_p = (int (*)(nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T* rf_mode))dlsym(handle_network,"qser_nw_get_rf_mode");
if(qser_nw_client_deinit_p==NULL || qser_nw_client_init_p==NULL || qser_nw_set_config_p ==NULL ||
- qser_nw_get_operator_name_p == NULL || qser_nw_get_reg_status_p ==NULL || qser_nw_add_rx_msg_handler_p==NULL)
+ qser_nw_get_operator_name_p == NULL || qser_nw_get_reg_status_p ==NULL || qser_nw_add_rx_msg_handler_p==NULL ||
+ qser_nw_set_rf_mode_p == NULL || qser_nw_get_rf_mode_p == NULL || qser_nw_get_oos_config_p == NULL || qser_nw_set_oos_config_p == NULL)
{
printf("get func pointer null");
exit(EXIT_FAILURE);
@@ -87,7 +89,9 @@
{5, "qser_nw_get_signal_strength"},
{6, "qser_nw_set_oos_config"},
{7, "qser_nw_get_oos_config"},
- {8, "qser_nw_client_deinit"},
+ {8, "qser_nw_set_rf_mode"},
+ {9, "qser_nw_get_rf_mode"},
+ {10, "qser_nw_client_deinit"},
{-1, "quit"}
@@ -435,7 +439,7 @@
break;
}
- case 8://"qser_nw_client_deinit"
+ case 10://"qser_nw_client_deinit"
{
ret = qser_nw_client_deinit_p(h_nw);
printf("qser_nw_client_deinit ret = %d\n", ret);
@@ -556,6 +560,22 @@
}
break;
}
+ case 9://"qser_nw_get_rf_mode"
+ {
+ E_QSER_NW_RF_MODE_TYPE_T rf_mode;
+ ret = qser_nw_get_rf_mode_p(h_nw, &rf_mode);
+ printf("qser_nw_get_rf_mode ret = %d, rf mode=%d\n", ret, rf_mode);
+ break;
+ }
+ case 8://"qser_nw_set_rf_mode"
+ {
+ E_QSER_NW_RF_MODE_TYPE_T rf_mode;
+ printf("please input you want set rf mode (0: cfun 0; 1: cfun 1; 4: flight mode \n");
+ scanf("%d", &rf_mode);
+ ret = qser_nw_set_rf_mode_p(h_nw, rf_mode);
+ printf("qser_nw_set_rf_mode %d ret = %dn",rf_mode, ret);
+ break;
+ }
default:
{
show_group_help(&t_nw_test);
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq_qser_network.h b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq_qser_network.h
index 4083e13..bf7781a 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq_qser_network.h
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq_qser_network.h
@@ -366,6 +366,12 @@
QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
}QSER_NW_SINGNAL_EVENT_IND_T;
+typedef enum
+{
+ E_QSER_NW_RF_MODE_CFUN_0 = 0, /**< CFUN 0. */
+ E_QSER_NW_RF_MODE_CFUN_1 = 1, /**< CFUN 1. */
+ E_QSER_NW_RF_MODE_FLIGHT = 4, /**< Flight Mode, CFUN 4. */
+}E_QSER_NW_RF_MODE_TYPE_T;
int qser_nw_client_init(nw_client_handle_type *ph_nw);
@@ -420,6 +426,19 @@
void* contextPtr
);
+int qser_nw_set_rf_mode
+(
+ nw_client_handle_type h_nw,
+ E_QSER_NW_RF_MODE_TYPE_T rf_mode
+);
+
+int qser_nw_get_rf_mode
+(
+ nw_client_handle_type h_nw,
+ E_QSER_NW_RF_MODE_TYPE_T *rf_mode
+);
+
+
#ifdef __cplusplus
}
#endif
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-ril-service/lynq-ril-service.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-ril-service/lynq-ril-service.bb
index 641ebb7..1425ad8 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-ril-service/lynq-ril-service.bb
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-ril-service/lynq-ril-service.bb
@@ -3,7 +3,8 @@
DESCRIPTION = "lynq ril service"
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b1e07e8d88e26263e71d3a9e2aa9a2ff"
-DEPENDS += "${@bb.utils.contains('TARGET_PLATFORM', 'mt2735', 'audio-mixer-ctrl streamer1.0', '', d)} libapn libpal libvendor-ril libbinder glib-2.0 dbus liblynq-log liblynq-uci liblynq-shm libmedia"
+DEPENDS += "${@bb.utils.contains('TARGET_PLATFORM', 'mt2735', 'audio-mixer-ctrl streamer1.0', '', d)} libapn libpal libril libvendor-ril libbinder glib-2.0 dbus liblynq-log liblynq-uci liblynq-shm libmedia libsd-daemon"
+RDEPENDS_${PN} = "libbinder libril libsd-daemon"
#inherit workonsrc
WORKONSRC = "${TOPDIR}/../src/lynq/framework/lynq-ril-service/src"
FILESEXTRAPATHS_prepend :="${TOPDIR}/../src/lynq/framework/:"
@@ -52,7 +53,7 @@
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${SRC-DIR}/lynq-ril-service.sh ${D}${sysconfdir}/init.d/lynq-ril-service.sh
install -d ${D}${sysconfdir}/rcS.d
- ln -s ../init.d/lynq-ril-service.sh ${D}${sysconfdir}/rcS.d/S82lynq-ril-service
+ ln -s ../init.d/lynq-ril-service.sh ${D}${sysconfdir}/rcS.d/S21lynq-ril-service
fi
# install -d ${D}${includedir}
# install ${S}/atci/ATCI.h ${D}${includedir}
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-sdk-ready/lynq-sdk-ready.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-sdk-ready/lynq-sdk-ready.bb
new file mode 100755
index 0000000..ca0aaf7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-sdk-ready/lynq-sdk-ready.bb
@@ -0,0 +1,49 @@
+#inherit externalsrc package
+
+DESCRIPTION = "lynq sdk-ready sev"
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1e07e8d88e26263e71d3a9e2aa9a2ff"
+DEPENDS += "liblynq-uci liblynq-log "
+#inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/framework/lynq-sdk-ready"
+FILESEXTRAPATHS_prepend :="${TOPDIR}/../src/lynq/framework/:"
+SRC_URI = " \
+ file://lynq-sdk-ready \
+ "
+
+SRC-DIR = "${S}/../lynq-sdk-ready"
+TARGET_CC_ARCH += "${LDFLAGS}"
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "lynq_sdk_ready.service"
+FILES_${PN} += "${systemd_unitdir}/system/lynq_sdk_ready.service"
+FILES_${PN} += "/system/etc/tele/ring ${bindir}"
+#Parameters passed to do_compile()
+EXTRA_OEMAKE = "'RAT_CONFIG_C2K_SUPPORT = ${RAT_CONFIG_C2K_SUPPORT}'\
+ 'MTK_MULTI_SIM_SUPPORT = ${MTK_MULTI_SIM_SUPPORT}'\
+ 'TARGET_PLATFORM = ${TARGET_PLATFORM}'\
+ 'MTK_LED_SUPPORT = ${MTK_LED_SUPPORT}'\
+ 'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+
+#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-sdk-ready ${D}${bindir}/
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${B}/lynq_sdk_ready.service ${D}${systemd_unitdir}/system
+ else
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${SRC-DIR}/lynq-sdk-ready.sh ${D}${sysconfdir}/init.d/lynq-sdk-ready.sh
+ install -d ${D}${sysconfdir}/rcS.d
+ ln -s ../init.d/lynq-sdk-ready.sh ${D}${sysconfdir}/rcS.d/S23lynq-sdk-ready
+ fi
+}
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq-ril-service.sh b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq-ril-service.sh
index 267f42b..4514ab0 100644
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq-ril-service.sh
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq-ril-service.sh
@@ -11,7 +11,7 @@
start() {
echo -n "Starting $DAEMON... "
- start-stop-daemon --no-close -S -b -m -p $PIDFILE -x $EXEC -- $EXEC_ARGS
+ start-stop-daemon --notify-await --no-close -S -b -m -p $PIDFILE -x $EXEC -- $EXEC_ARGS
[ $? -eq 0 ] && echo "OK" || echo "ERROR"
}
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/main.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/main.cpp
index b946904..d5aa454 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/main.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/main.cpp
@@ -39,6 +39,14 @@
#include <signal.h>
#include "common.h"
#include "lynq_shm.h"
+#include "sd-daemon.h"
+/*
+#ifdef RIL_TIME_CB
+extern "C" {
+ #include "telephony/ril.h"
+}
+#endif
+*/
extern "C" void RIL_register (const RIL_RadioFunctions *callbacks);
@@ -54,6 +62,15 @@
size_t datalen);
#endif
+/*
+#if 1
+ #ifdef RIL_TIME_CB
+extern "C" void RIL_requestTimedCallback (RIL_TimedCallback callback,
+ void *param, const struct timeval *relativeTime);
+#endif
+#endif
+*/
+
#ifdef RIL_TIME_CB
void RIL_requestTimedCallback (RIL_TimedCallback callback,void *param, const struct timeval *relativeTime)
{
@@ -201,6 +218,7 @@
RLOGD("start rilInit");
funcs = rilInit(&s_rilEnv, 0, NULL);;
RLOGD("start RIL_register");
+ sd_notify(0, "READY=1");
RIL_register(funcs);
android::startGdbusLoop();
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/makefile b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/makefile
index 746c615..11e2e1e 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/makefile
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/makefile
@@ -144,6 +144,8 @@
-llynq-uci \
-llynq-shm \
-lmedia \
+ -lril \
+ -lsd-daemon \
ifeq ($(strip $(TARGET_PLATFORM)), mt2735)
LOCAL_LIBS += -luciwrapper -luciwrapper -lgstbase-1.0 -llynq-protcl -llynq-thermal -llynq-systime -lnandapi -ldtmf -lasound -lgstreamer-1.0 -lmtk_audio_mixer_ctrl -lpower
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq-sdk-ready.sh b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq-sdk-ready.sh
new file mode 100755
index 0000000..382e072
--- /dev/null
+++ b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq-sdk-ready.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# Run the daemon
+#
+
+DAEMON="lynq-sdk-ready-service"
+PIDFILE="/var/run/$DAEMON.pid"
+EXEC="/usr/bin/lynq-sdk-ready"
+EXEC_ARGS=""
+
+
+start() {
+ echo -n "Starting $DAEMON... "
+ start-stop-daemon --no-close -S -b -m -p $PIDFILE -x $EXEC -- $EXEC_ARGS
+ [ $? -eq 0 ] && echo "OK" || echo "ERROR"
+}
+
+stop() {
+ echo -n "Stopping $DAEMON... "
+ start-stop-daemon -K -p $PIDFILE
+ [ $? -eq 0 ] && echo "OK" || echo "ERROR"
+}
+
+restart() {
+ stop
+ start
+}
+
+case "$1" in
+ start|stop|restart)
+ "$1"
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
+
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_sdk_ready.service b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_sdk_ready.service
new file mode 100755
index 0000000..5132c86
--- /dev/null
+++ b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_sdk_ready.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=lynq sdk ready
+After=lynq_ril_service.service
+
+[Service]
+StandardOutput=kmsg+console
+Type=simple
+RemainAfterExit=no
+ExecStart=/usr/bin/lynq-sdk-ready
+Restart=always
+User=root
+Group=root
+
+[Install]
+Alias=rilsvc
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_timer.cpp b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_timer.cpp
new file mode 100755
index 0000000..b9fba74
--- /dev/null
+++ b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_timer.cpp
@@ -0,0 +1,668 @@
+#include <stdio.h>
+#include <sys/types.h>
+#include <arpa/inet.h>
+#include <string.h>
+#include <unistd.h>
+#include <binder/Parcel.h>
+#include <log/log.h>
+#include <cutils/jstring.h>
+#include <pthread.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <sys/socket.h>
+
+#include <errno.h>
+#include "lynq_timer.h"
+#include <include/lynq_uci.h>
+
+#define LOG_TAG "LYNQ_SDK"
+#define DEST_PORT 8088
+#define DSET_IP_ADDRESS "127.0.0.1"
+#define RIL_REQUEST_DEVICE_IDENTITY 98
+#define MAX_LEN 1024
+#define TIMER 30
+
+
+#define LOG_UCI_FILE "lynq_uci"
+#define LOG_UCI_MODULE "debug_mode"
+
+using ::android::Parcel;
+
+static pthread_mutex_t g_lynq_sim_sendto_mutex;
+
+typedef struct{
+ int uToken;
+ int request;
+ int paramLen;
+ char param[MAX_LEN];
+}lynq_client_t;
+
+int num = 0;
+
+int max_num;
+static int get_md_sta(void)
+{
+ FILE *fp;
+ char buffer[64]={};
+ fp = popen("cat /sys/kernel/ccci/boot","r");
+ if(fp == NULL)
+ {
+ RLOGD("function %s fp is null\n", __FUNCTION__);
+ return 0;
+ }
+ fgets(buffer,sizeof(buffer),fp);
+ if(!strlen(buffer))
+ {
+ RLOGD("function %s line %d\n", __FUNCTION__, __LINE__);
+ pclose(fp);
+ return 0;
+ }
+ if(buffer[4] == '4')
+ {
+ pclose(fp);
+ return 1;
+ }
+ RLOGD("function %s line %d\n", __FUNCTION__, __LINE__);
+ pclose(fp);
+ return 0;
+}
+
+static int t800_check_service(const char *service)
+{
+ FILE *fp;
+ char buffer[1024]={};
+ if(!strcmp(service, "/usr/sbin/mtkfusionrild"))
+ {
+ fp = popen("ps -ef|grep rild","r");
+ }
+ else if(!strcmp(service, "lynq-ril-service"))
+ {
+ fp = popen("ps -ef|grep ril-service","r");
+ }
+ if(fp == NULL)
+ {
+ RLOGD("function %s fp is null\n", __FUNCTION__);
+ return 0;
+ }
+ while(NULL != fgets(buffer,sizeof(buffer),fp))
+ {
+ if(strstr(buffer,service))
+ {
+ pclose(fp);
+ RLOGD("check_service 1\n");
+ return 1;
+ }
+ }
+ RLOGD("check_service 0\n");
+ pclose(fp);
+ return 0;
+}
+
+
+static int t106_check_service(const char *service)
+{
+ FILE *fp;
+ char buffer[1024]={};
+
+ fp = popen("ps -ef|grep ril-service","r");
+ if(fp == NULL)
+ {
+ ALOGD("ril-service fp is null\n");
+ return -1;
+ }
+ while(NULL != fgets(buffer,sizeof(buffer),fp))
+ {
+ if(strstr(buffer,service))
+ {
+ pclose(fp);
+ ALOGD("check_service right\n");
+ return 1;
+ }
+ }
+ ALOGD("check_service -1\n");
+ pclose(fp);
+ return 0;
+}
+
+/**
+ * @brief 30s request imei
+ *
+ * @param arg
+ * @return void*
+ */
+void * timer_request_imei(void * arg)
+{
+ int sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
+ if (-1 == sock_fd)
+ {
+ RLOGD("__FUNCTION__ %s create sock_fd failed %s\n", __FUNCTION__, strerror(errno));
+ /*set uci*/
+ /*socket abnormal*/
+ system("uci set lynq_uci.sdk_ready='3'");
+ /*set uci*/
+ return NULL;
+ }
+ struct sockaddr_in liblynq_data_socket;
+ bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+ //set this lib socket config
+ liblynq_data_socket.sin_family = AF_INET;
+ liblynq_data_socket.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
+ int ret = bind(sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+ if (-1 == ret)
+ {
+ RLOGE("liblynq_data_socket bind fail,errno:%d",errno);
+ return NULL;
+ }
+
+ struct timeval timeOut;
+ timeOut.tv_sec = 3;//timeout time 3s
+ timeOut.tv_usec = 0;
+ if (setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0)
+ {
+ RLOGD("__FUNCTION__ %s time out setting failed %s\n", __FUNCTION__, strerror(errno));
+ /*set uci*/
+ /*socket abnormal*/
+ system("uci set lynq_uci.sdk_ready='3'");
+ /*set uci*/
+ return NULL;
+ }
+ struct sockaddr_in addr_serv;
+ memset(&addr_serv, 0, sizeof(addr_serv));
+ addr_serv.sin_family = AF_INET;
+ addr_serv.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
+ addr_serv.sin_port = htons(DEST_PORT);
+ int len_addr_serv = sizeof(addr_serv);
+ int send_num = -1;
+ int recv_num = -1;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int token = -1;
+ int res_error = -1;
+ lynq_client_t client_t;
+ char res_data[MAX_LEN] = {0};
+ client_t.request = RIL_REQUEST_DEVICE_IDENTITY;
+ client_t.paramLen = 0;
+ client_t.uToken = 999;
+ memset(client_t.param, 0, sizeof(client_t.param));
+ while (1)
+ {
+ bzero(res_data, MAX_LEN);
+ pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ RLOGD("send_num %d\n", send_num);
+ if(send_num == 0)
+ {
+ RLOGD("__FUNCTION__ %s Close to end %s\n", __FUNCTION__, strerror(errno));
+ //unknow
+ system("uci set lynq_uci.sdk_ready='4'");
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ continue;
+ }
+ if(send_num < 0)
+ {
+ RLOGD("__FUNCTION__ %s sendto error %s\n", __FUNCTION__, strerror(errno));
+ //unknow
+ system("uci set lynq_uci.sdk_ready='4'");
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ continue;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&
+len_addr_serv);
+ RLOGD("recv_num %d\n", recv_num);
+ if(recv_num == 0)
+ {
+ RLOGD("__FUNCTION__ %s Close to end\n", __FUNCTION__);
+ //unknow
+ system("uci set lynq_uci.sdk_ready='4'");
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ continue;;
+ }
+ if(recv_num == -1 && errno == EAGAIN)
+ {
+ RLOGD("__FUNCTION__ %srecvfrom fail because timeout\n", __FUNCTION__);
+ /*set uci*/
+#ifdef MOBILETEK_TARGET_PLATFORM_T800
+ if(!get_md_sta())
+ {
+ system("uci set lynq_uci.sdk_ready='1'");
+ }
+ else
+ {
+ if(t800_check_service("/usr/sbin/mtkfusionrild"))//rild work
+ {
+ if(!t800_check_service("lynq-ril-service"))//not find,must be socket error
+ {
+ system("uci set lynq_uci.sdk_ready='3'");
+ }
+ else
+ {
+ //unknow error
+ system("uci set lynq_uci.sdk_ready='4'");
+ }
+
+ }
+ else//rild no work
+ {
+ //unknow
+ system("uci set lynq_uci.sdk_ready='4'");
+ }
+ }
+#endif
+
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+ if(!t106_check_service("lynq-ril-service"))//not find,must be socket error
+ {
+ //unknow error
+ system("uci set lynq_uci.sdk_ready='4'");
+ }
+#endif
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ continue;;
+ }
+ if(recv_num < 0)
+ {
+ RLOGD("__FUNCTION__ %srecvfrom fail %s\n", __FUNCTION__, strerror(errno));
+ //unknow
+ system("uci set lynq_uci.sdk_ready='4'");
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ continue;;
+ }
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&token);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&res_error);
+ }
+ /*judge the res_error*/
+ if(!res_error)
+ {
+ system("uci set lynq_uci.sdk_ready='0'");
+ }
+ else
+ {
+ system("uci set lynq_uci.sdk_ready='2'"); //Md configurations are inconsistent with AP configurations
+ }
+ RLOGD("__FUNCTION__ %s res_error %d\n", __FUNCTION__, res_error);
+ /*judge the res_error*/
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ sleep(TIMER);
+ }
+ return NULL;
+}
+
+
+
+void delete_enter(char data[])
+{
+ char *find = strchr(data, '\n');
+ if(find)
+ *find = '\0';
+ return ;
+}
+
+
+void *check(void * arg)
+{
+
+ char pid[200][8];
+ char ffd[200][4];
+ char buf[128];
+ char check_time[4];
+ char timebuf[32];
+ int num = 1;
+ int i=0;
+ int j;
+ FILE *fp,*fp_1;
+ int ret;
+
+ ALOGD("check cpu/pid/interrupts/fd!!!\n");
+ system("mkdir /var/log/check_file");
+ system("touch /var/log/check_time");
+ fp_1 = popen("cat /var/log/check_time","r");
+ if(fgets(check_time, 4, fp_1) != NULL)
+ {
+ num = atoi(check_time);
+ }
+ pclose(fp_1);
+ while(1)
+ {
+ i = 0;
+ system("date >>/var/log/check_file/cpu_moniter.txt");
+ ret = system("top -b |head -n 25 >>/var/log/check_file/cpu_moniter.txt");
+ ALOGD("cpu ret %d", ret);
+ system("date >>/var/log/check_file/inter_moniter.txt");
+ ret = system("cat /proc/interrupts |grep -v \": 0 0\" >>/var/log/check_file/inter_moniter.txt");
+ ALOGD("interrupts ret %d", ret);
+
+ system("date >>/var/log/check_file/pid_moniter.txt");
+ ret = system("ps -e \"%p %a\" | grep -v \"\\[\" >>/var/log/check_file/pid_moniter.txt");
+ ALOGD("pid ret %d", ret);
+
+ system("date >>/var/log/check_file/meminfo_moniter.txt");
+ ret = system("cat /proc/meminfo >>/var/log/check_file/meminfo_moniter.txt");
+ ALOGD("meminfo ret %d", ret);
+
+ system("date >>/var/log/check_file/buddyinfo_moniter.txt");
+ ret = system("cat /proc/buddyinfo >>/var/log/check_file/buddyinfo_moniter.txt");
+ ALOGD("buddyinfo ret %d", ret);
+#ifdef MOBILETEK_TARGET_PLATFORM_T800
+ system("date >>/var/log/check_file/ps_auxw_moniter.txt");
+ ret = system("ps -auxw|grep -v \"0.0 0.0\"|grep -v \"0.1 0.0\"|grep -v \"0.0 0.1\" >>/var/log/check_file/ps_auxw_moniter.txt");
+ ALOGD("ps_auxw ret %d", ret);
+#endif
+ system("date >>/var/log/check_file/cur_freq_moniter.txt");
+ ret = system("cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq >>/var/log/check_file/cur_freq_moniter.txt");
+ ALOGD("cur_freq ret %d", ret);
+
+ system("date >>/var/log/check_file/available_frequencies_moniter.txt");
+ ret = system("cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies >>/var/log/check_file/available_frequencies_moniter.txt");
+ ALOGD("available_frequencies ret %d", ret);
+
+ system("date >>/var/log/check_file/fd_moniter.txt");
+ fp = popen("ps -e \"%p %a\" | grep -v \"\\[\"|awk '{print $1}'","r");
+ while(fgets(pid[i], 8, fp) != NULL)
+ {
+ ALOGD("pid[%d]:%s", i, pid[i]);
+ delete_enter(pid[i]);
+ i++;
+ }
+ pclose(fp);
+
+ for(j=1;j<i;j++)
+ {
+ sprintf(buf, "ls /proc/%s/fd | wc -l", pid[j]);
+ fp = popen(buf, "r");
+ fgets(ffd[j], 4, fp);
+ sprintf(buf,"echo \"pid: %s, fd_num: %s\" >>/var/log/check_file/fd_moniter.txt",pid[j], ffd[j]);
+ ALOGD("%s",buf);
+ system(buf);
+ pclose(fp);
+ }
+
+ if(num > max_num)
+ {
+ system("cp /var/log/check_file/cpu_moniter.txt /var/log/check_file/cpu_moniter_1.txt");
+ system("cp /var/log/check_file/inter_moniter.txt /var/log/check_file/inter_moniter_1.txt");
+ system("cp /var/log/check_file/pid_moniter.txt /var/log/check_file/pid_moniter_1.txt");
+ system("cp /var/log/check_file/fd_moniter.txt /var/log/check_file/fd_moniter_1.txt");
+ system("cp /var/log/check_file/meminfo_moniter.txt /var/log/check_file/meminfo_moniter_1.txt");
+ system("cp /var/log/check_file/buddyinfo_moniter.txt /var/log/check_file/buddyinfo_moniter_1.txt");
+#ifdef MOBILETEK_TARGET_PLATFORM_T800
+ system("cp /var/log/check_file/ps_auxw_moniter.txt /var/log/check_file/ps_auxw_moniter_1.txt");
+#endif
+ system("cp /var/log/check_file/cur_freq_moniter.txt /var/log/check_file/cur_freq_moniter_1.txt");
+ system("cp /var/log/check_file/available_frequencies_moniter.txt /var/log/check_file/available_frequencies_moniter_1.txt");
+
+
+ system("rm -rf /var/log/check_file/cpu_moniter.txt");
+ system("rm -rf /var/log/check_file/inter_moniter.txt");
+ system("rm -rf /var/log/check_file/pid_moniter.txt");
+ system("rm -rf /var/log/check_file/fd_moniter.txt");
+ system("rm -rf /var/log/check_file/meminfo_moniter.txt");
+ system("rm -rf /var/log/check_file/buddyinfo_moniter.txt");
+#ifdef MOBILETEK_TARGET_PLATFORM_T800
+ system("rm -rf /var/log/check_file/ps_auxw_moniter.txt");
+#endif
+ system("rm -rf /var/log/check_file/cur_freq_moniter.txt");
+ system("rm -rf /var/log/check_file/available_frequencies_moniter.txt");
+
+ num = 0;
+ }
+ num++;
+ sprintf(timebuf, "echo \"%d\" >/var/log/check_time", num);
+ ret = system(timebuf);
+ sleep(300);
+ }
+ return NULL;
+
+}
+
+
+void *t800_check_uci(void * arg)
+{
+ int ret[6];
+ int result = 0;
+ int flag = 0;
+
+ char uci_0[]="/etc/config/lynq_uci";
+ char uci_1[]="/etc/config/lynq_uci_ro";
+ char uci_2[]="/etc/config/mdlog";
+ char uci_3[]="/etc/config/radio_property";
+ char uci_4[]="/etc/config/service";
+ char uci_5[]="/etc/config/usb";
+ RLOGD("start check uci\n");
+ while(num++ < 4)
+ {
+ RLOGD("@@@@@@@num=%d\n", num);
+ flag = 0;
+ ret[0] = system("uci show | grep \"lynq_uci.lynq_ril\" > /dev/null");
+ if(ret[0] != 0)
+ {
+ RLOGD("lynq_uci unload\n");
+ flag = 1;
+ }
+
+ ret[1] = system("uci show | grep \"^lynq_uci_ro\.\" > /dev/null");
+ if(ret[1] != 0)
+ {
+ RLOGD("lynq_uci_ro unload\n");
+ flag = 1;
+ }
+
+ ret[2] = system("uci show | grep \"^mdlog\.\"");
+ if(ret[2] != 0)
+ {
+ RLOGD("mdlog unload\n");
+ flag = 1;
+ }
+
+ ret[3] = system("uci show | grep \"^radio_property\.\" > /dev/null");
+ if(ret[3] != 0)
+ {
+ RLOGD("radio_property unload\n");
+ flag = 1;
+ }
+
+ ret[4] = system("uci show | grep \"^service\.\" > /dev/null");
+ if(ret[4] != 0)
+ {
+ RLOGD("service unload\n");
+ flag = 1;
+ }
+
+ ret[5] = system("uci show | grep \"^usb\.\" > /dev/null");
+ if(ret[5] != 0)
+ {
+ RLOGD("usb unload\n");
+ flag = 1;
+ }
+
+ RLOGD("flag=%d\n",flag);
+ if(flag != 0)
+ {
+ RLOGD("config reload\n");
+ result = chdir("/data_backup/");
+ result =system("tar -zxvf userdata.tar.gz -C /STATE/ >/dev/null");
+ if(result!= 0)
+ {
+ RLOGD("cp config fail\n");
+ }
+ if(ret[0] != 0)
+ {
+ lynq_load_config(uci_0);
+ RLOGD("reload lynq_uci\n");
+ system("systemctl start autosuspend");
+ }
+ if(ret[1] != 0)
+ {
+ lynq_load_config(uci_1);
+ RLOGD("reload lynq_uci_ro\n");
+ }
+ if(ret[2] != 0)
+ {
+ lynq_load_config(uci_2);
+ RLOGD("reload mdlog\n");
+ }
+ if(ret[3] != 0)
+ {
+ lynq_load_config(uci_3);
+ RLOGD("reload radio_property\n");
+ system("systemctl restart mtkfusionrild");
+ }
+ if(ret[4] != 0)
+ {
+ lynq_load_config(uci_4);
+ RLOGD("reload service\n");
+ }
+ if(ret[5] != 0)
+ {
+ lynq_load_config(uci_5);
+ RLOGD("reload usb\n");
+ }
+ }
+ else
+ {
+ RLOGD("uci check success, exit check!\n");
+ break;
+ }
+ sleep(2);
+ }
+ return NULL;
+}
+
+
+void *t106_check_uci(void * arg)
+{
+ int ret[6];
+ int result = 0;
+ int flag = 0;
+
+ char uci_0[]="/etc/config/lynq_uci";
+ char uci_1[]="/etc/config/lynq_uci_ro";
+
+ ALOGD("start check uci\n");
+ while(num++ < 4)
+ {
+ ALOGD("@@@@@@@num=%d\n", num);
+ flag = 0;
+ ret[0] = system("uci show | grep \"lynq_uci.lynq_ril\"");
+ if(ret[0] != 0)
+ {
+ ALOGD("lynq_uci unload\n");
+ flag = 1;
+ }
+
+ ret[1] = system("uci show | grep \"^lynq_uci_ro\.\"");
+ if(ret[1] != 0)
+ {
+ ALOGD("lynq_uci_ro unload\n");
+ flag = 1;
+ }
+
+ ALOGD("flag=%d\n",flag);
+ if(flag != 0)
+ {
+ ALOGD("config reload\n");
+ result =system("cp -R /etc/config/ /mnt/userdata/");
+ if(result!= 0)
+ {
+ ALOGD("cp config fail\n");
+ }
+ if(ret[0] != 0)
+ {
+ ALOGD("config reload\n");
+ result =system("cp -R /etc/config/lynq_uci /mnt/userdata/config/");
+ if(result!= 0)
+ {
+ ALOGD("cp config fail\n");
+ }
+ lynq_load_config(uci_0);
+ ALOGD("reload lynq_uci\n");
+ system("./etc/init.d/lynq-autosuspend.sh restart");
+ }
+ if(ret[1] != 0)
+ {
+ ALOGD("config reload\n");
+ result =system("ln -s /etc/config/lynq_uci_ro /mnt/userdata/config/");
+ if(result!= 0)
+ {
+ ALOGD("cp config fail\n");
+ }
+ lynq_load_config(uci_1);
+ ALOGD("reload lynq_uci_ro\n");
+ }
+ }
+ else
+ {
+ ALOGD("uci check success, exit check!\n");
+ break;
+ }
+ sleep(2);
+ }
+ return NULL;
+}
+
+
+
+void start_timer_request(void)
+{
+ pthread_t thid,thid_1,thid_2;
+ pthread_attr_t a;
+ pthread_attr_init(&a);
+ pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);
+
+ char tmp[20];
+ int debug_mode;
+ int ret;
+
+ ALOGD("start lynq-sdk-ready\n");
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+ ret = pthread_create(&thid_2,NULL,t106_check_uci,NULL);
+#endif
+
+#ifdef MOBILETEK_TARGET_PLATFORM_T800
+ ret = pthread_create(&thid_2,NULL,t800_check_uci,NULL);
+#endif
+ if(ret != 0){
+ ALOGD("pthread_create error!!!");
+ return;
+ }
+ pthread_detach(thid_2);
+
+ ret = pthread_create(&thid, &a, timer_request_imei, NULL);
+ if(ret != 0){
+ ALOGD("pthread_create error!!!");
+ return;
+ }
+
+ ret = lynq_get_value(LOG_UCI_FILE, LOG_UCI_MODULE, "check_file_size", tmp);
+ ALOGD("ret =%d, tmp is %s\n", ret, tmp);
+ max_num=atoi(tmp);
+ ALOGD("max_num is %d!!!\n", max_num);
+
+ ret = lynq_get_value(LOG_UCI_FILE, LOG_UCI_MODULE, "sysinfo_debug_status", tmp);
+ ALOGD("ret =%d, tmp is %s\n", ret, tmp);
+ debug_mode=atoi(tmp);
+ ALOGD("debug_mode is %d!!!\n", debug_mode);
+ if((debug_mode == 1) &&(max_num > 0))
+ {
+ ALOGD("debug_mode is 1, pthread_create start!!!\n");
+ ret = pthread_create(&thid_1, NULL, check, NULL);
+ if(ret != 0)
+ {
+ ALOGD("pthread_create error!!!");
+ return;
+ }
+
+ }
+
+ return;
+}
+
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_timer.h b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_timer.h
new file mode 100755
index 0000000..fac1352
--- /dev/null
+++ b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/lynq_timer.h
@@ -0,0 +1,16 @@
+#ifndef __LYNQ_FACTORY_H__
+#define __LYNQ_FACTORY_H__
+#ifdef __cplusplus
+
+extern "C" {
+#endif
+
+
+
+void start_timer_request(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/main.cpp b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/main.cpp
new file mode 100755
index 0000000..5eead08
--- /dev/null
+++ b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/main.cpp
@@ -0,0 +1,24 @@
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include "lynq_timer.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+int main(void){
+ start_timer_request();
+ while (1)
+ {
+ sleep(UINT32_MAX);
+ }
+
+ return 0;
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/makefile b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/makefile
new file mode 100755
index 0000000..56280dd
--- /dev/null
+++ b/cap/zx297520v3/src/lynq/framework/lynq-sdk-ready/makefile
@@ -0,0 +1,62 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+ -std=c++11 \
+ -g -Os \
+ -flto \
+ -DRIL_SHLIB \
+ -DATCI_PARSE \
+ -DKEEP_ALIVE \
+ -DECALL_SUPPORT \
+ -fpermissive \
+
+
+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 -DMOBILETEK_TARGET_PLATFORM_T106
+endif
+
+ifeq ($(strip $(TARGET_PLATFORM)), T106)
+ LOCAL_CFLAGS += -DMOBILETEK_TARGET_PLATFORM_T106
+endif
+
+ifeq ($(strip $(TARGET_PLATFORM)), T800)
+ LOCAL_CFLAGS += -DMOBILETEK_TARGET_PLATFORM_T800
+endif
+
+$(warning ################# lynq sdk ROOT: $(ROOT),includedir:$(includedir))
+LOCAL_PATH = .
+
+LOCAL_C_INCLUDES = \
+ -I. \
+ -I$(LOCAL_PATH) \
+ -I$(ROOT)$(includedir)/logger \
+ -I$(ROOT)$(includedir)/liblog \
+
+
+LOCAL_LIBS := \
+ -L. \
+ -ldl \
+ -lstdc++ \
+ -llog \
+ -lcutils \
+ -lutils \
+ -lbinder \
+ -lpthread \
+ -llynq-uci \
+
+LOCAL_SRC_FILES_CPP = $(wildcard *.cpp)
+EXECUTABLE = lynq-sdk-ready
+
+OBJECTS=$(LOCAL_SRC_FILES_CPP:.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)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
index 2928d8d..1be825b 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
@@ -352,7 +352,7 @@
void datacall_ipv4_status_judge(int state,qser_data_call_info_s *data_res)
{
- if (state != 0)
+ if(state != 0)
{
data_res->v4.state = QSER_DATA_CALL_CONNECTED;
data_res->v4.reconnect = 1;
@@ -367,7 +367,7 @@
void datacall_ipv6_status_judge(int state,qser_data_call_info_s *data_res)
{
- if (state != 0)
+ if(state != 0)
{
data_res->v6.state = QSER_DATA_CALL_CONNECTED;
data_res->v6.reconnect = 1;
@@ -722,7 +722,11 @@
switch (pdp_type)
{
case QSER_APN_PDP_TYPE_IPV4:
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+ strcpy(out_pdp_type,"IP");
+#else
strcpy(out_pdp_type,"IPV4");
+#endif
break;
case QSER_APN_PDP_TYPE_PPP:
strcpy(out_pdp_type,"PPP");
@@ -847,7 +851,7 @@
data_cb_state.profile_idx = (char)handle;
memcpy(data_cb_state.name,data_urc_info.ifname,strlen(data_urc_info.ifname)+1);
- if (!strcmp(data_urc_info.type,"IPV4"))
+ if ((strcmp(data_urc_info.type,"IPV4") == 0) || (strcmp(data_urc_info.type,"IP") == 0))
{
data_cb_state.ip_family = QSER_DATA_CALL_TYPE_IPV4;
}
@@ -1060,28 +1064,27 @@
if ((strncmp(data_call_info.type,"IPV4", strlen("IPV4") + 1) == 0) || (strncmp(data_call_info.type,"IP", strlen("IP") + 1) == 0))
{
strcpy(info->v4.name,data_call_info.ifname);
- datacall_ipv4_status_judge(data_call_info.status,info);
+ datacall_ipv4_status_judge(data_call_info.active,info);
LYINFLOG("[IPV4]addresses:%s,gateways:%s,dnses:%s",data_call_info.addresses,data_call_info.gateways,data_call_info.dnses);
lynq_ipv4_aton_getinfo(&data_call_info,info);
}
else if (strncmp(data_call_info.type,"IPV6", strlen("IPV6") + 1) == 0)
{
strcpy(info->v6.name,data_call_info.ifname);
-
- datacall_ipv6_status_judge(data_call_info.status,info);
+ datacall_ipv6_status_judge(data_call_info.active,info);
LYINFLOG("[IPV6]addresses:%s,gateways:%s,dnses:%s",data_call_info.addresses,data_call_info.gateways,data_call_info.dnses);
lynq_ipv6_inet_pton_getinfo(&data_call_info,info);
}
else if (strncmp(data_call_info.type,"IPV4V6", strlen("IPV4V6") + 1) == 0)
{
strcpy(info->v4.name,data_call_info.ifname);
- datacall_ipv4_status_judge(data_call_info.status,info);
+ datacall_ipv4_status_judge(data_call_info.active,info);
LYINFLOG("[IPV4V6]addresses:%s,gateways:%s,dnses:%s",data_call_info.addresses,data_call_info.gateways,data_call_info.dnses);
#ifndef MOBILETEK_TARGET_PLATFORM_T106
lynq_ipv4_aton_getinfo(&data_call_info,info);
#endif
strcpy(info->v6.name,data_call_info.ifname);
- datacall_ipv6_status_judge(data_call_info.status,info);
+ datacall_ipv6_status_judge(data_call_info.active,info);
LYINFLOG("[IPV4V6]addresses:%s,gateways:%s,dnses:%s",data_call_info.addresses,data_call_info.gateways,data_call_info.dnses);
#ifndef MOBILETEK_TARGET_PLATFORM_T106
lynq_ipv6_inet_pton_getinfo(&data_call_info,info);
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/include/lynq_qser_network.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/include/lynq_qser_network.h
index 0e571fa..81aa0c2 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/include/lynq_qser_network.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/include/lynq_qser_network.h
@@ -364,6 +364,13 @@
QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
}QSER_NW_SINGNAL_EVENT_IND_T;
+typedef enum
+{
+ E_QSER_NW_RF_MODE_CFUN_0 = 0, /**< CFUN 0. */
+ E_QSER_NW_RF_MODE_CFUN_1 = 1, /**< CFUN 1. */
+ E_QSER_NW_RF_MODE_FLIGHT = 4, /**< Flight Mode, CFUN 4. */
+}E_QSER_NW_RF_MODE_TYPE_T;
+
int qser_nw_client_init(nw_client_handle_type *ph_nw);
@@ -418,6 +425,18 @@
void* contextPtr
);
+int qser_nw_set_rf_mode
+(
+ nw_client_handle_type h_nw,
+ E_QSER_NW_RF_MODE_TYPE_T rf_mode
+);
+
+int qser_nw_get_rf_mode
+(
+ nw_client_handle_type h_nw,
+ E_QSER_NW_RF_MODE_TYPE_T *rf_mode
+);
+
#ifdef __cplusplus
}
#endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
index b1539a7..2628d27 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
@@ -157,9 +157,7 @@
void *new_network_thread_recv(void *context)
{
- int handle = -1;
- int ret = 0;
- int slot_id = 0;
+ int handle = -1;
uint32_t ind_flag = 0;
while (1)
@@ -646,5 +644,40 @@
return RESULT_OK;
}
+int qser_nw_set_rf_mode (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T rf_mode)
+{
+ if(h_nw != g_ph_hw || h_nw == INVALID_CLIENT_HANDLE)
+ {
+ LYERRLOG("h_nw not right %d %d",h_nw,g_ph_hw);
+ return RESULT_ERROR;
+ }
+ return lynq_radio_on((lynq_network_radio_on_type )rf_mode);
+}
+
+int qser_nw_get_rf_mode (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T *rf_mode)
+{
+ if(NULL == rf_mode)
+ {
+ LYERRLOG("invalid client parameters incoming");
+ return RESULT_ERROR;
+ }
+
+ if(h_nw != g_ph_hw || h_nw == INVALID_CLIENT_HANDLE)
+ {
+ LYERRLOG("h_nw not right %d %d",h_nw,g_ph_hw);
+ return RESULT_ERROR;
+ }
+
+ int inner_rf_mode;
+ int ret = lynq_query_radio_state(&inner_rf_mode);
+ if(ret != 0)
+ {
+ LYERRLOG("get rf mode fail");
+ return RESULT_ERROR;
+ }
+ (*rf_mode)=(E_QSER_NW_RF_MODE_TYPE_T) inner_rf_mode;
+ return RESULT_OK;
+}
+
DEFINE_LYNQ_LIB_LOG(LYNQ_QSER_NETWORK)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-uci/include/lynq_uci.h b/cap/zx297520v3/src/lynq/lib/liblynq-uci/include/lynq_uci.h
index 0e9ec37..0a08c31 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-uci/include/lynq_uci.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-uci/include/lynq_uci.h
@@ -29,6 +29,9 @@
int lynq_get_value(char *file, char *section, char *key, char *tmp);
+
+int lynq_load_config(char *filename);
+
#ifdef __cplusplus
}
#endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci.config b/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci.config
index b3eb4bc..f88ea81 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci.config
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci.config
@@ -15,6 +15,9 @@
option auto_enable '0'
option debug '1'
+config debug_mode 'debug_mode'
+ option sysinfo_debug_status '1'
+ option check_file_size '228'
config lynq_fota_rw 'lynq_fota'
config service 'adb'
@@ -29,4 +32,4 @@
option status '0'
config lynq_led_rw 'lynq_led'
- option lynq_statusled_on '0'
\ No newline at end of file
+ option lynq_statusled_on '0'
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci_ro.config b/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci_ro.config
index 4aa92ac..284caad 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci_ro.config
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci_ro.config
@@ -1,4 +1,5 @@
config lynq_version_ro 'lynq_version'
-config lynq_wifi_ro 'lynq_wifi'
- option serverport '8000'
\ No newline at end of file
+config lynq_version 'lynq_version_ro'
+ option LYNQ_SW_VERSION 'T106CN-ZS03.V2.01.01.02P52U02.AP.09.04_CAP.09.04'
+ option LYNQ_SW_INSIDE_VERSION 'T106CN-ZS03.V2.01.01.02P52U02.AP.09.04_CAP.09.04'
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-uci/src/lynq_uci.c b/cap/zx297520v3/src/lynq/lib/liblynq-uci/src/lynq_uci.c
index a50eed1..b8a658d 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-uci/src/lynq_uci.c
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-uci/src/lynq_uci.c
@@ -214,3 +214,22 @@
#endif //#if UCI_SUPPORT
return 0;//#if UCI_SUPPORT add
}
+
+int lynq_load_config(char *filename)
+{
+ struct uci_context * ctx = NULL;
+ struct uci_element *e;
+ struct uci_package * pkg = NULL;
+ ctx = uci_alloc_context();
+ if (UCI_OK != uci_load(ctx, filename, &pkg))
+ {
+ uci_free_context(ctx);
+ ctx = NULL;
+ return -1;
+ }
+ uci_unload(ctx, pkg);
+ uci_free_context(ctx);
+ ctx = NULL;
+ return 0;
+}
+
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/misc.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/misc.c
index d1d0a21..da0ce95 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/misc.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/misc.c
@@ -19,7 +19,7 @@
int strStartsWith(const char *line, const char *prefix)
{
for ( ; *line != '\0' && *prefix != '\0' ; line++, prefix++) {
- if (toupper(*line) != toupper(*prefix)) {
+ if (tolower(*line) != tolower(*prefix)) {
return 0;
}
}
diff --git a/update_version.sh b/update_version.sh
old mode 100644
new mode 100755
index 1c2a397..a1270f5
--- a/update_version.sh
+++ b/update_version.sh
@@ -10,6 +10,9 @@
LYNQ_AP_SW_VERSION="export LYNQ_VERSION=\"${LYNQ_AP_VERSION}\""
LYNQ_COMMITID="LYNQ_CONFIG_COMMITID = \"${COMMIT_ID}\""
LYNQ_BOOT_COMMIT_ID="LYNQ_COMMIT_ID = \"${COMMIT_ID}\""
+LYNQ_VERSION_UCI=" option LYNQ_SW_VERSION '${LYNQ_AP_VERSION}_${LYNQ_CAP_VERSION}'"
+LYNQ_INSIDE_VERSION_UCI=" option LYNQ_SW_INSIDE_VERSION '${LYNQ_AP_VERSION}_${LYNQ_CAP_INSIDE_VERSION}'"
+
eval sed -i 's/^.*LYNQ_CONFIG_VERSION.*$/"${LYNQ_SW_INSIDE_VERSION}"/' $(pwd)/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
eval sed -i 's/^.*LYNQ_CONFIG_SW_VERSION.*$/"${LYNQ_SW_VERSION}"/' $(pwd)/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
eval sed -i 's/^.*LYNQ_CONFIG_VERSION.*$/"${LYNQ_SW_INSIDE_VERSION}"/' $(pwd)/cap/zx297520v3/sources/meta-zxic-custom/conf/lynq_base.conf
@@ -18,4 +21,6 @@
eval sed -i 's/^.*LYNQ_VERSION.*$/"${LYNQ_AP_SW_VERSION}"/' $(pwd)/ap/build/build.sh
eval sed -i 's/^.*LYNQ_CONFIG_VERSION[[:space:]]=.*$/"${LYNQ_SW_INSIDE_VERSION}"/' $(pwd)/boot/common/src/uboot/arch/arm/lib/Makefile
eval sed -i 's/^.*LYNQ_CONFIG_COMMITID[[:space:]]=.*$/"${LYNQ_COMMITID}"/' $(pwd)/boot/common/src/uboot/arch/arm/lib/Makefile
+eval sed -i 's/^.*LYNQ_SW_VERSION.*$/"${LYNQ_VERSION_UCI}"/' $(pwd)/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci_ro.config
+eval sed -i 's/^.*LYNQ_SW_INSIDE_VERSION.*$/"${LYNQ_INSIDE_VERSION_UCI}"/' $(pwd)/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci_ro.config