[Feature]SDK service add
Change-Id: Idc75b210fba44f45ee098c447fe2d3aab83e4e20
diff --git a/meta/meta-mediatek-ivt/recipes-core/base-files/base-files/fstab b/meta/meta-mediatek-ivt/recipes-core/base-files/base-files/fstab
old mode 100644
new mode 100755
index 99555fc..6875918
--- a/meta/meta-mediatek-ivt/recipes-core/base-files/base-files/fstab
+++ b/meta/meta-mediatek-ivt/recipes-core/base-files/base-files/fstab
@@ -25,5 +25,7 @@
/STATE/system/etc/security /system/etc/security none noauto,x-systemd.automount,bind 0 0
/STATE/etc/adr /etc/adr none noauto,x-systemd.automount,bind 0 0
/STATE/usr/share/gps /usr/share/gps none noauto,x-systemd.automount,bind 0 0
+/STATE/var/log /var/log none bind 0 0
+/STATE/log /log none bind 0 0
/dev/disk/by-partlabel/sncfg /mnt/sncfg auto defaults 1 2
diff --git a/meta/meta-mediatek-ivt/recipes-core/base-files/base-files/fstab-nand b/meta/meta-mediatek-ivt/recipes-core/base-files/base-files/fstab-nand
old mode 100644
new mode 100755
index 91dd286..2b08177
--- a/meta/meta-mediatek-ivt/recipes-core/base-files/base-files/fstab-nand
+++ b/meta/meta-mediatek-ivt/recipes-core/base-files/base-files/fstab-nand
@@ -26,5 +26,7 @@
/STATE/system/etc/security /system/etc/security none noauto,x-systemd.automount,bind 0 0
/STATE/etc/adr /etc/adr none noauto,x-systemd.automount,bind 0 0
/STATE/usr/share/gps /usr/share/gps none noauto,x-systemd.automount,bind 0 0
+/STATE/var/log /var/log none bind 0 0
+/STATE/log /log none bind 0 0
ubi5_0 /mnt/sncfg ubifs nosuid,nodev 1 2
diff --git a/meta/meta-mediatek-mt2731/conf/machine/auto2731evb-ivt-main-user.conf b/meta/meta-mediatek-mt2731/conf/machine/auto2731evb-ivt-main-user.conf
index 3259349..37adbf5 100644
--- a/meta/meta-mediatek-mt2731/conf/machine/auto2731evb-ivt-main-user.conf
+++ b/meta/meta-mediatek-mt2731/conf/machine/auto2731evb-ivt-main-user.conf
@@ -82,7 +82,9 @@
TARGET_CFLAGS += "-DMTK_BOOTDEV_TYPE=1 -Os"
NAND_TYPE = "mcp_nand"
#nand name should be the same with the one in nand-utils/nand_device_list.txt
-NAND_CHIP_NAME = "MT29F4G08ABBDA"
+#tianyan@2021.09.17 modify for nand+dram start
+NAND_CHIP_NAME = "MT29F4G08ABBFAH"
+#tianyan@2021.09.17 modify for nand+dram end
#nand brom header version:
# 1.0 or null: header sytle from Tablet SOC, which is independent of PMBR
# 2.0: header sytle from mt2712, which is designed for GPT, and is part of PMBR
@@ -142,8 +144,10 @@
UBOOT_ENTRYPOINT = "0x40008000"
UBOOT_LOADADDRESS = "0x40008000"
+#tianyan@2021.09.17 modify for nand+dram start
# Scatter File
-SCATTER_PROJECT = "auto2731-ivt-mcp_nand"
+SCATTER_PROJECT = "auto2731-ivt-mcp_nand_lp4"
+#tianyan@2021.09.17 modify for nand+dram end
# Image FS
IMAGE_FSTYPES ?= "squashfs"
@@ -152,11 +156,13 @@
EXTRA_IMAGEDEPENDS += "fbtool flashtool platform-tools scatter"
SERIAL_CONSOLES = "921600;ttyGS1"
+#tianyan@2021.09.17 modify for nand+dram start
#UBI/UBIFS ARGS
-MKUBIFS_ARGS = "-m 2048 -e 126976 -c 1400 -F"
-UBINIZE_ARGS = "-m 2048 -p 128KiB -O 2048"
+MKUBIFS_ARGS = "-m 4096 -e 253952 -c 1400 -F"
+UBINIZE_ARGS = "-m 4096 -p 256KiB -O 4096"
-MKUBIFS_CONFIG_ARGS = "-m 2048 -e 126976 -c 22 -F"
+MKUBIFS_CONFIG_ARGS = "-m 4096 -e 253952 -c 22 -F"
+#tianyan@2021.09.17 modify for nand+dram end
# Build Load Type
BUILD_LOAD_TYPE ?= "eng"
diff --git a/meta/meta-mediatek-mt2731/conf/machine/auto2731evb-ivt-main.conf b/meta/meta-mediatek-mt2731/conf/machine/auto2731evb-ivt-main.conf
index bf2353a..902f797 100644
--- a/meta/meta-mediatek-mt2731/conf/machine/auto2731evb-ivt-main.conf
+++ b/meta/meta-mediatek-mt2731/conf/machine/auto2731evb-ivt-main.conf
@@ -15,7 +15,7 @@
DEFAULTTUNE_virtclass-multilib-lib64 = "aarch64"
#LYNQ
-LYNQ_SW_VERSION = "T103CM2v01.MP2_MR2.01b03"
+LYNQ_SW_VERSION = "T103R4_SZZTv02.MP2_MR2.01b04"
SMS_INDEX = "0"
SMS_FLAG = "0"
# lynq
@@ -87,7 +87,9 @@
TARGET_CFLAGS += "-DMTK_BOOTDEV_TYPE=1 -Os"
NAND_TYPE = "mcp_nand"
#nand name should be the same with the one in nand-utils/nand_device_list.txt
-NAND_CHIP_NAME = "MT29F4G08ABBDA"
+#tianyan@2021.09.17 modify for nand+dram start
+NAND_CHIP_NAME = "MT29F4G08ABBFAH"
+#tianyan@2021.09.17 modify for nand+dram end
#nand brom header version:
# 1.0 or null: header sytle from Tablet SOC, which is independent of PMBR
# 2.0: header sytle from mt2712, which is designed for GPT, and is part of PMBR
@@ -147,8 +149,10 @@
UBOOT_ENTRYPOINT = "0x40008000"
UBOOT_LOADADDRESS = "0x40008000"
+#tianyan@2021.09.17 modify for nand+dram start
# Scatter File
-SCATTER_PROJECT = "auto2731-ivt-mcp_nand"
+SCATTER_PROJECT = "auto2731-ivt-mcp_nand_lp4"
+#tianyan@2021.09.17 modify for nand+dram end
# Image FS
IMAGE_FSTYPES ?= "squashfs"
@@ -156,11 +160,13 @@
EXTRA_IMAGEDEPENDS += "lib64-bl33 lk lib64-trustzone scatter spmfw flashtool mdcert"
SERIAL_CONSOLES = "921600;ttyGS1"
+#tianyan@2021.09.17 modify for nand+dram start
#UBI/UBIFS ARGS
-MKUBIFS_ARGS = "-m 2048 -e 126976 -c 1400 -F"
-UBINIZE_ARGS = "-m 2048 -p 128KiB -O 2048"
+MKUBIFS_ARGS = "-m 4096 -e 253952 -c 1400 -F"
+UBINIZE_ARGS = "-m 4096 -p 256KiB -O 4096"
-MKUBIFS_CONFIG_ARGS = "-m 2048 -e 126976 -c 22 -F"
+MKUBIFS_CONFIG_ARGS = "-m 4096 -e 253952 -c 22 -F"
+#tianyan@2021.09.17 modify for nand+dram end
# Build Load Type
BUILD_LOAD_TYPE ?= "eng"
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-call/liblynq-call.bb b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-call/liblynq-call.bb
new file mode 100755
index 0000000..20dc227
--- /dev/null
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-call/liblynq-call.bb
@@ -0,0 +1,49 @@
+inherit externalsrc package
+
+DESCRIPTION = "lynq call"
+LICENSE = "MediaTekProprietary"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+DEPENDS += "platform-libs audio-mixer-ctrl libpal gstreamer1.0 glib-2.0 dtmf libapn liblynq-log"
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-call"
+
+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()
+EXTRA_OEMAKE = "'RAT_CONFIG_C2K_SUPPORT = ${RAT_CONFIG_C2K_SUPPORT}'\
+ 'MTK_MULTI_SIM_SUPPORT = ${MTK_MULTI_SIM_SUPPORT}'\
+ 'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+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/libcall/ ${D}${includedir}/libcall
+ fi
+}
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-data/liblynq-data.bb b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-data/liblynq-data.bb
new file mode 100755
index 0000000..55cf572
--- /dev/null
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-data/liblynq-data.bb
@@ -0,0 +1,49 @@
+inherit externalsrc package
+
+DESCRIPTION = "lynq call"
+LICENSE = "MediaTekProprietary"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+DEPENDS += "platform-libs audio-mixer-ctrl libpal gstreamer1.0 glib-2.0 dtmf libapn liblynq-log"
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-data"
+
+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()
+EXTRA_OEMAKE = "'RAT_CONFIG_C2K_SUPPORT = ${RAT_CONFIG_C2K_SUPPORT}'\
+ 'MTK_MULTI_SIM_SUPPORT = ${MTK_MULTI_SIM_SUPPORT}'\
+ 'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+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/libdata/ ${D}${includedir}/libdata
+ fi
+}
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-sim/liblynq-sim.bb b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-sim/liblynq-sim.bb
new file mode 100755
index 0000000..a960bba
--- /dev/null
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-sim/liblynq-sim.bb
@@ -0,0 +1,58 @@
+inherit externalsrc package
+
+DESCRIPTION = "liblynq-uci.so demo"
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+DEPENDS += "platform-libs platform-libs-common libpal liblynq-log libvendor-ril"
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-sim/"
+
+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()
+EXTRA_OEMAKE = "'RAT_CONFIG_C2K_SUPPORT = ${RAT_CONFIG_C2K_SUPPORT}'\
+ 'MTK_MULTI_SIM_SUPPORT = ${MTK_MULTI_SIM_SUPPORT}'\
+ 'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+FILES_${PN} = "${base_libdir}/*.so "
+
+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 -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 () {
+ oe_runmake install ROOT=${D}
+
+ if [ -d "${WORKONSRC}" ] ; then
+ install -d ${D}${includedir}/
+ cp -af ${S}/include/ ${D}${includedir}/
+ fi
+}
+
+addtask bachclean
+do_bachclean () {
+ oe_runmake clean
+}
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-sim/liblynq-sim.bb.bak b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-sim/liblynq-sim.bb.bak
new file mode 100755
index 0000000..5568982
--- /dev/null
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-sim/liblynq-sim.bb.bak
@@ -0,0 +1,64 @@
+inherit externalsrc package
+
+DESCRIPTION = "libtel-ril.so demo"
+SECTION = "base"
+LICENSE = "MediaTekProprietary"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+DEPENDS += "platform-libslibvendor-ril liblynq-log"
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-sim"
+
+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()
+EXTRA_OEMAKE = "'RAT_CONFIG_C2K_SUPPORT = ${RAT_CONFIG_C2K_SUPPORT}'\
+ 'MTK_MULTI_SIM_SUPPORT = ${MTK_MULTI_SIM_SUPPORT}'\
+ 'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+
+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/ ${D}${includedir}/
+ fi
+}
+
+addtask bachclean
+do_bachclean () {
+ oe_runmake clean
+}
+
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-tele-ril/liblynq-tele-ril.bb b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-tele-ril/liblynq-tele-ril.bb
old mode 100644
new mode 100755
index 2157204..c9243f4
--- a/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-tele-ril/liblynq-tele-ril.bb
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-tele-ril/liblynq-tele-ril.bb
@@ -4,9 +4,9 @@
SECTION = "base"
LICENSE = "MediaTekProprietary"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
-DEPENDS += "platform-libs audio-mixer-ctrl libvendor-ril libpal gstreamer1.0 glib-2.0 dtmf libapn dbus liblynq-log"
+DEPENDS += "platform-libs libvendor-ril liblynq-log"
inherit workonsrc
-WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-tele-ril"
+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-sim/"
TARGET_CC_ARCH += "${LDFLAGS}"
BB_INCLUDE_ADD = "--sysroot=${STAGING_DIR_HOST}"
@@ -53,7 +53,7 @@
if [ -d "${WORKONSRC}" ] ; then
install -d ${D}${includedir}/libtel
- cp -af ${S}/include/libtel ${D}${includedir}/libtel
+ cp -af ${S}/include/ ${D}${includedir}/
fi
}
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-tele-ril/liblynq-tele-ril.bb.bak b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-tele-ril/liblynq-tele-ril.bb.bak
new file mode 100755
index 0000000..77c8c9d
--- /dev/null
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/liblynq-tele-ril/liblynq-tele-ril.bb.bak
@@ -0,0 +1,64 @@
+inherit externalsrc package
+
+DESCRIPTION = "libtel-ril.so demo"
+SECTION = "base"
+LICENSE = "MediaTekProprietary"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+DEPENDS += "platform-libs libvendor-ril liblynq-log"
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-sim/"
+
+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()
+EXTRA_OEMAKE = "'RAT_CONFIG_C2K_SUPPORT = ${RAT_CONFIG_C2K_SUPPORT}'\
+ 'MTK_MULTI_SIM_SUPPORT = ${MTK_MULTI_SIM_SUPPORT}'\
+ 'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+
+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 -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 () {
+ oe_runmake install ROOT=${D}
+
+ if [ -d "${WORKONSRC}" ] ; then
+ install -d ${D}${includedir}/libtel
+ cp -af ${S}/include ${D}${includedir}
+ fi
+}
+
+addtask bachclean
+do_bachclean () {
+ oe_runmake clean
+}
+
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/lynq-function-test/lynq-function-test.bb b/meta/meta-mediatek-mt2731/recipes-lynq/lynq-function-test/lynq-function-test.bb
old mode 100644
new mode 100755
index 63a6323..78eb5bb
--- a/meta/meta-mediatek-mt2731/recipes-lynq/lynq-function-test/lynq-function-test.bb
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/lynq-function-test/lynq-function-test.bb
@@ -3,8 +3,7 @@
DESCRIPTION = "function test"
LICENSE = "MediaTekProprietary"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
-DEPENDS += "platform-libs libpal liblynq-driver-control libvendor-ril liblynq-broadcast gstreamer1.0 glib-2.0 dtmf libapn dbus gpshal liblynq-log liblynq-tele-ril \
- liblynq-protcl liblynq-fota nandapi"
+DEPENDS += "platform-libs liblynq-data liblynq-call"
inherit workonsrc
WORKONSRC = "${TOPDIR}/../src/lynq/packages/apps/lynq-function-test/src"
@@ -26,6 +25,6 @@
do_install() {
install -d ${D}${bindir}/
- install -m 0755 ${S}/lynq-function-test ${D}${bindir}/
+ install -m 0755 ${S}/lynq-sim-test ${D}${bindir}/
install -d ${D}${includedir}
}
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/lynq-function-test/lynq-function-test.bb.bak b/meta/meta-mediatek-mt2731/recipes-lynq/lynq-function-test/lynq-function-test.bb.bak
new file mode 100755
index 0000000..54045cd
--- /dev/null
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/lynq-function-test/lynq-function-test.bb.bak
@@ -0,0 +1,30 @@
+inherit externalsrc package
+
+DESCRIPTION = "function test"
+LICENSE = "MediaTekProprietary"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+DEPENDS += "platform-libs liblynq-data"
+inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/packages/apps/lynq-function-test/src"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+#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}'"
+
+#INHIBIT_PACKAGE_STRIP = "1"
+do_compile () {
+ if test "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" || test "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4"; then
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -mhard-float"
+ else
+ oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}"
+ fi
+}
+
+do_install() {
+ install -d ${D}${bindir}/
+ install -m 0755 ${S}/lynq-sim-test ${D}${bindir}/
+ install -d ${D}${includedir}
+}
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb b/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb
old mode 100644
new mode 100755
index 37b06f3..9d14979
--- a/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb
@@ -9,16 +9,15 @@
lynq-broadcast-receive \
lynq-broadcast-send \
liblynq-protcl \
- lynq-threadhandle \
lynq-tcpcli \
lynq-tcpser \
lynq-udpcli \
lynq-udpser \
liblynq-log \
- lynq-factorytest \
liblynq-fota \
- liblynq-tele-ril \
- lynq-tele-cmd-test \
+ liblynq-sim \
+ liblynq-data \
+ liblynq-call \
lynq-function-test \
logrotate \
lynq-logrotate-service \
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb.bak b/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb.bak
new file mode 100755
index 0000000..f38b1ad
--- /dev/null
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb.bak
@@ -0,0 +1,26 @@
+SUMMARY = "Lynq Package Group - MT2731"
+LICENSE = "MediaTekProprietary"
+
+inherit packagegroup
+
+RDEPENDS_packagegroup-lync-mt2731 = "\
+ lynq-system-service \
+ liblynq-driver-control \
+ lynq-broadcast-receive \
+ lynq-broadcast-send \
+ liblynq-protcl \
+ lynq-tcpcli \
+ lynq-tcpser \
+ lynq-udpcli \
+ lynq-udpser \
+ liblynq-log \
+ liblynq-fota \
+ liblynq-sim \
+ liblynq-data \
+ lynq-function-test \
+ logrotate \
+ lynq-logrotate-service \
+ lynq-konoda-rock \
+ lynq-atsvc \
+ liblynq-logdata-handle \
+"
diff --git a/meta/meta-mediatek-mt2731/recipes-yummy/images/mtk-image-bach.inc b/meta/meta-mediatek-mt2731/recipes-yummy/images/mtk-image-bach.inc
old mode 100644
new mode 100755
index 211928f..3fc5e2b
--- a/meta/meta-mediatek-mt2731/recipes-yummy/images/mtk-image-bach.inc
+++ b/meta/meta-mediatek-mt2731/recipes-yummy/images/mtk-image-bach.inc
@@ -6,7 +6,7 @@
IMAGE_ROOTFS_SIZE ?= "1024"
-STATE_DIR_CONTENT = "${IMAGE_ROOTFS}/home ${IMAGE_ROOTFS}/usr/lib/tmpfiles.d ${IMAGE_ROOTFS}/etc/firmware ${IMAGE_ROOTFS}/etc/syslog ${IMAGE_ROOTFS}/mnt ${IMAGE_ROOTFS}/srv ${IMAGE_ROOTFS}/usr/local ${IMAGE_ROOTFS}/system/etc/firmware ${IMAGE_ROOTFS}/custom/etc/firmware ${IMAGE_ROOTFS}/var/lib ${IMAGE_ROOTFS}/data ${IMAGE_ROOTFS}/system/etc/tele ${IMAGE_ROOTFS}/system/etc/adr ${IMAGE_ROOTFS}/system/etc/agps ${IMAGE_ROOTFS}/system/etc/security ${IMAGE_ROOTFS}/etc/adr ${IMAGE_ROOTFS}/usr/share/gps"
+STATE_DIR_CONTENT = "${IMAGE_ROOTFS}/home ${IMAGE_ROOTFS}/usr/lib/tmpfiles.d ${IMAGE_ROOTFS}/etc/firmware ${IMAGE_ROOTFS}/etc/syslog ${IMAGE_ROOTFS}/mnt ${IMAGE_ROOTFS}/srv ${IMAGE_ROOTFS}/usr/local ${IMAGE_ROOTFS}/system/etc/firmware ${IMAGE_ROOTFS}/custom/etc/firmware ${IMAGE_ROOTFS}/var/lib ${IMAGE_ROOTFS}/data ${IMAGE_ROOTFS}/system/etc/tele ${IMAGE_ROOTFS}/system/etc/adr ${IMAGE_ROOTFS}/system/etc/agps ${IMAGE_ROOTFS}/system/etc/security ${IMAGE_ROOTFS}/etc/adr ${IMAGE_ROOTFS}/usr/share/gps ${IMAGE_ROOTFS}/var/log ${IMAGE_ROOTFS}/log"
STATE_DIR_IMAGE_SIZE ?= "14336"
VENDOR_PROP_FILE = "${IMAGE_ROOTFS}/vendor/build.prop"
diff --git a/src/bach/build.bach/work/libvendor-ril/mtk-rilproxy/framework/base/RfxTransferUtils.h b/src/bach/build.bach/work/libvendor-ril/mtk-rilproxy/framework/base/RfxTransferUtils.h
index c9027ec..2f7da2b 100755
--- a/src/bach/build.bach/work/libvendor-ril/mtk-rilproxy/framework/base/RfxTransferUtils.h
+++ b/src/bach/build.bach/work/libvendor-ril/mtk-rilproxy/framework/base/RfxTransferUtils.h
@@ -47,6 +47,12 @@
#include "RfxLog.h"
#include <cutils/jstring.h>
+/*Warren add for t800 ril service 2021/12/15 start*/
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+/*Warren add for t800 ril service 2021/12/15 end*/
+
#ifdef HAVE_AEE_FEATURE
#include "aee.h"
#endif
@@ -96,6 +102,11 @@
typedef struct RequestInfo {
int32_t token; // this is not RIL_Token
+ /*Warren add for t800 ril service 2021/12/15 start*/
+ int uToken;
+ int lynqEvent;
+ struct sockaddr_in uClient_addr;
+ /*Warren add for t800 ril service 2021/12/15 end*/
CommandInfo *pCI;
struct RequestInfo *p_next;
char cancelled;
diff --git a/src/bach/build.bach/work/libvendor-ril/mtk-rilproxy/framework/include/core/RfxDispatchThread.h b/src/bach/build.bach/work/libvendor-ril/mtk-rilproxy/framework/include/core/RfxDispatchThread.h
old mode 100644
new mode 100755
index 50e5921..b5464b5
--- a/src/bach/build.bach/work/libvendor-ril/mtk-rilproxy/framework/include/core/RfxDispatchThread.h
+++ b/src/bach/build.bach/work/libvendor-ril/mtk-rilproxy/framework/include/core/RfxDispatchThread.h
@@ -80,6 +80,11 @@
} CommandInfo;
typedef struct RequestInfo {
int32_t token; // this is not RIL_Token
+ /*Warren add for t800 ril service 2021/12/15 start*/
+ int uToken;
+ int lynqEvent;
+ struct sockaddr_in uClient_addr;
+ /*Warren add for t800 ril service 2021/12/15 end*/
CommandInfo *pCI;
struct RequestInfo *p_next;
char cancelled;
diff --git a/src/lynq/framework/lynq-atsvc/src/cc.cpp b/src/lynq/framework/lynq-atsvc/src/cc.cpp
old mode 100644
new mode 100755
index c5ca779..e647c52
--- a/src/lynq/framework/lynq-atsvc/src/cc.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/cc.cpp
@@ -44,6 +44,11 @@
#include <string>
#include <thread>
#include "eCall.h"
+/*Warren add for t800 ril servie 2021/12/23 start*/
+#include "lynq_interface.h"
+#include <binder/Parcel.h>
+using android::Parcel;
+/*Warren add for t800 ril servie 2021/12/23 end*/
static int dtmf_volume = 0;
void *dtmf_handle = NULL;
@@ -857,6 +862,7 @@
int setDtmfVolume(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
{
int setValue = 0;
+ Parcel p;
RLOGD("setDtmfVolume start!");
if(argc < 2) {
@@ -869,12 +875,21 @@
RLOGD("set dtmf Volume value is %d!",setValue);
if(setValue < DTMF_MIN_VOLUME || setValue > DTMF_MAX_VOLUME) {
RLOGW("Warning: set volume value is over-range!");
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ android::lynqAssemblyParcelheader(p,socket_id,LYNQ_REQUEST_SET_DTMF_VOLUME,0,2);
+ android::LYNQ_RIL_respSocket_sp(p,pRI);
+ /*Warren add for t800 ril service 2021/12/23 end*/
free(pRI);
return -1;
}
//paramter is from 0 to 36
dtmf_volume = setValue;
-
+ printf(">>>>set dtmf Volume<<<< success value is %d!\n",setValue);
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ android::lynqAssemblyParcelheader(p,socket_id,LYNQ_REQUEST_SET_DTMF_VOLUME,0,0);
+ printf(">>>>set dtmf Volume<<<< success value is %d!\n",setValue);
+ /*Warren add for t800 ril service 2021/12/23 end*/
+ android::LYNQ_RIL_respSocket_sp(p,pRI);
free(pRI);
return 0;
}
@@ -1239,19 +1254,36 @@
//RIL_REQUEST_SET_MUTE
int setMute(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
{
- if(pRI) {
- free(pRI);
+ Parcel p;
+ printf("WARREN TEST002!!!\n");
+ if(argc<2)
+ {
+ if(pRI)
+ {
+ free(pRI);
+ }
+ return -1;
}
bool mute = (atoi(argv[1]) > 0) ? true: false;
RLOGD("set mute %s", ((atoi(argv[1]) > 0) ? "on": "off"));
int ret = setCallMute(mute);
std::string str;
if(ret) {
- str.append("set mute fail, please try agian\n");
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ android::lynqAssemblyParcelheader(p,socket_id,RIL_REQUEST_GET_MUTE,0,2);
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ printf("set mute fail, please try agian\n");
} else {
- str.append("set mute ");
- str.append((atoi(argv[1]) > 0) ? "on ": "off ");
- str.append("success\n");
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ android::lynqAssemblyParcelheader(p,socket_id,RIL_REQUEST_GET_MUTE,0,0);
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ }
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ printf("set mute %s\n", ((atoi(argv[1]) > 0) ? "on": "off"));
+ android::LYNQ_RIL_respSocket(p,(void *)pRI);
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ if(pRI) {
+ free(pRI);
}
android::emResultNotify(str.c_str());
return 0;
@@ -1260,19 +1292,26 @@
//RIL_REQUEST_GET_MUTE
int getMute(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
{
- if(pRI) {
- free(pRI);
- }
- std::string str;
+ Parcel p;
+ printf("WARREN TEST001!!!\n");
int mute = getCallMute();
//TBC -200 fail status
if(mute == -200) {
- str.append("get mute state fail, please check whether does call exsit. \n");
+ printf("get mute state fail, please check whether does call exsit.\n");
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ android::lynqAssemblyParcelheader(p,socket_id,RIL_REQUEST_GET_MUTE,0,2);
+ /*Warren add for t800 ril service 2021/12/23 end*/
} else {
- str.append("current mute state is ");
- str.append((mute == 1) ? "on\n" : "off\n");
+ /*Warren add for t800 ril service 2021/12/23 start*/
+ android::lynqAssemblyParcelheader(p,socket_id,RIL_REQUEST_GET_MUTE,0,0);
+ /*Warren add for t800 ril service 2021/12/23 end*/
}
- android::emResultNotify(str.c_str());
+ printf("current mute state is%s",((mute == 1) ? "on\n" : "off\n"));
+ p.writeInt32(mute);
+ android::LYNQ_RIL_respSocket(p,(void *)pRI);
+ if(pRI) {
+ free(pRI);
+ }
return 0;
}
diff --git a/src/lynq/framework/lynq-atsvc/src/commands.h b/src/lynq/framework/lynq-atsvc/src/commands.h
old mode 100644
new mode 100755
index e5fc836..6aa6cb3
--- a/src/lynq/framework/lynq-atsvc/src/commands.h
+++ b/src/lynq/framework/lynq-atsvc/src/commands.h
@@ -90,7 +90,9 @@
{"RIL_REQUEST_SET_SPEECH_OFF",setSpeechOff,"set Speech Off",-1},
#endif
{"RIL_REQUEST_SET_SPEECH_VOLUME",setSpeechVolume,"set Speech Volume",-1},
- {"RIL_REQUEST_SET_DTMF_VOLUME",setDtmfVolume,"set dtmf Volume",-1},
+ /*Warren change for t800 ril service 2021/12/24 start*/
+ {"RIL_REQUEST_SET_DTMF_VOLUME",setDtmfVolume,"set dtmf Volume",LYNQ_REQUEST_SET_DTMF_VOLUME},
+ /*Warren change for t800 ril service 2021/12/24 start*/
// {"RIL_REQUEST_OEM_HOOK_STRINGS",invokeOemRilRequestStrings,"invoke Oem Ril Request Strings",RIL_REQUEST_OEM_HOOK_STRINGS},
{"RIL_REQUEST_ADD_IMS_CONFERENCE_CALL_MEMBER",addImsConferenceCallMember,"add Ims Conference Call Member",RIL_REQUEST_ADD_IMS_CONFERENCE_CALL_MEMBER},
{"RIL_REQUEST_REMOVE_IMS_CONFERENCE_CALL_MEMBER",removeImsConferenceCallMember,"remove Ims Conference Call Member",RIL_REQUEST_REMOVE_IMS_CONFERENCE_CALL_MEMBER},
diff --git a/src/lynq/framework/lynq-atsvc/src/common.cpp b/src/lynq/framework/lynq-atsvc/src/common.cpp
old mode 100644
new mode 100755
index 8514f6b..277f88b
--- a/src/lynq/framework/lynq-atsvc/src/common.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/common.cpp
@@ -636,6 +636,17 @@
}
break;
}
+#ifdef TELEMATIC_5G_SUPPORT
+ case RADIO_TECH_NR://5G
+ {
+ if(request == RIL_REQUEST_VOICE_REGISTRATION_STATE) {
+ printf("[QUERY][VOICE REG_STATUS][SIM%d] The registered radio technology is 5G\n", slot);
+ } else {
+ printf("[QUERY][DATA REG_STATUS][SIM%d] The registered radio technology is 5G\n", slot);
+ }
+ break;
+ }
+#endif
case RADIO_TECH_UNKNOWN:
{
if(request == RIL_REQUEST_VOICE_REGISTRATION_STATE) {
@@ -762,3 +773,60 @@
pthread_cond_broadcast(&s_DataCond);
pthread_mutex_unlock(&s_DataMutex);
}
+bool mtkItTest(const char* data) {
+ std::string str("");
+ str.append(data);
+ RLOGD("%s, data: %s", __FUNCTION__, str.c_str());
+ std::vector<std::string> all;
+ RequestInfo* pRI = NULL;
+ utils::tokenize(str, ',', all);
+ if(all[0] != std::string("TEST")) {
+ return false;
+ }
+ android::Parcel p;
+ size_t pos = p.dataPosition();
+ for(int i = 1 ; i < all.size(); i++) {
+ std::string str = all[i];
+ RLOGD("%s, all[%d]: %s", __FUNCTION__, i, str.c_str());
+ std::vector<std::string> items;
+ utils::tokenize(str, '=', items);
+ if(items.size() == 2) {
+ if(items[0] == std::string("INT")) {
+ int para = std::stoi(items[1]);
+ p.writeInt32(para);
+ } else if(items[0] == std::string("STR")) {
+ writeStringToParcel(p, items[1].c_str());
+ } else if(items[0] == std::string("REQ")) {
+ int request = std::stoi(items[1]);
+ pRI = creatRILInfoAndInit(request, UDP, (RIL_SOCKET_ID) ((0)));
+ }
+ } else {
+ RLOGD("%s, too many \"=\"");
+ }
+ }
+ if(pRI && pRI->pCI) {
+ p.setDataPosition(pos);
+ pRI->pCI->dispatchFunction(p, pRI);
+ } else {
+ if(pRI) {
+ free(pRI);
+ pRI = NULL;
+ }
+ }
+ return true;
+}
+int lynqSocketSendto(int fd,struct sockaddr *dest_addr,int addr_len,char msg[])
+{
+ int ret = 0;
+ ret = sendto(fd,msg,strlen(msg),0,dest_addr,addr_len);
+ if(ret>0)
+ {
+ RLOGD("[lynqSocketSendto] send msg success!!!");
+ return 0;
+ }
+ else
+ {
+ RLOGD("[lynqSocketSendto] send msg fail!!!");
+ return -1;
+ }
+}
diff --git a/src/lynq/framework/lynq-atsvc/src/common.h b/src/lynq/framework/lynq-atsvc/src/common.h
old mode 100644
new mode 100755
index 3ef3d0b..b36822b
--- a/src/lynq/framework/lynq-atsvc/src/common.h
+++ b/src/lynq/framework/lynq-atsvc/src/common.h
@@ -46,6 +46,11 @@
#include "powerManager.h"
#include "rfdesense/RfDesenseTxTest.h"
#include "util/AtLine.h"
+/*Warren add for t800 ril service 2021/12/15 start*/
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+/*Warren add for t800 ril service 2021/12/15 start*/
#define DEBUG 0
#define FUNCTION_CALLED(time,msg) printf("%s: %s %s called\n",(time), __func__ ,(msg));
@@ -68,11 +73,47 @@
#define ATCI 3
#define RSPD 4
#define OTHER 5
-
+//Warren add for plantform 2021_08_11 start
+#define MAX_LEN 101
+#define MAX_QUEST_LEN 12
+//Warren add for plantform 2021_08_11 end
#define PROP_DEFAULT_DATA_SIM "persist.vendor.radio.data.sim"
#define PROP_DEFAULT_DATA_SIM_STATUS "vendor.radio.data.enable"
#define ATCI_SIM "persist.vendor.service.atci.sim"
//#define PROP_DATA_ALLOW_STATUS "vendor.ril.data.allow.status"
+//Warren add for plantform 2021_08_11 start
+/*
+**The range of error values unique to LYNQ is 8000 to 10000.
+**The sim card state is error.
+*/
+typedef enum{
+ LYNQ_E_CARDSTATE_ERROR=8000,
+ /* The voice service state is out of service*/
+ LYNQ_E_STATE_OUT_OF_SERVICE=8001,
+ /* The voice service state is EMERGENCY_ONLY*/
+ LYNQ_E_STATE_EMERGENCY_ONLY=8002,
+ /* The radio power is power off*/
+ LYNQ_E_STATE_POWER_OFF=8003,
+ LYNQ_E_TIME_OUT=8004,
+ /*create or open sms DB fail */
+ LYNQ_E_SMS_DB_FAIL=8005,
+ /*Failed to execute sql statement*/
+ LYNQ_E_SMS_SQL_FAIL = 8006,
+ LYNQ_E_SMS_NOT_FIND = 8007,
+ /* The logic conflict*/
+ LYNQ_E_CONFLICT=9000,
+ /*Null anomaly*/
+ LYNQ_E_NULL_ANONALY=9001
+}LYNQ_E;
+/*Warren add for t800 RIL Service 2021/12/10 start*/
+
+typedef struct{
+ int uToken;
+ int request;
+ int paramLen;
+ char param[1024*8];
+}lynq_client_t;
+/*Warren add for t800 RIL Service 2021/12/10 end*/
#define UNSET -1
@@ -89,10 +130,12 @@
char cancelled;
char local; // responses to local commands do not go back to command process
RIL_SOCKET_ID socket_id;
- /*Warren add for LYNQ platform 2021/9/30 start*/
- int lynqEvent; // 1:lynq event.0;lynq not core.
- int uToken; //for mulit user
- /*Warren add for LYNQ platform 2021/9/30 start*/
+ /*Warren add for t800 ril service 2021/12/15 start*/
+ int uToken;
+ int lynqEvent;
+ struct sockaddr_in uClient_addr;
+ /*Warren add for t800 ril service 2021/12/15 end*/
+
} RequestInfo;
/*Warren add for FAW 2021/11/1 start*/
@@ -172,6 +215,7 @@
int get_default_sim_all_except_data();
RequestInfo* creatRILInfoAndInit(int request, int mode, RIL_SOCKET_ID soc_id);
int get_atci_sim();
+bool mtkItTest(const char* data);
void updateSystemTime(const void *data, int datalen);
void notifyDataSignal();
@@ -203,6 +247,15 @@
int sendUrcToUsb(char *cmd);
int lynqSendToRil(int argc,char *argv[],int uToken);
/*Warren add for FAW platform 2021/9/27 end*/
+ /*Warren add for t800 RIL Service 2021/12/10 start*/
+ int lynqSocketSendto(int fd,struct sockaddr *dest_addr,int addr_len,char msg[]);
+/*Warren add for t800 RIL Service 2021/12/10 end*/
+/*Warren add for t800 ril service 2021/12/23 start*/
+ int lynqAssemblyParcelheader(Parcel &p,int slot,int request,int respType,int error);
+ int LYNQ_RIL_respSocket(Parcel &p,RIL_Token t);
+ int LYNQ_RIL_respSocket_sp(Parcel &p,RequestInfo *pRI);
+ int LYNQ_RIL_urcBroadcast(Parcel &p);
+/*Warren add for t800 ril service 2021/12/23 end*/
}
#endif
diff --git a/src/lynq/framework/lynq-atsvc/src/data/data.cpp b/src/lynq/framework/lynq-atsvc/src/data/data.cpp
old mode 100644
new mode 100755
index 2055358..1207295
--- a/src/lynq/framework/lynq-atsvc/src/data/data.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/data/data.cpp
@@ -55,6 +55,12 @@
#include "lynq_common.h"
/*Warren add for FAW T103 2021/11/2 end*/
+/*Warren add forT800 platform 2021/12/25 start*/
+
+#include "lynq_interface.h"
+using android::Parcel;
+/*Warren add for t800 ril service 2021/12/25 end*/
+
#undef LOG_TAG
#define LOG_TAG "DEMO_DATA"
@@ -759,10 +765,12 @@
}
int setupDataCall(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
-{
+{
+ Parcel p;
if(argc > 2)
{
/*Warren add for t103 szzt atsvc 2022/1/5 start*/
+ char* apnType = argv[1];
int result = 0;
RLOGD("[setupDataCall] apn_count1:%d\n",apn_count);
if(apn_count > 0)
@@ -773,12 +781,36 @@
if(strcmp(apn_table[i].apntype,argv[1])==0)//it means that argv[1] apn has been created.
{
//syncRespToUsb(0);
+ Parcel urc_p;
+ p.writeInt32(0);
+ p.writeInt32(pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32(0);
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
+ urc_p.writeInt32(1);
+ urc_p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
+ urc_p.writeInt32(socket_id);
+ urc_p.writeInt32(apn_table[i].apnstatus);
+ writeStringToParcel(urc_p, apn_table[i].apn);
+ writeStringToParcel(urc_p, apn_table[i].apntype);
+ writeStringToParcel(urc_p, apn_table[i].ifaceName);
+ android::LYNQ_RIL_urcBroadcast(urc_p);
RLOGD("apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
return -1;
}
}
}
result = setupDataCallargc(argc,argv,socket_id,pRI);
+ p.writeInt32 (0);
+ p.writeInt32 (pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32 (0);
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
+ if (pRI != NULL)
+ {
+ free(pRI);
+ }
+ result = setupDataCallargc(argc,argv,socket_id,pRI);
return result;
/*Warren add for t103 szzt atsvc 2022/1/5 end*/
}
@@ -791,6 +823,20 @@
if(strcmp(apn_table[i].apntype,"default")==0)//it means that default apn has been created.
{
//syncRespToUsb(0);
+ Parcel urc_p;
+ p.writeInt32 (0);
+ p.writeInt32 (pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32 (0);
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
+ urc_p.writeInt32(1);
+ urc_p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
+ urc_p.writeInt32(socket_id);
+ urc_p.writeInt32(apn_table[i].apnstatus);
+ writeStringToParcel(urc_p, apn_table[i].apn);
+ writeStringToParcel(urc_p, apn_table[i].apntype);
+ writeStringToParcel(urc_p, apn_table[i].ifaceName);
+ android::LYNQ_RIL_urcBroadcast(urc_p);
RLOGD("apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
return -1;
}
@@ -805,6 +851,11 @@
memset(line, 27*sizeof(char), 0);
updataDataConnectState(get_default_sim_data(), true);
+ p.writeInt32 (0);
+ p.writeInt32 (pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32 (0);
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
/* no response from telecore, free pRI prevent memory leak */
if (pRI != NULL) {
free(pRI);
@@ -856,7 +907,7 @@
{
if(argc != 8)
{
- free(pRI);
+ //free(pRI);
RLOGD("the parameters numbers isn't right , so return");
return -1;
}
@@ -866,19 +917,19 @@
char* apnType = argv[2];
if(strcasecmp(apnType, "null") == 0)
{
- free(pRI);
+ //free(pRI);
RLOGD("apnType shouldn't is null");
return -1;
}
if(!isEnableLocalconf()) {
- free(pRI);
+ //free(pRI);
return enableData(true, apnType);
}
for(int i =0; i < 8; i++)
{
if(apnType != NULL && strcmp(current_cid[i].apn_type, apnType) == 0)
{
- free(pRI);
+ //free(pRI);
RLOGD("PDN existed, only return. type: %s",apnType);
return -1;
}
@@ -891,7 +942,7 @@
char* apn = argv[1];
if(strcasecmp(apn, "null") == 0)
{
- free(pRI);
+ //free(pRI);
RLOGD("apn shouldn't is null");
return -1;
}
@@ -930,7 +981,7 @@
if(getIntefaceId(apnType) == INVALID_VALUE)
{
- free(pRI);
+ //free(pRI);
RLOGE("the PDN exsited for %s type or PDN number max", apnType);
return -1;
}
@@ -962,14 +1013,14 @@
{
if(argc != 2)
{
- free(pRI);
+ //free(pRI);
RLOGD("the peremeters numbers isn't right , so return");
return -1;
}
char* apnType = argv[1];
if(!isEnableLocalconf()) {
- free(pRI);
+ //free(pRI);
return enableData(false, apnType);
}
char cid[8];
@@ -977,7 +1028,7 @@
int temp_cid = getcid(apnType);
if(temp_cid == INVALID_VALUE)
{
- free(pRI);
+ //free(pRI);
RLOGD("cid is invalid");
return -1;
}
@@ -1001,6 +1052,8 @@
int deactivateDataCall(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
{
int ret = -1;
+ bool hasDeactivate = TRUE;
+ Parcel p;
if(argc == 2)
{
char* apnType = argv[1];
@@ -1025,13 +1078,25 @@
}
}
if(!flag)
- {
+ {
+ p.writeInt32 (0);
+ p.writeInt32 (pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32 (2);//RIL_E_GENERIC_FAILURE
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
goto invalid;
+ return -1;
}
}
else
- {
+ {
+ p.writeInt32 (0);
+ p.writeInt32 (pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32 (2);//RIL_E_GENERIC_FAILURE
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
goto invalid;
+ return -1;
}
re = deactivateDataCallarc(argc,argv,socket_id,pRI);
return re;
@@ -1055,13 +1120,25 @@
}
}
if(!flag)
- {
+ {
+ p.writeInt32 (0);
+ p.writeInt32 (pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32 (2);//RIL_E_GENERIC_FAILURE
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
goto invalid;
+ return -1;
}
}
else
{
- goto invalid;
+ p.writeInt32 (0);
+ p.writeInt32 (pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32 (2);//RIL_E_GENERIC_FAILURE
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
+ goto invalid;
+ return -1;
}
/*Warren add for FAW T103 2021/11/2 end*/
char cmd[256];
@@ -1072,6 +1149,11 @@
memset(line, LEN*sizeof(char), 0);
memset(line, 27*sizeof(char), 0);
updataDataConnectState(get_default_sim_data(), false);
+ p.writeInt32 (0);
+ p.writeInt32 (pRI->pCI->requestNumber);
+ p.writeInt32(socket_id);
+ p.writeInt32 (0);//RIL_E_GENERIC_FAILURE
+ android::LYNQ_RIL_respSocket(p, (void *)pRI);
/* no response from telecore, free pRI prevent memory leak */
if (pRI != NULL) {
free(pRI);
diff --git a/src/lynq/framework/lynq-atsvc/src/data/data_gdbus.cpp b/src/lynq/framework/lynq-atsvc/src/data/data_gdbus.cpp
old mode 100644
new mode 100755
index d6e1bd3..d70490b
--- a/src/lynq/framework/lynq-atsvc/src/data/data_gdbus.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/data/data_gdbus.cpp
@@ -43,9 +43,13 @@
}
#include "common.h"
-/*Warren add for FAW T103 2021/11/2 start*/
-#include "lynq_common.h"
-/*Warren add for FAW T103 2021/11/2 end*/
+/*Warren add for t800 ril service 2021/12/25 start*/
+#include "lynq_common.h"
+#include "lynq_interface.h"
+#include <binder/Parcel.h>
+using android::Parcel;
+
+/*Warren add for t800 ril service 2021/12/25 end*/
#define LOG_TAG "DEMO_DATA_GDBUS"
#define TELEPHONY_SERVICE "mtk.telephony" /*well-known bus name */
@@ -56,6 +60,201 @@
GDBusProxy *proxy = NULL;
MTK_Data_Call_Response_v1 req_response;
MTK_Data_Call_Response_v1 urc_response;
+/*Warren add for t800 ril service 2021/12/25 start*/
+int lynq_data_management(MTK_Data_Call_Response_v1 *urc_response)
+{
+ char apn_t[LYNQ_APN_LEN_MAX] = {};
+ char apnType_t[LYNQ_APNTPYE_LEN_MAX] = {};
+ char iface_t[LYNQ_APNTPYE_LEN_MAX] = {};
+ if(!urc_response)
+ {
+ RLOGD("urc_response is null!!!");
+ return -1;
+ }
+ bool apnHasCreated = FALSE;
+ char Buf[1024] = {0};
+ bzero(Buf, 1024);
+ Parcel p;
+ if(urc_response->cId > 0)
+ {
+ if(urc_response->pdnState==PDN_DISCONNECTED)//if user disable data call,the pdn state wiil change to disconnected.
+ {
+ for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+ {
+ //printf("data test 002:count:%d\n",i);
+ RLOGD("[PDN_DISCONNECTED]apn_table[%d],apntype:%s,apnstatus:%d,,,urc_response->apnName:%s\n",i,apn_table[i].apntype,apn_table[i].apnstatus,urc_response->apnType);
+ if((strcmp(apn_table[i].apntype,urc_response->apnType)==0)&&(apn_table[i].apnstatus==0))
+ {
+ bzero(apn_table[i].apn,LYNQ_APN_LEN_MAX);
+ bzero(apn_table[i].apntype,LYNQ_APNTPYE_LEN_MAX);
+ apn_table[i].used=0;
+ apn_table[i].netId=0;
+ apn_count--;
+ p.writeInt32 (1);
+ p.writeInt32 (LYNQ_URC_DATA_CALL_STATUS_IND);
+ p.writeInt32 (0);//temporary plan
+ p.writeInt32(PDN_DISCONNECTED);
+ android::LYNQ_RIL_urcBroadcast(p);
+ RLOGD("removed apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
+ //printf("removed apn:%s,apntype:%s\n",apn_table[i].apn,apn_table[i].apntype);
+ break;
+ }
+ }
+ for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+ {
+ RLOGD("for apn_table[%d].apn:%s,apntype:%s,used:%d,apnstatus:%d\n",i,apn_table[i].apn,
+ apn_table[i].apntype,apn_table[i].used,apn_table[i].apnstatus);
+ }
+ }
+ else
+ {
+ /*if the pdn status change,tele-fwk will send pdn status to me.
+ **The reason for the status change may be that enable data call,
+ **the user disable the data call, and the signal is interrupted.
+ */
+ if(apn_count==0)//first new apn has created
+ {
+ RLOGD("first apn_count:%d\n",apn_count);
+ memcpy(apn_table[apn_count].apn,urc_response->apnName,strlen(urc_response->apnName)+1);
+ memcpy(apn_table[apn_count].apntype,urc_response->apnType,strlen(urc_response->apnType)+1);
+ memcpy(apn_table[apn_count].ifaceName,urc_response->ifname,strlen(urc_response->ifname)+1);
+ //printf("apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",apn_count,apn_table[apn_count].apn,urc_response->apnName);
+ RLOGD("apn_table[%d].apn:%s,apntype:%s,,,urc_response->apnName:%s,urc_response->apntype:%s\n",apn_count,apn_table[apn_count].apn,apn_table[apn_count].apntype,urc_response->apnName,urc_response->apnType);
+ apn_table[apn_count].apnstatus=1;
+ apn_table[apn_count].used=1;
+ apn_table[apn_count].netId=urc_response->netId;
+ apn_count++;
+ p.writeInt32(1);
+ p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
+ p.writeInt32(0);//temporary plan
+ p.writeInt32(PDN_CONNECTED);
+ writeStringToParcel(p,urc_response->apnName);
+ writeStringToParcel(p,urc_response->apnType);
+ writeStringToParcel(p,urc_response->ifname);
+ android::LYNQ_RIL_urcBroadcast(p);
+ }
+ else
+ {
+ for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+ {
+ RLOGD("for apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",i,apn_table[i].apn,urc_response->apnName);
+ if(strcmp(apn_table[i].apn,urc_response->apnName)==0)
+ {
+ RLOGD("This apn has been created!!!");
+ printf("This apn has been created!!!\n");
+ apnHasCreated = TRUE;
+ if(apn_table[i].netId!=urc_response->netId)
+ {
+ apn_table[i].netId=urc_response->netId;
+ memcpy(iface_t,apn_table[i].ifaceName,strlen(apn_table[i].ifaceName)+1);
+ memcpy(apnType_t,apn_table[i].apntype,strlen(apn_table[i].apntype)+1);
+ memcpy(apn_t,apn_table[i].apn,strlen(apn_table[i].apn)+1);
+ /*send urc to client
+ send apn_t,apnType_t,urc_response->pdnState,iface_t to client
+ */
+ p.writeInt32(1);
+ p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
+ p.writeInt32(0);//temporary plan
+ p.writeInt32(urc_response->pdnState);
+ writeStringToParcel(p,apn_t);
+ writeStringToParcel(p,apnType_t);
+ writeStringToParcel(p,iface_t);
+ android::LYNQ_RIL_urcBroadcast(p);
+ //lynq_data_callback(apn_t,apnType_t,urc_response->pdnState,iface_t);
+ //sprintf(Buf,"+LAPNST:%s,%s,%d,%s\n",apn_table[i].apn,apn_table[i].apntype,urc_response->pdnState,urc_response->ifname);
+ //printf("eBuf:%s\n",Buf);
+ //int n = write(ttyGS3_fd,Buf,strlen(Buf));
+ //if(n<0)
+ //{
+ // perror("lynq resp write:");
+ //}
+ }
+ break;
+ }
+ }
+ if(!apnHasCreated)//new apn has created
+ {
+ bool getLable = FALSE;
+ int lable = 0;
+ for(lable;lable < LYNQ_APN_CHANNEL_MAX;lable++)
+ {
+ if(apn_table[lable].used==0)
+ {
+ getLable = TRUE;
+ break;
+ }
+ }
+ if(getLable)
+ {
+ RLOGD("[getLable]:label==%d\n",lable);
+ memcpy(apn_table[lable].apn,urc_response->apnName,strlen(urc_response->apnName)+1);
+ memcpy(apn_table[lable].apntype,urc_response->apnType,strlen(urc_response->apnType)+1);
+ memcpy(apn_table[lable].ifaceName,urc_response->ifname,strlen(urc_response->ifname)+1);
+ RLOGD("new apn_table[%d].apn:%s,apntype:%s,,,urc_response->apnName:%s,urc_response->apntype:%s\n",lable,apn_table[lable].apn,apn_table[lable].apntype,urc_response->apnName,urc_response->apnType);
+ apn_table[lable].apnstatus=1;
+ apn_table[lable].used=1;
+ apn_table[lable].netId=urc_response->netId;
+ apn_count++;
+ p.writeInt32(1);
+ p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
+ p.writeInt32(0);//temporary plan
+ p.writeInt32(urc_response->pdnState);
+ writeStringToParcel(p,urc_response->apnName);
+ writeStringToParcel(p,urc_response->apnType);
+ writeStringToParcel(p,urc_response->ifname);
+ android::LYNQ_RIL_urcBroadcast(p);
+ }
+ else
+ {
+ RLOGD("unkown error");
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ apnHasCreated = FALSE;
+ RLOGD("[cid < 0] apn_count:%d\n",apn_count);
+ if(apn_count>0)
+ {
+ int i = 0;
+ for(i;i < LYNQ_APN_CHANNEL_MAX;i++)
+ {
+ RLOGD("[cid<0]apn_table[%d].apntype:%s,,,,urc_response->apntype:%s\n",i,apn_table[i].apntype,urc_response->apnType);
+ if(strcmp(apn_table[i].apntype,urc_response->apnType)==0)
+ {
+ RLOGD("apntype:%s PDN status has changed!!!\n",urc_response->apnType);
+ apnHasCreated = TRUE;
+ break;
+ }
+ }
+ if(apnHasCreated)
+ {
+ //sprintf(Buf,"+LAPNST:%s,%s,%d\n",apn_table[i].apn,apn_table[i].apntype,urc_response->pdnState);
+ //printf("Buf:%s\n",Buf);
+ memcpy(iface_t,apn_table[i].ifaceName,strlen(apn_table[i].ifaceName)+1);
+ memcpy(apnType_t,apn_table[i].apntype,strlen(apn_table[i].apntype)+1);
+ memcpy(apn_t,apn_table[i].apn,strlen(apn_table[i].apn)+1);
+ p.writeInt32(1);
+ p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
+ p.writeInt32(0);//temporary plan
+ p.writeInt32(urc_response->pdnState);
+ writeStringToParcel(p,apn_t);
+ writeStringToParcel(p,apnType_t);
+ writeStringToParcel(p,iface_t);
+ android::LYNQ_RIL_urcBroadcast(p);
+ //int n = write(ttyGS3_fd,Buf,strlen(Buf));
+ //if(n<0)
+ //{
+ // perror("lynq resp write:");
+ //}
+ }
+ }
+ }
+ return 0;
+}
+/*Warren add for t800 ril service 2021/12/25 end*/
void freeMem(MTK_Data_Call_Response_v1 response)
{
@@ -265,141 +464,141 @@
gpointer user_data)
{
bool apnHasCreated = FALSE;
- char Buf[1024] = {0};
- bzero(Buf, 1024);
+ char Buf[1024] = {0};
+ bzero(Buf, 1024);
RLOGD("signal_name: %s", signal_name);
freeMem(urc_response);
parse(parameters, &urc_response);
dumpResponse(&urc_response);
- /*Warren add for FAW T103 2021/11/2 start*/
+ /*Warren add for FAW T103 2021/11/2 start*/
if(urc_response.cId > 0)
{
- if(urc_response.pdnState==PDN_DISCONNECTED)//if user disable data call,the pdn state wiil change to disconnected.
- {
- printf("data test 001\n");
- for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
- {
- printf("data test 002:count:%d\n",i);
- printf("[PDN_DISCONNECTED]apn_table[%d],apntype:%s,apnstatus:%d,,,urc_response.apnName:%s\n",i,apn_table[i].apntype,apn_table[i].apnstatus,urc_response.apnType);
- if((strcmp(apn_table[i].apntype,urc_response.apnType)==0)&&(apn_table[i].apnstatus==0))
- {
- bzero(apn_table[i].apn,LYNQ_APN_LEN_MAX);
- bzero(apn_table[i].apntype,LYNQ_APNTPYE_LEN_MAX);
- apn_table[i].used=0;
- apn_table[i].netId=0;
- apn_count--;
- //int n = write(ttyGS3_fd,urc_response.ifname,strlen(urc_response.ifname));
- int n = write(ttyGS3_fd,"OK\n",3);
+ if(urc_response.pdnState==PDN_DISCONNECTED)//if user disable data call,the pdn state wiil change to disconnected.
+ {
+ printf("data test 001\n");
+ for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+ {
+ printf("data test 002:count:%d\n",i);
+ printf("[PDN_DISCONNECTED]apn_table[%d],apntype:%s,apnstatus:%d,,,urc_response.apnName:%s\n",i,apn_table[i].apntype,apn_table[i].apnstatus,urc_response.apnType);
+ if((strcmp(apn_table[i].apntype,urc_response.apnType)==0)&&(apn_table[i].apnstatus==0))
+ {
+ bzero(apn_table[i].apn,LYNQ_APN_LEN_MAX);
+ bzero(apn_table[i].apntype,LYNQ_APNTPYE_LEN_MAX);
+ apn_table[i].used=0;
+ apn_table[i].netId=0;
+ apn_count--;
+ //int n = write(ttyGS3_fd,urc_response.ifname,strlen(urc_response.ifname));
+ int n = write(ttyGS3_fd,"OK\n",3);
if(n<0)
{
perror("lynq resp write:");
- }
- RLOGD("removed apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
- printf("removed apn:%s,apntype:%s\n",apn_table[i].apn,apn_table[i].apntype);
- break;
- }
- }
- //test
- for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
- {
- printf("for apn_table[%d].apn:%s,apntype:%s,used:%d,apnstatus:%d\n",i,apn_table[i].apn,
- apn_table[i].apntype,apn_table[i].used,apn_table[i].apnstatus);
- }
- }
- else
- {
- /*if the pdn status change,tele-fwk will send pdn status to me.
- **The reason for the status change may be that enable data call,
- **the user disable the data call, and the signal is interrupted.
- */
+ }
+ RLOGD("removed apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
+ printf("removed apn:%s,apntype:%s\n",apn_table[i].apn,apn_table[i].apntype);
+ break;
+ }
+ }
+ //test
+ for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+ {
+ printf("for apn_table[%d].apn:%s,apntype:%s,used:%d,apnstatus:%d\n",i,apn_table[i].apn,
+ apn_table[i].apntype,apn_table[i].used,apn_table[i].apnstatus);
+ }
+ }
+ else
+ {
+ /*if the pdn status change,tele-fwk will send pdn status to me.
+ **The reason for the status change may be that enable data call,
+ **the user disable the data call, and the signal is interrupted.
+ */
if(apn_count==0)//first new apn has created
{
- printf("first apn_count:%d\n",apn_count);
+ printf("first apn_count:%d\n",apn_count);
memcpy(apn_table[apn_count].apn,urc_response.apnName,strlen(urc_response.apnName));
- memcpy(apn_table[apn_count].apntype,urc_response.apnType,strlen(urc_response.apnType));
- //printf("apn_table[%d].apn:%s,,,,urc_response.apnName:%s\n",apn_count,apn_table[apn_count].apn,urc_response.apnName);
- printf("apn_table[%d].apn:%s,apntype:%s,,,urc_response.apnName:%s,urc_response.apntype:%s\n",apn_count,apn_table[apn_count].apn,apn_table[apn_count].apntype,urc_response.apnName,urc_response.apnType);
- apn_table[apn_count].apnstatus=1;
- apn_table[apn_count].used=1;
- apn_table[apn_count].netId=urc_response.netId;
+ memcpy(apn_table[apn_count].apntype,urc_response.apnType,strlen(urc_response.apnType));
+ //printf("apn_table[%d].apn:%s,,,,urc_response.apnName:%s\n",apn_count,apn_table[apn_count].apn,urc_response.apnName);
+ printf("apn_table[%d].apn:%s,apntype:%s,,,urc_response.apnName:%s,urc_response.apntype:%s\n",apn_count,apn_table[apn_count].apn,apn_table[apn_count].apntype,urc_response.apnName,urc_response.apnType);
+ apn_table[apn_count].apnstatus=1;
+ apn_table[apn_count].used=1;
+ apn_table[apn_count].netId=urc_response.netId;
apn_count++;
- lynqUpdateApnStatus(urc_response.apnName,urc_response.apnType,urc_response.pdnState,urc_response.ifname);
+ lynqUpdateApnStatus(urc_response.apnName,urc_response.apnType,urc_response.pdnState,urc_response.ifname);
}
else
{
for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
{
- printf("for apn_table[%d].apn:%s,,,,urc_response.apnName:%s\n",i,apn_table[i].apn,urc_response.apnName);
+ printf("for apn_table[%d].apn:%s,,,,urc_response.apnName:%s\n",i,apn_table[i].apn,urc_response.apnName);
if(strcmp(apn_table[i].apn,urc_response.apnName)==0)
{
RLOGD("This apn has been created!!!");
- printf("This apn has been created!!!\n");
+ printf("This apn has been created!!!\n");
apnHasCreated = TRUE;
- if(apn_table[i].netId!=urc_response.netId)
- {
- apn_table[i].netId = urc_response.netId;
- lynqUpdateApnStatus(apn_table[i].apn,apn_table[i].apntype,urc_response.pdnState,urc_response.ifname);
- }
- break;
+ if(apn_table[i].netId!=urc_response.netId)
+ {
+ apn_table[i].netId = urc_response.netId;
+ lynqUpdateApnStatus(apn_table[i].apn,apn_table[i].apntype,urc_response.pdnState,urc_response.ifname);
+ }
+ break;
}
}
if(!apnHasCreated)//new apn has created
{
- bool getLable = FALSE;
- int lable = 0;
- for(lable;lable < LYNQ_APN_CHANNEL_MAX;lable++)
- {
- if(apn_table[lable].used==0)
- {
- getLable = TRUE;
- break;
- }
- }
- if(getLable)
- {
- printf("[getLable]:label==%d\n",lable);
+ bool getLable = FALSE;
+ int lable = 0;
+ for(lable;lable < LYNQ_APN_CHANNEL_MAX;lable++)
+ {
+ if(apn_table[lable].used==0)
+ {
+ getLable = TRUE;
+ break;
+ }
+ }
+ if(getLable)
+ {
+ printf("[getLable]:label==%d\n",lable);
memcpy(apn_table[lable].apn,urc_response.apnName,strlen(urc_response.apnName));
- memcpy(apn_table[lable].apntype,urc_response.apnType,strlen(urc_response.apnType));
- printf("new apn_table[%d].apn:%s,apntype:%s,,,urc_response.apnName:%s,urc_response.apntype:%s\n",lable,apn_table[lable].apn,apn_table[lable].apntype,urc_response.apnName,urc_response.apnType);
- apn_table[lable].apnstatus=1;
- apn_table[lable].used=1;
- apn_table[lable].netId=urc_response.netId;
+ memcpy(apn_table[lable].apntype,urc_response.apnType,strlen(urc_response.apnType));
+ printf("new apn_table[%d].apn:%s,apntype:%s,,,urc_response.apnName:%s,urc_response.apntype:%s\n",lable,apn_table[lable].apn,apn_table[lable].apntype,urc_response.apnName,urc_response.apnType);
+ apn_table[lable].apnstatus=1;
+ apn_table[lable].used=1;
+ apn_table[lable].netId=urc_response.netId;
apn_count++;
- lynqUpdateApnStatus(urc_response.apnName,urc_response.apnType,urc_response.pdnState,urc_response.ifname);
- }
- else
- {
- RLOGD("unkown error");
- }
+ lynqUpdateApnStatus(urc_response.apnName,urc_response.apnType,urc_response.pdnState,urc_response.ifname);
+ }
+ else
+ {
+ RLOGD("unkown error");
+ }
}
}
- }
+ }
}
else
{
apnHasCreated = FALSE;
- printf("apn_count:%d\n",apn_count);
+ printf("apn_count:%d\n",apn_count);
if(apn_count>0)
{
int i = 0;
for(i;i < LYNQ_APN_CHANNEL_MAX;i++)
{
- printf("[cid<0]apn_table[%d].apntype:%s,,,,urc_response.apntype:%s\n",i,apn_table[i].apntype,urc_response.apnType);
+ printf("[cid<0]apn_table[%d].apntype:%s,,,,urc_response.apntype:%s\n",i,apn_table[i].apntype,urc_response.apnType);
if(strcmp(apn_table[i].apntype,urc_response.apnType)==0)
{
RLOGD("apntype:%s PDN status has changed!!!",urc_response.apnType);
- printf("apntype:%s PDN status has changed!!!\n",urc_response.apnType);
+ printf("apntype:%s PDN status has changed!!!\n",urc_response.apnType);
apnHasCreated = TRUE;
- break;
+ break;
}
}
if(apnHasCreated)
{
- lynqUpdateApnStatus(apn_table[i].apn,apn_table[i].apntype,urc_response.pdnState,NULL);
+ lynqUpdateApnStatus(apn_table[i].apn,apn_table[i].apntype,urc_response.pdnState,NULL);
}
}
}
- /*Warren add for FAW T103 2021/11/2 end*/
+ /*Warren add for FAW T103 2021/11/2 end*/
if(g_strcmp0(signal_name, "default") == 0)
{
if(urc_response.pdnState == RIL_Data_Call_PdnState::PDN_DISCONNECTED) {
diff --git a/src/lynq/framework/lynq-atsvc/src/em/em.cpp b/src/lynq/framework/lynq-atsvc/src/em/em.cpp
old mode 100644
new mode 100755
index 7e9609f..eb0cf97
--- a/src/lynq/framework/lynq-atsvc/src/em/em.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/em/em.cpp
@@ -131,6 +131,32 @@
{"ANRITSU",0,NULL,1,1},
{"CMW500",0,NULL,1,1},
};
+/*T800->T103*/
+em_arry_t modem_iot[] = {
+ {"General",0,NULL,1,1},
+ {"NSN",0,NULL,1,1},
+ {"DCM CB",0,NULL,1,1},
+ {"ERICSSON",0,NULL,1,1},
+};
+
+em_arry_t modem_operator[] = {
+ {"MS_USIM_COMPATIPLE",0,NULL,1,1},
+ {"ATNT",0,NULL,1,1},
+ {"TMOBILE",0,NULL,1,1},
+ {"ORANGE",0,NULL,1,1},
+ {"VODAFONE",0,NULL,1,1},
+ {"O2",0,NULL,1,1},
+ {"TELEFONICA",0,NULL,1,1},
+ {"DOCOMO",0,NULL,1,1},
+ {"SOFTBANK",0,NULL,1,1},
+ {"VIVO",0,NULL,1,1},
+ {"CLARO",0,NULL,1,1},
+ {"TIM",0,NULL,1,1},
+ {"CU",0,NULL,1,1},
+ {"KDDI",0,NULL,1,1},
+ {"CT IR LAB TEST",0,NULL,1,1},
+};
+/*T800->T103*/
em_arry_t modem_C2K_Test_MODEM[] = {
{ "NONE", 0, NULL, 1, 1 },
{ "SPIRENT", 0,NULL, 1, 1 },
diff --git a/src/lynq/framework/lynq-atsvc/src/em/em_antennatest.cpp b/src/lynq/framework/lynq-atsvc/src/em/em_antennatest.cpp
old mode 100644
new mode 100755
index 87c8380..ab1fefe
--- a/src/lynq/framework/lynq-atsvc/src/em/em_antennatest.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/em/em_antennatest.cpp
@@ -60,6 +60,9 @@
static const int MSG_SET_ANTENNA_EGMC_4G = 6;
static const int MSG_INIT_ANTENNA_EGMC_4G = 7;
static const int MODE_INDEX_BASE_3G = 10;
+/*T800->T103*/
+static const int MODE_INDEX_BASE_2G = 20;
+/*T800->T103*/
static const int MODE_EPCM_VALID = 0xFF;
static const int CELL_2RX_LENGTH = 2;
static const int CELL_4RX_LENGTH = 4;
diff --git a/src/lynq/framework/lynq-atsvc/src/em/em_modemtest.cpp b/src/lynq/framework/lynq-atsvc/src/em/em_modemtest.cpp
old mode 100644
new mode 100755
index 38b9497..ea50e4b
--- a/src/lynq/framework/lynq-atsvc/src/em/em_modemtest.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/em/em_modemtest.cpp
@@ -40,6 +40,10 @@
#include <unistd.h>
#include <math.h>
#include <string>
+/*T800->T103*/
+#include <thread>
+#include <chrono>
+/*T800->T103*/
#include <vector>
#include "Phone_utils.h"
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
old mode 100644
new mode 100755
index a9af830..834059d
--- a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
@@ -15,7 +15,9 @@
#include "common.h"
#include <pthread.h>
#define USB_BUF_SIZE 8192
-
+#include <liblog/lynq_deflog.h>
+#include <sys/time.h>
+#include "Phone_utils.h"
usb_cmd_t Usb_commands[] = {
#include "lynq_commands.h"
};
@@ -23,6 +25,8 @@
usb_at_transfer_t Usb_transfer_commands[] = {
#include "lynq_at_transfer_table.h"
};
+#undef LOG_TAG
+#define LOG_TAG "LYNQ_COMMON"
extern apn_table_t apn_table[LYNQ_APN_CHANNEL_MAX] = {};
extern int apn_count = 0;
@@ -152,6 +156,8 @@
string = token;
token = strtok(NULL, "=?");
}
+ if(string == NULL)
+ return -1;
parameter = strtok(string, ",");
int i = 3;
while (parameter != NULL)
@@ -171,6 +177,8 @@
string = token;
token = strtok(NULL, "=");
}
+ if(string == NULL)
+ return -1;
parameter = strtok(string, ",");
int i = 3;
while (parameter != NULL)
@@ -191,6 +199,8 @@
token = strtok(NULL, "?");
}
parameter = strtok(string, ",");
+ if(string == NULL)
+ return -1;
int i = 3;
while (parameter != NULL)
{
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_common.h b/src/lynq/framework/lynq-atsvc/src/lynq_common.h
old mode 100644
new mode 100755
index d962324..f44d427
--- a/src/lynq/framework/lynq-atsvc/src/lynq_common.h
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_common.h
@@ -8,6 +8,14 @@
**=============================================================================*/
#ifndef LYNQ_COMMON
#define LYNQ_COMMON
+#include <stdlib.h>
+#include <stdio.h>
+#include <log/log.h>
+#include <stdint.h>
+#include <unistd.h>
+#include "common.h"
+#include <stateManager/stateManager.h>
+#include <liblog/lynq_deflog.h>
# include <pthread.h>
#define LYNQ_GOTO_AT 1
@@ -24,6 +32,7 @@
#define LYNQ_APNTPYE_LEN_MAX 50
#define LYNQ_APN_CHANNEL_MAX 10
#define LYNQ_AT_LEN_MAX 20
+#define LYNQ_EVENT_WAIT_TIME_MAX 25 //m
#define LYNQ_VERSION 8500
#define LYNQ_REQUEST_CGMI (LYNQ_VERSION+1)
@@ -63,6 +72,7 @@
{
char apn[LYNQ_APN_LEN_MAX];
char apntype[LYNQ_APNTPYE_LEN_MAX];
+ char ifaceName[LYNQ_APNTPYE_LEN_MAX];
int netId;
int used;//0:not use,1:used.
int apnstatus;//1:has enable;0:need disable.
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_interface.h b/src/lynq/framework/lynq-atsvc/src/lynq_interface.h
new file mode 100755
index 0000000..f1d0f7c
--- /dev/null
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_interface.h
@@ -0,0 +1,13 @@
+#define LYNQ_REQUEST_VENDOR_BASE 8000
+#define LYNQ_URC_VENDOR_BASE 9000
+#define LYNQ_AT_SNED (LYNQ_REQUEST_VENDOR_BASE +1)
+#define LYNQ_URC_CALL_STATUS_IND (LYNQ_URC_VENDOR_BASE+1)
+#define LYNQ_URC_DATA_STATUS_IND (LYNQ_URC_VENDOR_BASE+2)
+#define LYNQ_URC_DATA_CALL_STATUS_IND (LYNQ_URC_VENDOR_BASE+3)
+#define LYNQ_AUTO_ANSWER_CALL (LYNQ_REQUEST_VENDOR_BASE +2)
+#define LYNQ_REQUEST_SET_DTMF_VOLUME (LYNQ_REQUEST_VENDOR_BASE +3)
+typedef struct{
+ int request;
+ int waitTime;
+ char * name;
+}lynq_sp_command_t;
\ No newline at end of file
diff --git a/src/lynq/framework/lynq-atsvc/src/main.cpp b/src/lynq/framework/lynq-atsvc/src/main.cpp
old mode 100644
new mode 100755
index d956ef6..7aeb69e
--- a/src/lynq/framework/lynq-atsvc/src/main.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/main.cpp
@@ -140,9 +140,9 @@
}
android::RIL_startEventLoop();
- android::startATCILoop();
- android::startPMLoop();
- android::startWakupLoop();
+ //android::startATCILoop();
+ //android::startPMLoop();
+ //android::startWakupLoop();
rilInit =
(const RIL_RadioFunctions *(*)(const struct RIL_Env *, int, char **))
diff --git a/src/lynq/framework/lynq-atsvc/src/ril.cpp b/src/lynq/framework/lynq-atsvc/src/ril.cpp
old mode 100644
new mode 100755
index ae1afc2..14a0917
--- a/src/lynq/framework/lynq-atsvc/src/ril.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/ril.cpp
@@ -70,6 +70,12 @@
#include "Phone_utils.h"
#include "utils.h"
#include "Radio_capability_switch_util.h"
+
+/*Warren add for t800 RIL service 2021_12_10 start*/
+#include <sys/epoll.h>
+#include "lynq_interface.h"
+/*Warren add for t800 RIL service 2021_12_10 end*/
+
/*Warren add for FAW platform 2021/9/28 start*/
#include "lynq_common.h"
#include "lynq_at.h"
@@ -78,6 +84,19 @@
#include "lynq_rndis.h"
/*Warren add for FAW platform 2021/9/28 end*/
+
+/*Warren add for t800 RIL service 2021_12_10 start*/
+#define LYNQ_SOCKET_ENVNT_FD_MAX 100
+#define LYNQ_SERVICE_PORT 8088
+#define LYNQ_BRODCAST_PORT 8086
+#define LYNQ_SOCKET_BUFFER (1024*8+sizeof(int)*3+10)
+//int LYNQ_RIL_respSocket(Parcel &p,RIL_Token t);
+//int LYNQ_RIL_urcBroadcast(Parcel &p);
+
+int lynq_urc_socket_fd = 0;
+struct sockaddr_in urc_broadcast_addr;
+/*Warren add for t800 RIL service 2021_12_10 end*/
+
#define LOG_TAG "DEMO_RIL"
@@ -2770,8 +2789,11 @@
}
if (responselen >= sizeof (RIL_SignalStrength_v5)) {
+#ifdef TELEMATIC_5G_SUPPORT
+ RIL_SignalStrength_v14 *p_cur = ((RIL_SignalStrength_v14 *) response);
+#else
RIL_SignalStrength_v10 *p_cur = ((RIL_SignalStrength_v10 *) response);
-
+#endif
p.writeInt32(p_cur->GW_SignalStrength.signalStrength);
p.writeInt32(p_cur->GW_SignalStrength.bitErrorRate);
p.writeInt32(p_cur->GW_SignalStrength.timingAdvance);
@@ -2793,8 +2815,54 @@
p.writeInt32(p_cur->WCDMA_SignalStrength.bitErrorRate);
p.writeInt32(p_cur->WCDMA_SignalStrength.rscp);
p.writeInt32(p_cur->WCDMA_SignalStrength.ecno);
-
+#ifdef TELEMATIC_5G_SUPPORT
+ p.writeInt32(p_cur->NR_SignalStrength.ssRsrp);
+ p.writeInt32(p_cur->NR_SignalStrength.ssRsrq);
+ p.writeInt32(p_cur->NR_SignalStrength.ssSinr);
+ p.writeInt32(p_cur->NR_SignalStrength.csiRsrp);
+ p.writeInt32(p_cur->NR_SignalStrength.csiRsrq);
+ p.writeInt32(p_cur->NR_SignalStrength.csiSinr);
+#endif
startResponse;
+
+#ifdef TELEMATIC_5G_SUPPORT
+ appendPrintBuf("%s[GW_SS.signalStrength=%d,GW_SS.bitErrorRate=%d,GW_SS.timingAdvance=%d,\
+ CDMA_SS.dbm=%d,CDMA_SS.ecio=%d,\
+ EVDO_SS.dbm=%d,EVDO_SS.ecio=%d,EVDO_SS.signalNoiseRatio=%d,\
+ LTE_SS.signalStrength=%d,LTE_SS.rsrp=%d,LTE_SS.rsrq=%d,LTE_SS.rssnr=%d,LTE_SS.cqi=%d,LTE_SS.timingAdvance=%d,\
+ TDSCDMA_SS.signalStrength=%d,TDSCDMA_SS.bitErrorRate=%d,TDSCDMA_SS.rscp=%d,\
+ WCDMA_SS.signalStrength=%d,WCDMA_SS.bitErrorRate=%d,WCDMA_SS.rscp=%d,WCDMA_SS.ecno=%d,\
+ NR_SignalStrength.ssRsrp=%d,NR_SignalStrength.ssRsrq=%d,NR_SignalStrength.ssSinr=%d,\
+ NR_SignalStrength.csiRsrp=%d,NR_SignalStrength.csiRsrq=%d,NR_SignalStrength.csiSinr=%d]",
+ printBuf,
+ p_cur->GW_SignalStrength.signalStrength,
+ p_cur->GW_SignalStrength.bitErrorRate,
+ p_cur->GW_SignalStrength.timingAdvance,
+ p_cur->CDMA_SignalStrength.dbm,
+ p_cur->CDMA_SignalStrength.ecio,
+ p_cur->EVDO_SignalStrength.dbm,
+ p_cur->EVDO_SignalStrength.ecio,
+ p_cur->EVDO_SignalStrength.signalNoiseRatio,
+ p_cur->LTE_SignalStrength.signalStrength,
+ p_cur->LTE_SignalStrength.rsrp,
+ p_cur->LTE_SignalStrength.rsrq,
+ p_cur->LTE_SignalStrength.rssnr,
+ p_cur->LTE_SignalStrength.cqi,
+ p_cur->LTE_SignalStrength.timingAdvance,
+ p_cur->TD_SCDMA_SignalStrength.signalStrength,
+ p_cur->TD_SCDMA_SignalStrength.bitErrorRate,
+ p_cur->TD_SCDMA_SignalStrength.rscp,
+ p_cur->WCDMA_SignalStrength.signalStrength,
+ p_cur->WCDMA_SignalStrength.bitErrorRate,
+ p_cur->WCDMA_SignalStrength.rscp,
+ p_cur->WCDMA_SignalStrength.ecno,
+ p_cur->NR_SignalStrength.ssRsrp,
+ p_cur->NR_SignalStrength.ssRsrq,
+ p_cur->NR_SignalStrength.ssSinr,
+ p_cur->NR_SignalStrength.csiRsrp,
+ p_cur->NR_SignalStrength.csiRsrq,
+ p_cur->NR_SignalStrength.csiSinr);
+#else
appendPrintBuf("%s[GW_SS.signalStrength=%d,GW_SS.bitErrorRate=%d,GW_SS.timingAdvance=%d,\
CDMA_SS.dbm=%d,CDMA_SS.ecio=%d,\
EVDO_SS.dbm=%d,EVDO_SS.ecio=%d,EVDO_SS.signalNoiseRatio=%d,\
@@ -2823,8 +2891,9 @@
p_cur->WCDMA_SignalStrength.bitErrorRate,
p_cur->WCDMA_SignalStrength.rscp,
p_cur->WCDMA_SignalStrength.ecno);
+
+#endif
closeResponse;
-
if (signal_strength_printf != 0) {
printf(
"\n\n[QUERY][SIGNAL]\nsignalStrength=%d,\nbitErrorRate=%d,\nLTE_SS.signalStrength=%d,\n"
@@ -3100,6 +3169,39 @@
p.writeInt32(p_cur->CellInfo.tdscdma.cellIdentityTdscdma.cid);
p.writeInt32(p_cur->CellInfo.tdscdma.cellIdentityTdscdma.cpid);
p.writeInt32(p_cur->CellInfo.tdscdma.signalStrengthTdscdma.rscp);
+#ifdef TELEMATIC_5G_SUPPORT
+ case RIL_CELL_INFO_TYPE_NR: {
+ appendPrintBuf("%s NR id: mcc=%d,mnc=%d,nci=%d,pci=%d,tac=%d", printBuf,
+ p_cur->CellInfo.nr.cellidentity.mcc,
+ p_cur->CellInfo.nr.cellidentity.mnc,
+ p_cur->CellInfo.nr.cellidentity.nci,
+ p_cur->CellInfo.nr.cellidentity.pci,
+ p_cur->CellInfo.nr.cellidentity.tac,
+ p_cur->CellInfo.nr.cellidentity.nrarfcn);
+
+ p.writeInt32(p_cur->CellInfo.nr.cellidentity.mcc);
+ p.writeInt32(p_cur->CellInfo.nr.cellidentity.mnc);
+ p.writeInt32(p_cur->CellInfo.nr.cellidentity.nci);
+ p.writeInt32(p_cur->CellInfo.nr.cellidentity.pci);
+ p.writeInt32(p_cur->CellInfo.nr.cellidentity.tac);
+ p.writeInt32(p_cur->CellInfo.nr.cellidentity.nrarfcn);
+
+ appendPrintBuf("%s NRSS: ssRsrp=%d,ssRsrq=%d,ssSinr=%d,csiRsrp=%d,csiRsrq=%d,csiSinr=%d", printBuf,
+ p_cur->CellInfo.nr.signalStrength.ssRsrp,
+ p_cur->CellInfo.nr.signalStrength.ssRsrq,
+ p_cur->CellInfo.nr.signalStrength.ssSinr,
+ p_cur->CellInfo.nr.signalStrength.csiRsrp,
+ p_cur->CellInfo.nr.signalStrength.csiRsrq,
+ p_cur->CellInfo.nr.signalStrength.csiSinr);
+ p.writeInt32(p_cur->CellInfo.nr.signalStrength.ssRsrp);
+ p.writeInt32(p_cur->CellInfo.nr.signalStrength.ssRsrq);
+ p.writeInt32(p_cur->CellInfo.nr.signalStrength.ssSinr);
+ p.writeInt32(p_cur->CellInfo.nr.signalStrength.csiRsrp);
+ p.writeInt32(p_cur->CellInfo.nr.signalStrength.csiRsrq);
+ p.writeInt32(p_cur->CellInfo.nr.signalStrength.csiSinr);
+ break;
+ }
+#endif
break;
}
}
@@ -3752,6 +3854,9 @@
p.writeInt32 (RESPONSE_SOLICITED);
p.writeInt32 (pRI->pCI->requestNumber);
+ /*warren add for t800 ril servie 2021/12/15 start*/
+ p.writeInt32(socket_id);
+ /*warren add for t800 ril servie 2021/12/15 end*/
errorOffset = p.dataPosition();
p.writeInt32 (e);
@@ -3826,6 +3931,10 @@
tempVal == RADIO_TECH_EVDO_A ||
tempVal == RADIO_TECH_EVDO_B) { //3G
sprintf(respStr,"%s radioTech is 3G!",respStr);
+#ifdef TELEMATIC_5G_SUPPORT
+ } else if(tempVal == RADIO_TECH_NR) { //5G
+ sprintf(respStr,"%s radioTech is 5G!",respStr);
+#endif
} else { //unknown
sprintf(respStr,"%s radioTech is unkown!",respStr);
}
@@ -3978,6 +4087,7 @@
RLOGD ("RIL onRequestComplete: Command channel closed");
}
#endif
+ LYNQ_RIL_respSocket(p,t);
sendResponse(p, socket_id);
}
#if ATCI_ENABLE_RESPONSE
@@ -4271,7 +4381,9 @@
p.writeInt32 (RESPONSE_UNSOLICITED);
p.writeInt32 (unsolResponse);
-
+ /*Warren add for t800 ril service 2021/12/16 start*/
+ p.writeInt32 (soc_id);
+ /*Warren add for t800 ril service 2021/12/16 end*/
if (unsolResponse >= RIL_UNSOL_VENDOR_BASE) {
UnsolResponseInfo* unsolRspInof = find_mtk_unsol_command(unsolResponse);
if(unsolRspInof == NULL){
@@ -4312,13 +4424,15 @@
#if VDBG
RLOGI("%s UNSOLICITED: %s length:%d", rilSocketIdToString(soc_id), requestToString(unsolResponse), p.dataSize());
#endif
+ /*Warren add for t800 ril service 2021/12/16 start*/
+ ret = LYNQ_RIL_urcBroadcast(p);
+ /*Warren add for t800 ril service 2021/12/16 end*/
ret = sendResponse(p, soc_id);
-
//unsol trigger other things.
switch(unsolResponse) {
- case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED:
- ARspRequest(RIL_REQUEST_GET_CURRENT_CALLS, soc_id);
- break;
+ // case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED:
+ // ARspRequest(RIL_REQUEST_GET_CURRENT_CALLS, soc_id);
+ // break;
case RIL_UNSOL_CALL_RING:
callRing(soc_id);
break;
@@ -4333,6 +4447,11 @@
unreadStatusWriteSMSToSim((const char*)data, datalen, soc_id);
sendSMSACK(soc_id);
break;
+ case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS:
+ {
+ RLOGD("Receive RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS data: %s, length: %d", (char*)data, datalen);
+ break;
+ }
case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT:
sendSMSACK(soc_id);
break;
@@ -4531,6 +4650,254 @@
default: return "<unknown state>";
}
}
+const char *lynq_requset_to_string(int request)
+{
+ switch(request) {
+ case RIL_REQUEST_GET_SIM_STATUS: return "RIL_REQUEST_GET_SIM_STATUS";
+ case RIL_REQUEST_ENTER_SIM_PIN: return "RIL_REQUEST_ENTER_SIM_PIN";
+ case RIL_REQUEST_ENTER_SIM_PUK: return "RIL_REQUEST_ENTER_SIM_PUK";
+ case RIL_REQUEST_ENTER_SIM_PIN2: return "RIL_REQUEST_ENTER_SIM_PIN2";
+ case RIL_REQUEST_ENTER_SIM_PUK2: return "RIL_REQUEST_ENTER_SIM_PUK2";
+ case RIL_REQUEST_CHANGE_SIM_PIN: return "RIL_REQUEST_CHANGE_SIM_PIN";
+ case RIL_REQUEST_CHANGE_SIM_PIN2: return "RIL_REQUEST_CHANGE_SIM_PIN2";
+ case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION";
+ case RIL_REQUEST_GET_CURRENT_CALLS: return "RIL_REQUEST_GET_CURRENT_CALLS";
+ case RIL_REQUEST_DIAL: return "RIL_REQUEST_DIAL";
+ case RIL_REQUEST_GET_IMSI: return "RIL_REQUEST_GET_IMSI";
+ case RIL_REQUEST_HANGUP: return "RIL_REQUEST_HANGUP";
+ case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND";
+ case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND";
+ case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE";
+ case RIL_REQUEST_CONFERENCE: return "RIL_REQUEST_CONFERENCE";
+ case RIL_REQUEST_UDUB: return "RIL_REQUEST_UDUB";
+ case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "RIL_REQUEST_LAST_CALL_FAIL_CAUSE";
+ case RIL_REQUEST_SIGNAL_STRENGTH: return "RIL_REQUEST_SIGNAL_STRENGTH";
+ case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "RIL_REQUEST_VOICE_REGISTRATION_STATE";
+ case RIL_REQUEST_DATA_REGISTRATION_STATE: return "RIL_REQUEST_DATA_REGISTRATION_STATE";
+ case RIL_REQUEST_OPERATOR: return "RIL_REQUEST_OPERATOR";
+ case RIL_REQUEST_RADIO_POWER: return "RIL_REQUEST_RADIO_POWER";
+ case RIL_REQUEST_DTMF: return "RIL_REQUEST_DTMF";
+ case RIL_REQUEST_SEND_SMS: return "RIL_REQUEST_SEND_SMS";
+ case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "RIL_REQUEST_SEND_SMS_EXPECT_MORE";
+ case RIL_REQUEST_SETUP_DATA_CALL: return "RIL_REQUEST_SETUP_DATA_CALL";
+ case RIL_REQUEST_SIM_IO: return "RIL_REQUEST_SIM_IO";
+ case RIL_REQUEST_SEND_USSD: return "RIL_REQUEST_SEND_USSD";
+ case RIL_REQUEST_CANCEL_USSD: return "RIL_REQUEST_CANCEL_USSD";
+ case RIL_REQUEST_GET_CLIR: return "RIL_REQUEST_GET_CLIR";
+ case RIL_REQUEST_SET_CLIR: return "RIL_REQUEST_SET_CLIR";
+ case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "RIL_REQUEST_QUERY_CALL_FORWARD_STATUS";
+ case RIL_REQUEST_SET_CALL_FORWARD: return "RIL_REQUEST_SET_CALL_FORWARD";
+ case RIL_REQUEST_QUERY_CALL_WAITING: return "RIL_REQUEST_QUERY_CALL_WAITING";
+ case RIL_REQUEST_SET_CALL_WAITING: return "RIL_REQUEST_SET_CALL_WAITING";
+ case RIL_REQUEST_SMS_ACKNOWLEDGE: return "RIL_REQUEST_SMS_ACKNOWLEDGE";
+ case RIL_REQUEST_GET_IMEI: return "RIL_REQUEST_GET_IMEI";
+ case RIL_REQUEST_GET_IMEISV: return "RIL_REQUEST_GET_IMEISV";
+ case RIL_REQUEST_ANSWER: return "RIL_REQUEST_ANSWER";
+ case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "RIL_REQUEST_DEACTIVATE_DATA_CALL";
+ case RIL_REQUEST_QUERY_FACILITY_LOCK: return "RIL_REQUEST_QUERY_FACILITY_LOCK";
+ case RIL_REQUEST_SET_FACILITY_LOCK: return "RIL_REQUEST_SET_FACILITY_LOCK";
+ case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "RIL_REQUEST_CHANGE_BARRING_PASSWORD";
+ case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE";
+ case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC";
+ case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL";
+ case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS";
+ case RIL_REQUEST_DTMF_START: return "RIL_REQUEST_DTMF_START";
+ case RIL_REQUEST_DTMF_STOP: return "RIL_REQUEST_DTMF_STOP";
+ case RIL_REQUEST_BASEBAND_VERSION: return "RIL_REQUEST_BASEBAND_VERSION";
+ case RIL_REQUEST_SEPARATE_CONNECTION: return "RIL_REQUEST_SEPARATE_CONNECTION";
+ case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE";
+ case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE";
+ case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "RIL_REQUEST_GET_NEIGHBORING_CELL_IDS";
+ case RIL_REQUEST_SET_MUTE: return "RIL_REQUEST_SET_MUTE";
+ case RIL_REQUEST_GET_MUTE: return "RIL_REQUEST_GET_MUTE";
+ case RIL_REQUEST_QUERY_CLIP: return "RIL_REQUEST_QUERY_CLIP";
+ case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE";
+ case RIL_REQUEST_DATA_CALL_LIST: return "RIL_REQUEST_DATA_CALL_LIST";
+ case RIL_REQUEST_RESET_RADIO: return "RIL_REQUEST_RESET_RADIO";
+ case RIL_REQUEST_OEM_HOOK_RAW: return "RIL_REQUEST_OEM_HOOK_RAW";
+ case RIL_REQUEST_OEM_HOOK_STRINGS: return "RIL_REQUEST_OEM_HOOK_STRINGS";
+ case RIL_REQUEST_SET_BAND_MODE: return "RIL_REQUEST_SET_BAND_MODE";
+ case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE";
+ case RIL_REQUEST_STK_GET_PROFILE: return "RIL_REQUEST_STK_GET_PROFILE";
+ case RIL_REQUEST_STK_SET_PROFILE: return "RIL_REQUEST_STK_SET_PROFILE";
+ case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND";
+ case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE";
+ case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM";
+ case RIL_REQUEST_SCREEN_STATE: return "RIL_REQUEST_SCREEN_STATE";
+ case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "RIL_REQUEST_EXPLICIT_CALL_TRANSFER";
+ case RIL_REQUEST_SET_LOCATION_UPDATES: return "RIL_REQUEST_SET_LOCATION_UPDATES";
+ case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE:return"RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE";
+ case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE:return"RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE";
+ case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE:return"RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE";
+ case RIL_REQUEST_SET_TTY_MODE:return"RIL_REQUEST_SET_TTY_MODE";
+ case RIL_REQUEST_QUERY_TTY_MODE:return"RIL_REQUEST_QUERY_TTY_MODE";
+ case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE:return"RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE";
+ case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE:return"RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE";
+ case RIL_REQUEST_CDMA_FLASH:return"RIL_REQUEST_CDMA_FLASH";
+ case RIL_REQUEST_CDMA_BURST_DTMF:return"RIL_REQUEST_CDMA_BURST_DTMF";
+ case RIL_REQUEST_CDMA_SEND_SMS:return"RIL_REQUEST_CDMA_SEND_SMS";
+ case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE:return"RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE";
+ case RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG:return"RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG";
+ case RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG:return"RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG";
+ case RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION:return "RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION";
+ case RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG:return "RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG";
+ case RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG:return "RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG";
+ case RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION:return "RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION";
+ case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return"RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY";
+ case RIL_REQUEST_CDMA_SUBSCRIPTION: return"RIL_REQUEST_CDMA_SUBSCRIPTION";
+ case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM";
+ case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM";
+ case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY";
+ case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE";
+ case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS";
+ case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS";
+ case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS";
+ case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING";
+ case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE";
+ case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION";
+ case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU";
+ case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS";
+ case RIL_REQUEST_VOICE_RADIO_TECH: return "RIL_REQUEST_VOICE_RADIO_TECH";
+ case RIL_REQUEST_GET_CELL_INFO_LIST: return"RIL_REQUEST_GET_CELL_INFO_LIST";
+ case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: return"RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE";
+ case RIL_REQUEST_SET_INITIAL_ATTACH_APN: return "RIL_REQUEST_SET_INITIAL_ATTACH_APN";
+ case RIL_REQUEST_IMS_REGISTRATION_STATE: return "RIL_REQUEST_IMS_REGISTRATION_STATE";
+ case RIL_REQUEST_IMS_SEND_SMS: return "RIL_REQUEST_IMS_SEND_SMS";
+ case RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC: return "RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC";
+ case RIL_REQUEST_SIM_OPEN_CHANNEL: return "RIL_REQUEST_SIM_OPEN_CHANNEL";
+ case RIL_REQUEST_SIM_CLOSE_CHANNEL: return "RIL_REQUEST_SIM_CLOSE_CHANNEL";
+ case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: return "RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL";
+ case RIL_REQUEST_GET_RADIO_CAPABILITY: return "RIL_REQUEST_GET_RADIO_CAPABILITY";
+ case RIL_REQUEST_SET_RADIO_CAPABILITY: return "RIL_REQUEST_SET_RADIO_CAPABILITY";
+ case RIL_REQUEST_SET_UICC_SUBSCRIPTION: return "RIL_REQUEST_SET_UICC_SUBSCRIPTION";
+ case RIL_REQUEST_ALLOW_DATA: return "RIL_REQUEST_ALLOW_DATA";
+ case RIL_REQUEST_GET_HARDWARE_CONFIG: return "RIL_REQUEST_GET_HARDWARE_CONFIG";
+ case RIL_REQUEST_SIM_AUTHENTICATION: return "RIL_REQUEST_SIM_AUTHENTICATION";
+ case RIL_REQUEST_GET_DC_RT_INFO: return "RIL_REQUEST_GET_DC_RT_INFO";
+ case RIL_REQUEST_SET_DC_RT_INFO_RATE: return "RIL_REQUEST_SET_DC_RT_INFO_RATE";
+ case RIL_REQUEST_SET_DATA_PROFILE: return "RIL_REQUEST_SET_DATA_PROFILE";
+ case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED";
+ case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED";
+ case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED";
+ case RIL_UNSOL_RESPONSE_NEW_SMS: return "RIL_UNSOL_RESPONSE_NEW_SMS";
+ case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT";
+ case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM";
+ case RIL_UNSOL_ON_USSD: return "RIL_UNSOL_ON_USSD";
+ case RIL_UNSOL_ON_USSD_REQUEST: return "RIL_UNSOL_ON_USSD_REQUEST";
+ case RIL_UNSOL_NITZ_TIME_RECEIVED: return "RIL_UNSOL_NITZ_TIME_RECEIVED";
+ case RIL_UNSOL_SIGNAL_STRENGTH: return "RIL_UNSOL_SIGNAL_STRENGTH";
+ case RIL_UNSOL_STK_SESSION_END: return "RIL_UNSOL_STK_SESSION_END";
+ case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "RIL_UNSOL_STK_PROACTIVE_COMMAND";
+ case RIL_UNSOL_STK_EVENT_NOTIFY: return "RIL_UNSOL_STK_EVENT_NOTIFY";
+ case RIL_UNSOL_STK_CALL_SETUP: return "RIL_UNSOL_STK_CALL_SETUP";
+ case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "RIL_UNSOL_SIM_SMS_STORAGE_FULL";
+ case RIL_UNSOL_SIM_REFRESH: return "RIL_UNSOL_SIM_REFRESH";
+ case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "RIL_UNSOL_DATA_CALL_LIST_CHANGED";
+ case RIL_UNSOL_CALL_RING: return "RIL_UNSOL_CALL_RING";
+ case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED";
+ case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "RIL_UNSOL_RESPONSE_CDMA_NEW_SMS";
+ case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS";
+ case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL";
+ case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "RIL_UNSOL_RESTRICTED_STATE_CHANGED";
+ case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE";
+ case RIL_UNSOL_CDMA_CALL_WAITING: return "RIL_UNSOL_CDMA_CALL_WAITING";
+ case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "RIL_UNSOL_CDMA_OTA_PROVISION_STATUS";
+ case RIL_UNSOL_CDMA_INFO_REC: return "RIL_UNSOL_CDMA_INFO_REC";
+ case RIL_UNSOL_OEM_HOOK_RAW: return "RIL_UNSOL_OEM_HOOK_RAW";
+ case RIL_UNSOL_RINGBACK_TONE: return "RIL_UNSOL_RINGBACK_TONE";
+ case RIL_UNSOL_RESEND_INCALL_MUTE: return "RIL_UNSOL_RESEND_INCALL_MUTE";
+ case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED";
+ case RIL_UNSOL_CDMA_PRL_CHANGED: return "RIL_UNSOL_CDMA_PRL_CHANGED";
+ case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE";
+ case RIL_UNSOL_RIL_CONNECTED: return "RIL_UNSOL_RIL_CONNECTED";
+ case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: return "RIL_UNSOL_VOICE_RADIO_TECH_CHANGED";
+ case RIL_UNSOL_CELL_INFO_LIST: return "RIL_UNSOL_CELL_INFO_LIST";
+ case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED: return "RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED";
+ case RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED: return "RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED";
+ case RIL_UNSOL_SRVCC_STATE_NOTIFY: return "RIL_UNSOL_SRVCC_STATE_NOTIFY";
+ case RIL_UNSOL_HARDWARE_CONFIG_CHANGED: return "RIL_UNSOL_HARDWARE_CONFIG_CHANGED";
+ case RIL_UNSOL_DC_RT_INFO_CHANGED: return "RIL_UNSOL_DC_RT_INFO_CHANGED";
+ case RIL_REQUEST_SHUTDOWN: return "RIL_REQUEST_SHUTDOWN";
+ case RIL_UNSOL_RADIO_CAPABILITY: return "RIL_UNSOL_RADIO_CAPABILITY";
+ case RIL_REQUEST_SET_TRM: return "RIL_REQUEST_SET_TRM";
+ case RIL_REQUEST_SET_IMS_ENABLE:return "RIL_REQUEST_SET_IMS_ENABLE";
+ case RIL_REQUEST_SET_AUDIO_PATH: return "RIL_REQUEST_SET_AUDIO_PATH";
+ case RIL_REQUEST_HANGUP_ALL: return "RIL_REQUEST_HANGUP_ALL";
+ case RIL_REQUEST_FORCE_RELEASE_CALL: return "RIL_REQUEST_FORCE_RELEASE_CALL";
+ case RIL_REQUEST_EMERGENCY_DIAL: return "RIL_REQUEST_EMERGENCY_DIAL";
+ case RIL_REQUEST_SET_ECC_SERVICE_CATEGORY: return "RIL_REQUEST_SET_ECC_SERVICE_CATEGORY";
+ case RIL_REQUEST_SET_ECC_LIST: return "RIL_REQUEST_SET_ECC_LIST";
+ case RIL_REQUEST_AT_COMMAND_WITH_PROXY: return "RIL_REQUEST_AT_COMMAND_WITH_PROXY";
+ case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION";
+ case RIL_REQUEST_SET_CLIP: return "RIL_REQUEST_SET_CLIP";
+ case RIL_REQUEST_GET_COLP: return "RIL_REQUEST_GET_COLP";
+ case RIL_REQUEST_SET_COLP: return "RIL_REQUEST_SET_COLP";
+ case RIL_REQUEST_GET_COLR: return "RIL_REQUEST_GET_COLR";
+ case RIL_REQUEST_ADD_IMS_CONFERENCE_CALL_MEMBER: return "RIL_REQUEST_ADD_IMS_CONFERENCE_CALL_MEMBER";
+ case RIL_REQUEST_REMOVE_IMS_CONFERENCE_CALL_MEMBER: return "RIL_REQUEST_REMOVE_IMS_CONFERENCE_CALL_MEMBER";
+ case RIL_REQUEST_CONFERENCE_DIAL: return "RIL_REQUEST_CONFERENCE_DIAL";
+ case RIL_REQUEST_DIAL_WITH_SIP_URI: return "RIL_REQUEST_DIAL_WITH_SIP_URI";
+ case RIL_REQUEST_HOLD_CALL: return "RIL_REQUEST_HOLD_CALL";
+ case RIL_REQUEST_RESUME_CALL: return "RIL_REQUEST_RESUME_CALL";
+ case RIL_UNSOL_ECONF_SRVCC_INDICATION : return "RIL_UNSOL_ECONF_SRVCC_INDICATION";
+ case RIL_UNSOL_ECONF_RESULT_INDICATION : return "RIL_UNSOL_ECONF_RESULT_INDICATION";
+ case RIL_UNSOL_MAL_AT_INFO : return "RIL_UNSOL_MAL_AT_INFO";
+ case RIL_REQUEST_MODEM_POWEROFF: return "RIL_REQUEST_MODEM_POWEROFF";
+ case RIL_REQUEST_MODEM_POWERON: return "RIL_REQUEST_MODEM_POWERON";
+ case RIL_REQUEST_WRITE_SMS_TO_SIM: return "RIL_REQUEST_WRITE_SMS_TO_SIM";
+ case RIL_REQUEST_QUERY_ICCID: return "RIL_REQUEST_QUERY_ICCID";
+ case RIL_UNSOL_TX_POWER: return "RIL_UNSOL_TX_POWER";
+ case RIL_UNSOL_NETWORK_INFO: return "RIL_UNSOL_NETWORK_INFO";
+ case RIL_REQUEST_DELETE_SMS_ON_SIM: return "RIL_REQUEST_DELETE_SMS_ON_SIM";
+ case RIL_REQUEST_SET_IMSCFG: return "RIL_REQUEST_SET_IMSCFG";
+#ifdef ECALL_SUPPORT
+ case RIL_REQUEST_ECALL_FAST_MAKE_ECALL: return "RIL_REQUEST_ECALL_FAST_MAKE_ECALL";
+ case RIL_REQUEST_ECALL_SET_IVS: return "RIL_REQUEST_ECALL_SET_IVS";
+ case RIL_REQUEST_ECALL_SET_PSAP: return "RIL_REQUEST_ECALL_SET_PSAP";
+ case RIL_REQUEST_ECALL_MAKE_ECALL: return "RIL_REQUEST_ECALL_MAKE_ECALL";
+ case RIL_REQUEST_ECALL_IVS_PUSH_MSD: return "RIL_REQUEST_ECALL_IVS_PUSH_MSD";
+ case RIL_REQUEST_ECALL_PSAP_PULL_MSD: return "RIL_REQUEST_ECALL_PSAP_PULL_MSD";
+ case RIL_UNSOL_ECALL_MSDHACK : return "RIL_UNSOL_ECALL_MSDHACK";
+ case RIL_REQUEST_ECALL_SET_MSD: return "RIL_REQUEST_ECALL_SET_MSD";
+ case RIL_REQUEST_ECALL_CTRL_SEQUENCE: return "RIL_REQUEST_ECALL_CTRL_SEQUENCE";
+ case RIL_UNSOL_ECALL_INDICATIONS : return "RIL_UNSOL_ECALL_INDICATIONS";
+ case RIL_REQUEST_ECALL_RESET_IVS: return "RIL_REQUEST_ECALL_RESET_IVS";
+ case RIL_REQUEST_ECALL_SET_PRI: return "RIL_REQUEST_ECALL_SET_PRI";
+ case RIL_REQUEST_ECALL_SET_TEST_NUM: return "RIL_REQUEST_ECALL_SET_TEST_NUM";
+ case RIL_REQUEST_ECALL_SET_RECONF_NUM: return "RIL_REQUEST_ECALL_SET_RECONF_NUM";
+ case RIL_REQUEST_SYNC_DATA_SETTINGS_TO_MD: return "RIL_REQUEST_SYNC_DATA_SETTINGS_TO_MD";
+ case RIL_REQUEST_ECALL_SET_NAD_DEREGISTRATION_TIME: return "RIL_REQUEST_ECALL_SET_NAD_DEREGISTRATION_TIME";
+ case RIL_REQUEST_ECALL_SET_REGISTRATION_STATE: return "RIL_REQUEST_ECALL_SET_REGISTRATION_STATE";
+#endif /*ECALL_SUPPORT*/
+#ifdef KEEP_ALIVE
+ case RIL_REQUEST_START_KEEPALIVE_PRO: return "RIL_REQUEST_START_KEEPALIVE_PRO";
+ case RIL_REQUEST_STOP_KEEPALIVE_PRO: return "RIL_REQUEST_STOP_KEEPALIVE_PRO";
+ case RIL_UNSOL_KEEPALIVE_STATUS_PRO: return "RIL_UNSOL_KEEPALIVE_STATUS_PRO";
+#endif /*KEEP_ALIVE*/
+ case RIL_REQUEST_SEND_USSI: return "RIL_REQUEST_SEND_USSI";
+ case RIL_REQUEST_CANCEL_USSI: return "RIL_REQUEST_CANCEL_USSI";
+ case RIL_REQUEST_GET_SMS_SIM_MEM_STATUS: return "RIL_REQUEST_GET_SMS_SIM_MEM_STATUS";
+ case RIL_UNSOL_SIP_CALL_PROGRESS_INDICATOR: return "RIL_UNSOL_SIP_CALL_PROGRESS_INDICATOR";
+ case RIL_REQUEST_REPORT_AIRPLANE_MODE: return "RIL_REQUEST_REPORT_AIRPLANE_MODE";
+ case RIL_REQUEST_SET_ECC_NUM: return "RIL_REQUEST_SET_ECC_NUM";
+ case RIL_REQUEST_GET_ECC_NUM: return "RIL_REQUEST_GET_ECC_NUM";
+ case RIL_UNSOL_ECC_NUM: return "RIL_UNSOL_ECC_NUM";
+ case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS_WITH_ACT: return "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS_WITH_ACT";
+ case RIL_REQUEST_GSM_GET_BROADCAST_LANGUAGE: return "RIL_REQUEST_GSM_GET_BROADCAST_LANGUAGE";
+ case RIL_REQUEST_GSM_SET_BROADCAST_LANGUAGE: return "RIL_REQUEST_GSM_SET_BROADCAST_LANGUAGE";
+ case RIL_UNSOL_CALL_INFO_INDICATION: return "RIL_UNSOL_CALL_INFO_INDICATION";
+#ifdef TARGET_PLATFORM_MT2731
+ case RIL_REQUEST_MODIFY_APN: return "RIL_REQUEST_MODIFY_APN";
+ case RIL_REQUEST_RESET_APN: return "RIL_REQUEST_RESET_APN";
+#endif
+ case RIL_REQUEST_QUERY_SIM_RETRY_COUNT: return "RIL_REQUEST_QUERY_SIM_RETRY_COUNT";
+ case RIL_REQUEST_QUERY_EID: return "RIL_REQUEST_QUERY_EID";
+ /*LYNQ CMD*/
+ case LYNQ_AUTO_ANSWER_CALL: return "LYNQ_AUTO_ANSWER_CALL";
+ case LYNQ_REQUEST_SET_DTMF_VOLUME: return "RIL_REQUEST_SET_DTMF_VOLUME";
+ default: return "<unknown request>";
+ }
+}
const char *
requestToString(int request) {
@@ -4785,6 +5152,7 @@
case RIL_REQUEST_QUERY_SIM_RETRY_COUNT: return "RIL_REQUEST_QUERY_SIM_RETRY_COUNT";
#endif
case RIL_REQUEST_QUERY_EID: return "RIL_REQUEST_QUERY_EID";
+ case LYNQ_REQUEST_SET_DTMF_VOLUME: return "RIL_REQUEST_SET_DTMF_VOLUME";
default: return "<unknown request>";
}
}
@@ -5107,7 +5475,67 @@
return argc;
}
+/*mobiletek add*/
+int parse_param_test(char *cmd, char *argv[], int max_args)
+{
+ char *pos, *pos2;
+ int argc = 0;
+ pos = cmd;
+ while (1) {
+ // Trim the space characters.
+ while (*pos == ' ') {
+ pos++;
+ }
+
+ if (*pos == '\0') {
+ break;
+ }
+
+ // One token may start with '"' or other characters.
+ if (*pos == '"' && (pos2 = strrchr(pos+1, '"'))) {
+ argv[argc++] = pos + 1;
+ *pos2 = '\0';
+ pos = pos2 + 1;
+ if(*pos == '\n'){
+ *pos = '\0';
+ pos = pos + 1;
+ }
+
+ } else {
+ argv[argc++] = pos;
+ while (*pos != '\0' && *pos != ' '&& *pos != '\n') {
+ pos++;
+ }
+ *pos++ = '\0';
+
+ if(argc == 1) {
+ char* at_cmd = strstr(argv[0], "RIL_REQUEST_OEM_HOOK_RAW");
+ if(at_cmd != NULL) {
+ while (*pos == ' ') {
+ pos++;
+ }
+ argv[argc++] = pos;
+ while (*pos != '\0' && *pos != '\n') {
+ pos++;
+ }
+ *pos++ = '\0';
+ break;
+ }
+ }
+
+ }
+
+ // Check if the maximum of arguments is reached.
+ if (argc == max_args) {
+ break;
+ }
+ }
+
+ return argc;
+}
+/*mobiletek add*/
+/**/
/* Look up NAME as the name of a command, and return a pointer to that
command. Return a NULL pointer if NAME isn't a command name. */
COMMAND* find_command (char *name)
@@ -5185,6 +5613,299 @@
return;
}
+/*Warren add for t800 RIL Service 2021/12/10 start*/
+
+
+void LYNQ_RIL_RecSocket()
+{
+ RLOGD("LYNQ_RIL_RecSocket start\n");
+ //printf("LYNQ_RIL_RecSocket start\n");
+ char *argv[MAX_ARGS];
+ int argc = 0;
+ int ep_fd = 0;
+ int en_fd = 0;
+ struct epoll_event lynq_ev;
+ struct epoll_event lynq_events[LYNQ_SOCKET_ENVNT_FD_MAX];
+ //prctl(PR_SET_NAME,(unsigned long)"UDP_Thr");
+
+ /*listen UPD SOCKET port */
+ struct sockaddr_in server_addr;
+ struct sockaddr_in lynqClient_addr;
+ bzero(&server_addr, sizeof(server_addr));
+ server_addr.sin_family = AF_INET;
+ server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
+ /* create socket */
+ //int server_socket_fd = socket(AF_INET, SOCK_DGRAM, 0);
+ server_socket_fd = socket(AF_INET, SOCK_DGRAM, 0);
+ if(server_socket_fd == -1)
+ {
+ RLOGE("Create Socket Failed:");
+ exit(1);
+ }
+
+ /* bind socket port*/
+ if(-1 == (bind(server_socket_fd,(struct sockaddr*)&server_addr,sizeof(server_addr))))
+ {
+ RLOGE("Server Bind Failed:");
+ exit(1);
+ }
+ /* create epoll fdï¼add socket to epoll */
+ ep_fd = epoll_create(LYNQ_SOCKET_ENVNT_FD_MAX);
+ //int len = sizeof(struct sockaddr_in);
+ lynq_ev.events = EPOLLIN | EPOLLET;
+ lynq_ev.data.fd = server_socket_fd;
+ if(epoll_ctl(ep_fd, EPOLL_CTL_ADD, server_socket_fd, &lynq_ev) < 0)
+ {
+ fprintf(stderr, "epoll set insertion error: fd=%d\n", server_socket_fd);
+ return;
+ }
+ else
+ {
+ printf("monitor socket add epoll success!!!\n");
+ }
+ char buffer[LYNQ_SOCKET_BUFFER];
+ lynq_client_t *client_tmp = NULL;
+ /* tranlate data */
+ while(true)
+ {
+ if(!s_registerCalled)
+ {
+ sleep(1);
+ continue;
+ }
+ en_fd = epoll_wait(ep_fd, lynq_events, 10000, -1);//###Check valid
+ if(en_fd <=0 )
+ {
+ continue;
+ }
+ for (int n = 0; n < en_fd; ++n)
+ {
+ if (lynq_events[n].data.fd == server_socket_fd)
+ {
+ /* define address to catch the client addreess*/
+ //struct sockaddr_in client_addr;
+ printf("LYNQ_RIL_RecSocket start\n");
+ socklen_t client_addr_length = sizeof(lynqClient_addr);
+ /* receive the data */
+ bzero(buffer, LYNQ_SOCKET_BUFFER);
+ if(recvfrom(server_socket_fd, buffer, LYNQ_SOCKET_BUFFER,0,(struct sockaddr*)&lynqClient_addr, &client_addr_length) == -1)
+ {
+ RLOGE("Receive Data Failed:");
+ printf("Receive Data Failed:\n");
+ continue;
+ }
+ client_tmp = (lynq_client_t*)buffer;
+ RLOGD("[LYNQ socketId] utoken=%d,request=%d,len=%d,param=%s",client_tmp->uToken,client_tmp->request,client_tmp->paramLen,client_tmp->param);
+ //char test[36] = {};
+ //sprintf(test,"test okay len = %d",client_tmp->paramLen);
+ //sendto(server_socket_fd,test,strlen(test),0,(struct sockaddr*)&client_addr,client_addr_length);
+ argv[0] = (char *)lynq_requset_to_string(client_tmp->request);
+ argc = 0;
+ if(client_tmp->paramLen > 0)
+ {
+ /*transfer struct*/
+ argc = parse_param_test(client_tmp->param, argv+1, MAX_ARGS);
+ if(argc < 1)
+ {
+ RLOGE("%s: error input.", buffer);
+ continue;
+ }
+ }
+ printf("argc =%d\n",argc);
+ argc = argc+1;
+ for(int t = 0;t<argc;t++)
+ {
+ RLOGD("warren test argv[%d]=%s\n",t,argv[t]);
+ }
+ COMMAND *command = find_command(argv[0]);
+ if(!command)
+ {
+ RLOGE("%s: No such command for DemoApp", argv[0]);
+ continue;
+ }
+ int32_t request;
+ request = command->request;
+ RIL_SOCKET_ID id = RIL_SOCKET_1;
+ if(utils::is_support_dsds()) {
+ id = (RIL_SOCKET_ID)get_default_sim_all_except_data();
+ } else if(utils::is_suppport_dsss()) {
+ id = (RIL_SOCKET_ID)Phone_utils::get_enable_sim_for_dsss();
+ }
+ if(request == -1)
+ {
+ (*(command->func)) (argc, argv, id, NULL);
+ continue;
+ }
+ if (request < 1 || (request >= (int32_t)NUM_ELEMS(s_commands) && request < RIL_REQUEST_VENDOR_BASE)) {
+ RLOGW("unsupported request code %d token %d", request);
+ // FIXME this should perhaps return a response
+ continue;
+ }
+ RLOGD("REQUEST: %s ParamterNum:%d", requestToString(request), argc);
+ RequestInfo *pRI = creatRILInfoAndInit(request, UDP, (RIL_SOCKET_ID)(id));
+ pRI->uToken = client_tmp->uToken;
+ pRI->lynqEvent = 1;
+ pRI->uClient_addr.sin_family = lynqClient_addr.sin_family;
+ pRI->uClient_addr.sin_addr.s_addr = lynqClient_addr.sin_addr.s_addr;
+ pRI->uClient_addr.sin_port = lynqClient_addr.sin_port;
+ //sendto(server_socket_fd,test,strlen(test),0,(struct sockaddr*)&pRI->uClient_addr,client_addr_length);
+ //pRI->uClient_addr.sa_family = (struct sockaddr)client_addr.sa_family;
+ //memcpy(pRI->uClient_addr.sa_data,&client_addr
+ //Radio on/off only allow one thread operate.
+ if(request == RIL_REQUEST_RADIO_POWER)
+ {
+ speciaRequest_wait();
+ }
+ memset(Time_buf,0,sizeof(Time_buf));
+ GetTimeString(Time_buf);
+ //FUNCTION_CALLED(Time_buf,requestToString(request));
+ int waittoken = pRI->token;
+ (*(command->func)) (argc, argv, pRI->socket_id, pRI);
+ FUNCTION_CALLED(Time_buf,requestToString(request));
+ waitResponse(waittoken);
+ memset(Time_buf,0,sizeof(Time_buf));
+ GetTimeString(Time_buf);
+ FUNCTION_RETURN(Time_buf,requestToString(request));
+ }
+ }
+ }
+ RLOGD("close socket fd");
+ close(server_socket_fd);
+ return ;
+}
+
+int LYNQ_RIL_urcBroadcast(Parcel &p)
+{
+ RLOGD("LYNQ_RIL_urcBroadcast send start");
+ int ret =0;
+ bool sendResult =false;
+ ssize_t sent = 0;
+ uint8_t dataLength[4];
+ int verify = 0x55aa;
+ int dataSize = p.dataSize();
+ const uint8_t* data = p.data();
+ sent = sendto(lynq_urc_socket_fd, data, dataSize, 0, (struct sockaddr *)&urc_broadcast_addr, sizeof(urc_broadcast_addr));
+ if( sent < 0 )
+ {
+ RLOGE("LYNQ_RIL_urcBroadcast send datalen fail (sent=%d, sendFD=%d, dataSize=%d)",
+ sent,lynq_urc_socket_fd, dataSize);
+ return -1;
+ }
+ return 0;
+}
+/*Warren add for t800 RIL Service 2021/12/10 end*/
+
+/*Warren add for t800 RIL Service 2021/12/10 start*/
+int lynqAssemblyParcelheader(Parcel &p,int slot,int request,int respType,int error)
+{
+ p.writeInt32 (respType);
+ p.writeInt32 (request);
+ /*warren add for t800 ril servie 2021/12/15 start*/
+ p.writeInt32(slot);
+ /*warren add for t800 ril servie 2021/12/15 end*/
+ p.writeInt32 (error);
+ return 0;
+}
+void LYNQ_RIL_urcClientInit()
+{
+ int len = 0;
+ int on=1;
+ int ret = 0;
+ lynq_urc_socket_fd = socket(AF_INET,SOCK_DGRAM,0);
+ if(lynq_urc_socket_fd < 0)
+ {
+ perror("creaet socket for udp fail");
+ return;
+ }
+ /* 设置socket允许重复使用地址与端口,SO_REUSEADDR值为2 */
+ //setsockopt(socket_fd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof on);
+ /* 使能广播功能,SO_BROADCAST值为6 */
+ ret= setsockopt(lynq_urc_socket_fd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on));
+ if(ret<0)
+ {
+ RLOGD("set broadcast fail!!!\n");
+ exit(1);
+ }
+ urc_broadcast_addr.sin_family = AF_INET; //IPv4
+ urc_broadcast_addr.sin_port = htons(LYNQ_BRODCAST_PORT);
+ urc_broadcast_addr.sin_addr.s_addr = inet_addr("255.255.255.255" );//255.255.255.255 broadcast addrress.
+ printf("LYNQ_RIL_urcClientInit success!!!\n");
+ return;
+ /*
+ while(1)
+ {
+ len = sendto(lynq_urc_socket_fd,"hello world",11,0,(struct sockaddr *)&urc_broadcast_addr,sizeof(urc_broadcast_addr));
+ if(len > 0)
+ {
+ printf("sendto success,len=%d\n",len);
+ }
+ else
+ {
+ printf("sendto fail\n");
+ }
+ sleep(1);
+ }
+ */
+}
+
+int LYNQ_RIL_respSocket(Parcel &p,RIL_Token t)
+{
+ RLOGD("LYNQ_RIL_respSocket send start");
+ RequestInfo *pRI = (RequestInfo *)t;
+ if(pRI->lynqEvent!=1)
+ {
+ RLOGD("this is not internal event!!!");
+ return -1;
+ }
+ int sent;
+ int dataSize = p.dataSize();
+ const uint8_t* data = p.data();
+ RLOGD("lynqSocketSend RESPONSE!!!! ");
+ printf("lynqSocketSend RESPONSE!!!!\n");
+ sent = sendto(server_socket_fd, data, dataSize, 0, (struct sockaddr *)&pRI->uClient_addr, sizeof(pRI->uClient_addr));
+ if( sent < 0 )
+ {
+ RLOGE("lynqSocketSend send datalen fail (sent=%d, sendFD=%d, dataSize=%d)",
+ sent,server_socket_fd, dataSize);
+ printf("lynqSocketSend send datalen fail (sent=%d, sendFD=%d, dataSize=%d) %s %d\n",
+ sent,server_socket_fd, dataSize, __FUNCTION__, __LINE__);
+ return -1;
+ }
+ return 0;
+}
+int LYNQ_RIL_respSocket_sp(Parcel &p,RequestInfo *pRI)
+{
+ RLOGD("LYNQ_RIL_respSocket send start");
+ int ret =0;
+ bool sendResult =false;
+ ssize_t sent = 0;
+ uint8_t dataLength[4];
+ int verify = 0x55aa;
+ int dataSize = p.dataSize();
+ const uint8_t* data = p.data();
+ if(pRI->lynqEvent!=1)
+ {
+ RLOGD("this is internal event!!!");
+ return -1;
+ }
+ RLOGD("lynqSocketSend RESPONSE!!!! ");
+ printf("lynqSocketSend RESPONSE!!!!\n");
+
+ sent = sendto(server_socket_fd, data, dataSize, 0, (struct sockaddr *)&pRI->uClient_addr, sizeof(pRI->uClient_addr));
+ if( sent < 0 )
+ {
+ RLOGE("lynqSocketSend send datalen fail (sent=%d, sendFD=%d, dataSize=%d)",
+ sent,server_socket_fd, dataSize);
+ printf("lynqSocketSend send datalen fail (sent=%d, sendFD=%d, dataSize=%d)",
+ sent,server_socket_fd, dataSize);
+ return -1;
+ }
+ return 0;
+}
+
+
+/*Warren add for t800 RIL Service 2021/12/10 end*/
void
RIL_StartRevSocket()
@@ -5238,6 +5959,10 @@
continue;
}
RLOGD("DemoAPP:%s, receve: %s", inet_ntoa(client_addr.sin_addr), buffer);
+ if(mtkItTest(buffer)) {
+ RLOGD("mtkItTest() handle.");
+ continue;
+ }
int argc = parse_param(buffer, argv, MAX_ARGS);
if(argc < 1)
{
@@ -5362,6 +6087,24 @@
return NULL;
}
+void *
+eventLoop_sdk(void *param) {
+ pthread_mutex_lock(&s_startupMutex);
+ s_started = 1;
+ pthread_cond_broadcast(&s_startupCond);
+ pthread_mutex_unlock(&s_startupMutex);
+ /*warren add for t800 ril service 2021/12/13 start*/
+ //RIL_StartRevSocket();
+ LYNQ_RIL_urcClientInit();
+ LYNQ_RIL_RecSocket();
+ /*warren add for t800 ril service 2021/12/13 end*/
+ RLOGD("error in event_loop_base errno:%d", errno);
+ // kill self to restart on error
+ kill(0, SIGKILL);
+
+ return NULL;
+}
+
const int RspDispFunction(int request,char* arg, RIL_SOCKET_ID socket_id)
{
int waittoken;
@@ -5871,7 +6614,17 @@
while (s_started == 0) {
pthread_cond_wait(&s_startupCond, &s_startupMutex);
}
-
+ /*mobiletek add*/
+ s_started = 0;
+ result = pthread_create(&s_tid_dispatch, &attr, eventLoop_sdk, NULL);
+ if (result != 0) {
+ RLOGW("Failed to create dispatch thread: %s", strerror(result));
+ goto done;
+ }
+ while (s_started == 0) {
+ pthread_cond_wait(&s_startupCond, &s_startupMutex);
+ }
+ /*mobiletek add*/
result = pthread_create(&s_tid_dispatch, &attr, responseLoop, NULL);
if (result != 0) {
RLOGW("Failed to create response dispatch thread: %s", strerror(result));
diff --git a/src/lynq/framework/lynq-atsvc/src/stateManager/stateManager.cpp b/src/lynq/framework/lynq-atsvc/src/stateManager/stateManager.cpp
old mode 100644
new mode 100755
index 0a9b766..a20fc58
--- a/src/lynq/framework/lynq-atsvc/src/stateManager/stateManager.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/stateManager/stateManager.cpp
@@ -44,7 +44,11 @@
#include "../util/AtLine.h"
#include "powerManager.h"
#include "util/utils.h"
-
+/*T800->T103*/
+#include <string.h>
+#include <cutils/jstring.h>
+#include <liblog/lynq_deflog.h>
+/*T800->T103*/
#undef LOG_TAG
#define LOG_TAG "DEMO_MANAGER"
diff --git a/src/lynq/lib/liblynq-call/LICENSE b/src/lynq/lib/liblynq-call/LICENSE
new file mode 100755
index 0000000..77f59ed
--- /dev/null
+++ b/src/lynq/lib/liblynq-call/LICENSE
@@ -0,0 +1,31 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MediaTek Software") are
+protected under relevant copyright laws. The information contained herein is
+confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+the prior written permission of MediaTek inc. and/or its licensors, any
+reproduction, modification, use or disclosure of MediaTek Software, and
+information contained herein, in whole or in part, shall be strictly
+prohibited.
+
+MediaTek Inc. (C) 2015. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
+RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
+INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
+TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
+ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
+RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
+MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
+CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
diff --git a/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h b/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
new file mode 100755
index 0000000..c37f86a
--- /dev/null
+++ b/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
@@ -0,0 +1,58 @@
+#ifndef LYNQ_CALL_H
+#define LYNQ_CALL_H 1
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define LYNQ_PHONE_NUMBER_MAX 32
+#define INDEX_IS_NUMBER( alpha_char ) \
+ ( ( (alpha_char >= '0') && (alpha_char <= '9') ) ? 1 : 0 )
+#define LYNQ_CALL_MAX 10
+#define LYNQ_CALL_FAIL_VENDOR_CAUSE 64
+typedef enum {
+ CALL_FAIL_UNOBTAINABLE_NUMBER = 1,
+ CALL_FAIL_NORMAL = 16,
+ CALL_FAIL_BUSY = 17,
+ CALL_FAIL_CONGESTION = 34,
+ CALL_FAIL_ACM_LIMIT_EXCEEDED = 68,
+ CALL_FAIL_CALL_BARRED = 240,
+ CALL_FAIL_FDN_BLOCKED = 241,
+ CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242,
+ CALL_FAIL_IMEI_NOT_ACCEPTED = 243,
+ CALL_FAIL_DIAL_MODIFIED_TO_USSD = 244, /* STK Call Control */
+ CALL_FAIL_DIAL_MODIFIED_TO_SS = 245,
+ CALL_FAIL_DIAL_MODIFIED_TO_DIAL = 246,
+ CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
+ CALL_FAIL_CDMA_DROP = 1001,
+ CALL_FAIL_CDMA_INTERCEPT = 1002,
+ CALL_FAIL_CDMA_REORDER = 1003,
+ CALL_FAIL_CDMA_SO_REJECT = 1004,
+ CALL_FAIL_CDMA_RETRY_ORDER = 1005,
+ CALL_FAIL_CDMA_ACCESS_FAILURE = 1006,
+ CALL_FAIL_CDMA_PREEMPTED = 1007,
+ CALL_FAIL_CDMA_NOT_EMERGENCY = 1008, /* For non-emergency number dialed
+ during emergency callback mode */
+ CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009, /* CDMA network access probes blocked */
+ CALL_FAIL_ERROR_UNSPECIFIED = 0xffff
+} lynq_last_call_fail_cause_t;
+typedef struct
+{
+ lynq_last_call_fail_cause_t cause_code;
+ char vendor_cause[LYNQ_CALL_FAIL_VENDOR_CAUSE];
+}lynqLastCallFailCause;
+int lynq_init_call(int uToken);
+int lynq_deinit_call();
+int lynq_call(int *handle,char addr[]);
+int lynq_call_answer();
+int lynq_call_hungup(int*handle);
+int lynq_call_hungup_all();
+int lynq_wait_incoming_call(int *handle);
+int lynq_set_auto_answercall(const int mode);
+int lynq_get_mute_status(int *status);
+int lynq_set_mute_mic(const int enable);
+int lynq_set_DTMF(const char callnum);
+int lynq_set_DTMF_volume(const int volume);
+int lynq_get_current_call_state(int *handle, int *call_state,int *toa,int *direction,char addr[]);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/lynq/lib/liblynq-call/lynq_call.cpp b/src/lynq/lib/liblynq-call/lynq_call.cpp
new file mode 100755
index 0000000..cb9cde6
--- /dev/null
+++ b/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -0,0 +1,901 @@
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <binder/Parcel.h>
+#include <log/log.h>
+#include "lynq_call.h"
+#include <cutils/jstring.h>
+#include <pthread.h>
+#include "liblog/lynq_deflog.h"
+#include <sys/time.h>
+
+#define LYNQ_SERVICE_PORT 8088
+#define LYNQ_URC_SERVICE_PORT 8086
+#define LYNQ_REC_BUF 8192
+#define LYNQ_REQUEST_PARAM_BUF 8192
+#define LYQN_SEDN_BUF 1024*8+sizeof(int)*3
+#define USER_LOG_TAG "LYNQ_CALL"
+
+using ::android::Parcel;
+ typedef enum {
+ LYNQ_CALL_ACTIVE = 0,
+ LYNQ_CALL_HOLDING = 1,
+ LYNQ_CALL_DIALING = 2, /* MO call only */
+ LYNQ_CALL_ALERTING = 3, /* MO call only */
+ LYNQ_CALL_INCOMING = 4, /* MT call only */
+ LYNQ_CALL_WAITING = 5 ,/* MT call only */
+}lynq_call_state_t;
+
+typedef struct{
+ int uToken;
+ int request;
+ int paramLen;
+ char param[LYNQ_REQUEST_PARAM_BUF];
+}lynq_client_t;
+typedef struct
+{
+ int used;
+ int call_id;
+ int call_state;
+ int toa;
+ int direction;/*0: MO call,1:MT call*/
+ char addr[LYNQ_PHONE_NUMBER_MAX];
+ int hasTimeout;
+}lynq_call_list_e_t;
+typedef struct
+{
+ int call_id;
+ int call_state;
+ int toa;
+ int direction;/*0: MO call,1:MT call*/
+ char addr[LYNQ_PHONE_NUMBER_MAX];
+}lynq_call_list_t;
+
+lynq_call_list_e_t lynq_call_lists[LYNQ_CALL_MAX]={};
+static pthread_mutex_t call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t call_state_change_cond = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t s_urc_call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t s_urc_call_state_change_cond = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t s_incoming_call_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t s_incoming_call_cond = PTHREAD_COND_INITIALIZER;
+
+
+int s_urc_event_complete = 1;
+
+enum{
+ CALL_OFF=0,
+ CALL_ON=1
+}call_state;
+typedef enum{
+ LYNQ_E_CARDSTATE_ERROR=8000,
+ /* The voice service state is out of service*/
+ LYNQ_E_STATE_OUT_OF_SERVICE=8001,
+ /* The voice service state is EMERGENCY_ONLY*/
+ LYNQ_E_STATE_EMERGENCY_ONLY=8002,
+ /* The radio power is power off*/
+ LYNQ_E_STATE_POWER_OFF=8003,
+ LYNQ_E_TIME_OUT=8004,
+ /*create or open sms DB fail */
+ LYNQ_E_SMS_DB_FAIL=8005,
+ /*Failed to execute sql statement*/
+ LYNQ_E_SMS_SQL_FAIL = 8006,
+ LYNQ_E_SMS_NOT_FIND = 8007,
+ /* The logic conflict*/
+ LYNQ_E_CONFLICT=9000,
+ /*Null anomaly*/
+ LYNQ_E_NULL_ANONALY=9001
+}LYNQ_E;
+
+int lynq_call_state =CALL_OFF;
+int lynq_client_sockfd = 0;
+int Global_uToken = 0;
+int global_call_count =0;
+int global_call_auto_answer = 0;
+bool urc_recive_status = 1;
+bool call_list_loop = 1;
+int isDial = 0;
+int lynqIncomingCallId = 0;
+
+int JumpHeader(Parcel &p,int *resp_type,int *request,int *slot_id,int *error)
+{
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(resp_type);
+ p.readInt32(request);
+ p.readInt32(slot_id);
+ p.readInt32(error);
+ return 0;
+ }
+ else
+ {
+ return -1;
+ }
+}
+int send_request(int sockfd,lynq_client_t *client_tmp)
+{
+ int ret=0;
+ ret = write(sockfd, client_tmp, LYQN_SEDN_BUF);
+ if(ret==-1)
+ {
+ perror("write error");
+ return -1;
+ }
+ return 0;
+}
+
+int get_response(int sockfd,Parcel &p)
+{
+ int len = 0;
+ char recvline[LYNQ_REC_BUF];
+ bzero(recvline,LYNQ_REC_BUF);
+ /* receive data from server */
+ len = read(sockfd, recvline, LYNQ_REC_BUF);
+ if(len == -1)
+ {
+ perror("read error");
+ return -1;
+ }
+ printf("===>n=%d\n",len);
+ if (recvline != NULL) {
+ p.setData((uint8_t *)recvline,len); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ }
+ return 0;
+}
+static char *strdupReadString(Parcel &p) {
+ size_t stringlen;
+ const char16_t *s16;
+ s16 = p.readString16Inplace(&stringlen);
+ return strndup16to8(s16, stringlen);
+}
+
+int lynq_get_current_call_list(lynq_call_list_t call_list[LYNQ_CALL_MAX])
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int call_num = 0;
+ int temp = 0;
+ char *remote_phoneNum = NULL;
+ char *remote_name= NULL;
+ char *uusData = NULL;
+ client.uToken = Global_uToken;
+ client.request = 9;//RIL_REQUEST_GET_CURRENT_CALLS
+ client.paramLen = 0;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ if(error == 0)
+ {
+ p.readInt32(&call_num);
+ global_call_count = call_num;
+ if(call_num<=0)
+ {
+ lynq_call_state = CALL_OFF;
+ return 0;
+ }
+ for(int i = 0;i < call_num;i++)
+ {
+ p.readInt32(&temp);
+ call_list[i].call_state = temp;
+ p.readInt32(&call_list[i].call_id);
+ p.readInt32(&call_list[i].toa);
+ p.readInt32(&temp);
+ p.readInt32(&temp);
+ call_list[i].direction = temp;
+ p.readInt32(&temp);
+ p.readInt32(&temp);
+ p.readInt32(&temp);
+ remote_phoneNum = strdupReadString(p);
+ memcpy(call_list[i].addr,remote_phoneNum,strlen(remote_phoneNum));
+ LYINFLOG("call_id=%d,call_state=%d,direction=%d,addr=%s,toa=%d",call_list[i].call_id,call_list[i].call_state,
+ call_list[i].direction,call_list[i].addr,call_list[i].toa);
+ p.readInt32(&temp);
+ remote_name = strdupReadString(p);
+ p.readInt32(&temp);
+ p.readInt32(&temp);
+ if(temp==0)
+ {
+ continue;
+ }
+ p.readInt32(&temp); /* UUS Information is present */
+ p.readInt32(&temp);
+ p.readInt32(&temp);
+ p.read(uusData,temp);
+ }
+ }
+ return 0;
+}
+
+void cleanCallList(int lynq_call_id)
+{
+ lynq_call_lists[lynq_call_id].call_id = 0;
+ lynq_call_lists[lynq_call_id].call_state = 0;
+ lynq_call_lists[lynq_call_id].toa = 0;
+ lynq_call_lists[lynq_call_id].direction = 0;
+ lynq_call_lists[lynq_call_id].used = 0;
+ lynq_call_lists[lynq_call_id].hasTimeout = 0;
+ memset(lynq_call_lists[lynq_call_id].addr,0,sizeof(lynq_call_lists[lynq_call_id].addr));
+}
+int getUnusedElement()
+{
+ for(int i=0;i < LYNQ_CALL_MAX; i++)
+ {
+ if(lynq_call_lists[i].used!=1)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+int updateAddr(char addr[])
+{
+ int ret = 0;
+ ret = getUnusedElement();
+ memcpy(lynq_call_lists[ret].addr,addr,strlen(addr)+1);
+ lynq_call_lists[ret].used = 1;
+ return ret;
+}
+void updateCallList(lynq_call_list_e_t *callList, int call_id,int call_state,int toa,int direction)
+{
+ callList->call_id = call_id;
+ callList->call_state = call_state;
+ callList->toa = toa;
+ callList->direction = direction;
+ callList->used = 1;
+ callList->hasTimeout = 0;
+ return;
+}
+int waitCallstateChange(int mtime)
+{
+ int ret = 0;
+ int sec = 0;
+ int usec = 0;
+ struct timeval now;
+ struct timespec timeout;
+ gettimeofday(&now,NULL);
+ sec = mtime/1000;
+ usec = mtime%1000;
+ timeout.tv_sec = now.tv_sec+sec;
+ timeout.tv_nsec = now.tv_usec*1000+usec*1000000;
+ pthread_mutex_lock(&call_state_change_mutex);
+ ret = pthread_cond_timedwait(&call_state_change_cond,&call_state_change_mutex,&timeout);
+ pthread_mutex_unlock(&call_state_change_mutex);
+ return ret;
+}
+int waitIncomingCall()
+{
+ int ret = 0;
+ pthread_mutex_lock(&s_incoming_call_mutex);
+ ret = pthread_cond_wait(&s_incoming_call_cond,&s_incoming_call_mutex);
+ pthread_mutex_unlock(&s_incoming_call_mutex);
+ return ret;
+}
+int checkHasCall(char addr[])
+{
+ for(int i = 0;i<LYNQ_CALL_MAX;i++)
+ {
+ if(strcmp(lynq_call_lists[i].addr,addr)==0)
+ {
+ return 1;
+ }
+ }
+ return 0;
+}
+void sendSignalToWaitCallStateChange()
+{
+ pthread_mutex_lock(&call_state_change_mutex);
+ pthread_cond_signal(&call_state_change_cond);
+ pthread_mutex_unlock(&call_state_change_mutex);
+}
+void sendSignalIncomingCall()
+{
+ pthread_mutex_lock(&s_incoming_call_mutex);
+ pthread_cond_signal(&s_incoming_call_cond);
+ pthread_mutex_unlock(&s_incoming_call_mutex);
+}
+
+void addCallListToLynqCallList(lynq_call_list_e_t *callList, int call_id,int call_state,int toa,int direction,char addr[LYNQ_PHONE_NUMBER_MAX])
+{
+ callList->call_id = call_id;
+ callList->call_state = call_state;
+ callList->toa = toa;
+ callList->direction = direction;
+ memcpy(callList->addr,addr,strlen(addr)+1);
+ callList->used = 1;
+ callList->hasTimeout = 0;
+ return;
+}
+
+void *triggerGetCallList(void *parg)
+{
+ int ret=0;
+ lynq_call_list_t call_list[LYNQ_CALL_MAX];
+ while(call_list_loop)
+ {
+ pthread_mutex_lock(&s_urc_call_state_change_mutex);
+ pthread_cond_wait(&s_urc_call_state_change_cond, &s_urc_call_state_change_mutex);
+ LYDBGLOG("triggerGetCallList event!!!\n");
+ memset(call_list,0,sizeof(call_list));
+ ret = lynq_get_current_call_list(call_list);
+ if(ret != 0)
+ {
+ printf("get current call list failure!!!\n");
+ break;
+ }
+ for(int i = 0;i < LYNQ_CALL_MAX;i++)
+ {
+ if(call_list[i].direction == 1)//MT call
+ {
+ if(call_list[i].call_state ==4)//LYNQ_CALL_INCOMING = 4, /* MT call only */
+ {
+ if(!checkHasCall(call_list[i].addr))
+ {
+ lynqIncomingCallId = getUnusedElement();
+ addCallListToLynqCallList(&lynq_call_lists[lynqIncomingCallId],call_list[i].call_id,call_list[i].call_state,call_list[i].toa,call_list[i].direction,call_list[i].addr);
+ sendSignalIncomingCall();
+ }
+ }
+ }
+ else
+ {
+ if(call_list[i].call_id==0)
+ {
+ break;
+ }
+ for(int n = 0 ; n < LYNQ_CALL_MAX; n++)
+ {
+ if(lynq_call_lists[n].hasTimeout==1)
+ {
+ /*hangup call with id*/
+ lynq_call_hungup(&n);
+ lynq_call_lists[n].hasTimeout==0;
+ continue;
+ }
+ if(strcmp(call_list[i].addr,lynq_call_lists[n].addr)==0)
+ {
+ updateCallList(&lynq_call_lists[n],call_list[i].call_id,call_list[i].call_state,call_list[i].toa,call_list[i].direction);
+ }
+ }
+ LYDBGLOG("[count:%d]call_id=%d,call_state=%d,direction=%d,addr=%s,toa=%d",i,call_list[i].call_id,call_list[i].call_state,
+ call_list[i].direction,call_list[i].addr,call_list[i].toa);
+ }
+ }
+ s_urc_event_complete = 1;
+ if(isDial==1)
+ {
+ sendSignalToWaitCallStateChange();
+ isDial = 0;
+ }
+ pthread_mutex_unlock(&s_urc_call_state_change_mutex);
+ }
+ return NULL;
+}
+
+void lynqRespWatingEvent()
+{
+ if(s_urc_event_complete==1)
+ {
+ pthread_mutex_lock(&s_urc_call_state_change_mutex);
+ pthread_cond_signal(&s_urc_call_state_change_cond);
+ s_urc_event_complete = 0;
+ pthread_mutex_unlock(&s_urc_call_state_change_mutex);
+ }
+ return;
+}
+
+/*Warren add for T800 platform 2021/11/19 start*/
+int lynq_socket_client_start()
+{
+ struct sockaddr_in lynq_socket_server_addr;
+ /* init lynq_socket_server_addr */
+ bzero(&lynq_socket_server_addr, sizeof(lynq_socket_server_addr));
+ lynq_socket_server_addr.sin_family = AF_INET;
+ lynq_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
+ lynq_socket_server_addr.sin_addr.s_addr = htons(INADDR_ANY);
+ /*
+ if(inet_pton(AF_INET,"127.0.0.1", &lynq_socket_server_addr.sin_addr) <= 0)
+ {
+ printf("[%s] is not a valid IPaddress\n", argv[1]);
+ exit(1);
+ }
+*/
+ lynq_client_sockfd = socket(AF_INET, SOCK_DGRAM, 0);
+ if(connect(lynq_client_sockfd, (struct sockaddr *)&lynq_socket_server_addr, sizeof(lynq_socket_server_addr)) == -1)
+ {
+ perror("connect error");
+ return -1;
+ }
+ return 0;
+}
+int lynq_update_call_list_loop()
+{
+ int ret = 0;
+ pthread_t tid;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+ ret = pthread_create(&tid,&attr,triggerGetCallList,NULL);
+ if(ret < 0)
+ {
+ LYERRLOG("lynq_update_call_list_loop fail!!!");
+ return -1;
+ }
+ LYDBGLOG("lynq_update_call_list_loop success!!!\n");
+ return 0;
+
+}
+void *thread_urc_recv(void *parg)
+{
+ int socket_fd = (int64_t)parg;
+ int len=0;
+ socklen_t addr_len=0;
+ uint8_t *dataLength = NULL;
+ char urc_data[LYNQ_REC_BUF];
+ int slot_id = -1;
+ int resp_type = -1;
+ int urcid = -1;
+ Parcel *p = NULL;
+ struct sockaddr_in dest_addr;
+ LYINFLOG("thread_urc_recv in running....\n");
+ while(urc_recive_status)
+ {
+ bzero(urc_data,LYNQ_REC_BUF);
+ //get data msg
+ len = recvfrom(socket_fd,urc_data,LYNQ_REC_BUF,0,(struct sockaddr *)&dest_addr,&addr_len);
+ if(len <= 0)
+ {
+ perror("thread_urc_recv step2 fail:");
+ break;
+ }
+ LYDBGLOG("=====>urc data len<=====:%d\n",len);
+ p = new Parcel();
+ if(p==NULL)
+ {
+ RLOGD("new parcel failure!!!");
+ break;
+ }
+ p->setData((uint8_t *)urc_data,len); // p.setData((uint8_t *) buffer, buflen);
+ p->setDataPosition(0);
+ if(p->dataAvail() > 0)
+ {
+ p->readInt32(&resp_type);
+ p->readInt32(&urcid);
+ p->readInt32(&slot_id);
+ //LYDBGLOG("*******Warren test*******:resp_type=%d,urcid=%d,slot_id=%d\n",resp_type,urcid,slot_id);
+ switch (urcid)
+ {
+ case 1001://RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED
+ {
+ LYINFLOG("**************:resp_type=%d,urcid=%d,slot_id=%d\n",resp_type,urcid,slot_id);
+ lynqRespWatingEvent();
+ break;
+ }
+ case 1018://RIL_UNSOL_CALL_RING
+ {
+ if(global_call_auto_answer==1)
+ {
+ lynq_call_answer();
+ }
+ break;
+ }
+ case 1029://RIL_UNSOL_RINGBACK_TONE
+ case 3049://RIL_UNSOL_CALL_INFO_INDICATION
+ {
+ LYINFLOG("**************:resp_type=%d,urcid=%d,slot_id=%d\n",resp_type,urcid,slot_id);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ delete p;
+ p = NULL;
+ }
+ close(socket_fd);
+}
+int lynq_socket_urc_start()
+{
+ int socket_fd=0;
+ int rt=0;
+ int len=0;
+ int on=1;
+ struct sockaddr_in urc_local_addr;
+ pthread_t tid;
+ pthread_attr_t attr;
+ socket_fd = socket(AF_INET,SOCK_DGRAM,0);
+ printf("test 001\n");
+ if(socket_fd < 0)
+ {
+ perror("creaet socket for udp fail");
+ return -1;
+ }
+ urc_local_addr.sin_family = AF_INET;
+ urc_local_addr.sin_port = htons(LYNQ_URC_SERVICE_PORT);
+ urc_local_addr.sin_addr.s_addr = htons(INADDR_ANY);
+ /* Set socket to allow reuse of address and port, SO_REUSEADDR value is 2*/
+ rt = setsockopt(socket_fd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof on);
+ if(rt<0)
+ {
+ perror("SO_REUSEADDR fail\n");
+ return -1;
+ }
+ rt = bind(socket_fd ,(struct sockaddr*)&urc_local_addr, sizeof(urc_local_addr));
+ if (rt == -1)
+ {
+ perror("bind failed");
+ return -1;
+ }
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+ rt = pthread_create(&tid,&attr,thread_urc_recv,(void *)socket_fd);
+ if(rt < 0)
+ {
+ printf("urc loop failure!!!\n");
+ return -1;
+ }
+ printf("urc loop success!!!\n");
+ return 0;
+}
+int getSelfElement(char addr[])
+{
+ for(int i=0;i < LYNQ_CALL_MAX; i++)
+ {
+ if(lynq_call_lists[i].used==1)
+ {
+ if(strcmp(lynq_call_lists[i].addr,addr)==0)
+ {
+ return i;
+ }
+
+ }
+ }
+ return -1;
+}
+
+void lynq_call_state_change_test(int soc_id)
+{
+ printf("call state change,sim:%d\n",soc_id);
+}
+int lynq_init_call(int uToken)
+{
+ int result = 0;
+ Global_uToken = uToken;
+ LYLOGSET(LOG_INFO);
+ LYLOGEINIT(USER_LOG_TAG);
+ result = lynq_socket_client_start();
+ if(result!=0)
+ {
+ return -1;
+ }
+ result = lynq_socket_urc_start();
+ if(result!=0)
+ {
+ return -1;
+ }
+ result = lynq_update_call_list_loop();
+ if(result!=0)
+ {
+ return -1;
+ }
+ memset(lynq_call_lists,0,sizeof(lynq_call_lists));
+ LYDBGLOG("lynq init call success!!!");
+ return 0;
+}
+int lynq_deinit_call()
+{
+ close(lynq_client_sockfd);
+ urc_recive_status = 0;
+ call_list_loop = 0;
+ return 0;
+}
+int lynq_call(int* handle,char addr[])
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int lynq_call_id = -1;
+ if(addr==NULL)
+ {
+ LYERRLOG("Phone num is null!!!");
+ return -1;
+ }
+ client.uToken = Global_uToken;
+ client.request = 10;//RIL_REQUEST_DIAL
+ client.paramLen = 2;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ memcpy(client.param,addr,strlen(addr)+1);
+ strcat(client.param," 0");
+ LYERRLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ lynq_call_id = updateAddr(addr);
+ if(error==0)
+ {
+ isDial = 1;
+ if(waitCallstateChange(3000)==ETIMEDOUT)//3000ms
+ {
+ error = LYNQ_E_TIME_OUT;
+ LYERRLOG("timeout:wait Call state fail!!!");
+ lynq_call_lists[lynq_call_id].hasTimeout = 1;
+ *handle = lynq_call_id;
+ return error;
+ }
+ *handle = lynq_call_id;
+ }
+ return error;
+}
+int lynq_call_answer()
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ client.uToken = Global_uToken;
+ client.request = 40;//RIL_REQUEST_DIAL
+ client.paramLen = 0;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ return error;
+}
+int lynq_call_hungup(int* handle)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int call_id = 0;
+ int lynq_call_id = 0;
+ client.uToken = Global_uToken;
+ client.request = 12;//RIL_REQUEST_HUNGUP
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ lynq_call_id = *handle;
+ call_id = lynq_call_lists[lynq_call_id].call_id;
+ sprintf(client.param,"%d",call_id);
+ LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ if(error==0)
+ {
+ cleanCallList(lynq_call_id);
+ }
+ return error;
+}
+int lynq_call_hungup_all()
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ client.uToken = Global_uToken;
+ client.request = 17;//RIL_REQUEST_UDUB
+ client.paramLen = 0;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ return error;
+}
+int lynq_wait_incoming_call(int *handle)
+{
+ waitIncomingCall();
+ *handle = lynqIncomingCallId;
+ LYINFLOG("lynq incoming call id:%d",lynqIncomingCallId);
+ return 0;
+}
+
+int lynq_set_auto_answercall(const int mode)
+{
+ global_call_auto_answer = mode;
+ LYINFLOG("auto answer call mode =%d",mode);
+ return 0;
+}
+int lynq_get_mute_status(int *status)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ if(status==NULL)
+ {
+ LYERRLOG("status is null");
+ return -1;
+ }
+ client.uToken = Global_uToken;
+ client.request = 54;//RIL_REQUEST_GET_MUTE
+ client.paramLen = 0;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ p.readInt32(status);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ return error;
+}
+int lynq_set_mute_mic(const int enable)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ client.uToken = Global_uToken;
+ client.request = 53;//RIL_REQUEST_SET_MUTE
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%d",enable);
+ LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ return error;
+}
+int lynq_set_DTMF(const char callnum)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ if(!lynq_call_state)
+ {
+ LYERRLOG("LYNQ_E_CONFLICT");
+ return LYNQ_E_CONFLICT;
+ }
+ client.uToken = Global_uToken;
+ client.request = 24;//RIL_REQUEST_DTMF
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%c",callnum);
+ LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ return error;
+
+}
+int lynq_set_DTMF_volume(const int volume)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ //if(!lynq_call_state)
+ //{
+ // LYERRLOG("LYNQ_E_CONFLICT");
+ // return LYNQ_E_CONFLICT;
+ //}
+ client.uToken = Global_uToken;
+ client.request = 8003;//LYNQ_REQUEST_SET_DTMF_VOLUME
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%d",volume);
+ LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_CALL] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ return 0;
+}
+int lynq_get_current_call_state(int *handle, int *call_state,int *toa,int *direction,char addr[])
+{
+ int lynq_call_id = 0;
+ if(handle==NULL)
+ {
+ return LYNQ_E_NULL_ANONALY;
+ }
+ lynq_call_id = *handle;
+ *call_state = lynq_call_lists[lynq_call_id].call_state;
+ *toa = lynq_call_lists[lynq_call_id].toa;
+ *direction = lynq_call_lists[lynq_call_id].direction;
+ memcpy(addr,lynq_call_lists[lynq_call_id].addr,strlen(lynq_call_lists[lynq_call_id].addr)+1);
+ return 0;
+}
+
+#if 0
+int main(int argc,char **argv)
+{
+ int n = 0;
+ n = lynq_init_call(lynq_call_state_change_test,2222);
+ if(n<0)
+ {
+ printf("lynq init call fail!!!\n");
+ return -1;
+ }
+ printf("lynq call init success!!!\n");
+ char phoneNum[LYNQ_PHONE_NUMBER_MAX];
+ sprintf(phoneNum,"18180053406 0",strlen("18180053406 0")+1);
+ lynq_call(phoneNum);
+ while(1)
+ {
+ sleep(1);
+ }
+ return 0;
+}
+#endif
+/*Warren add for T800 platform 2021/11/19 end*/
diff --git a/src/lynq/lib/liblynq-call/makefile b/src/lynq/lib/liblynq-call/makefile
new file mode 100755
index 0000000..cacaf71
--- /dev/null
+++ b/src/lynq/lib/liblynq-call/makefile
@@ -0,0 +1,70 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+ -std=gnu++14 \
+ -g -Os \
+ -flto \
+ -DRIL_SHLIB \
+ -DATCI_PARSE \
+ -fPIC \
+ -DKEEP_ALIVE \
+ -DECALL_SUPPORT \
+ -fpermissive \
+
+
+
+$(warning ################# lynq data demo ROOT: $(ROOT),includedir:$(includedir))
+LOCAL_PATH = .
+
+LOCAL_C_INCLUDES = \
+ -I. \
+ -I$(LOCAL_PATH)/include/libcall \
+ -I$(ROOT)$(includedir)/logger \
+ -I$(ROOT)$(includedir)/liblog \
+
+
+LOCAL_LIBS := \
+ -L. \
+ -ldl \
+ -lstdc++ \
+ -llog \
+ -lcutils \
+ -lutils \
+ -lbinder \
+ -lpthread \
+ -llynq-log \
+
+
+SOURCES = $(wildcard *.cpp)
+
+EXECUTABLE = liblynq-call.so
+
+OBJECTS=$(SOURCES:.cpp=.o)
+
+
+.PHONY: build clean install pack_rootfs
+all: build
+$(EXECUTABLE): $(OBJECTS)
+ $(CXX) -shared -Wl,--no-undefined $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.cpp
+ $(CXX) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
+
+build: $(EXECUTABLE)
+ $(warning ########## build $(EXECUTABLE) ##########)
+install:
+ mkdir -p $(ROOT)$(base_libdir)/
+ install $(EXECUTABLE) $(ROOT)$(base_libdir)/
+ mkdir -p $(ROOT)$(includedir)/$(NAME)/sdk
+pack_rootfs:
+ mkdir -p $(PACK_INITRAMFS_TO)$(base_libdir)/
+ cp -af $(EXECUTABLE) $(PACK_INITRAMFS_TO)$(base_libdir)/
+ $(CROSS)strip $(PACK_INITRAMFS_TO)$(base_libdir)/$(EXECUTABLE)
+ mkdir -p $(PACK_TO)$(base_libdir)/
+ cp -af $(EXECUTABLE) $(PACK_TO)$(base_libdir)/
+ $(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
+.PHONY: clean
+clean:
+ $(RM) $(OBJECTS) $(EXECUTABLE)
+ -find . -name "*.o" -delete
diff --git a/src/lynq/lib/liblynq-data/LICENSE b/src/lynq/lib/liblynq-data/LICENSE
new file mode 100755
index 0000000..77f59ed
--- /dev/null
+++ b/src/lynq/lib/liblynq-data/LICENSE
@@ -0,0 +1,31 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MediaTek Software") are
+protected under relevant copyright laws. The information contained herein is
+confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+the prior written permission of MediaTek inc. and/or its licensors, any
+reproduction, modification, use or disclosure of MediaTek Software, and
+information contained herein, in whole or in part, shall be strictly
+prohibited.
+
+MediaTek Inc. (C) 2015. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
+RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
+INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
+TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
+ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
+RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
+MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
+CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
diff --git a/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h b/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h
new file mode 100755
index 0000000..2503f5d
--- /dev/null
+++ b/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h
@@ -0,0 +1,63 @@
+#ifndef LYNQ_DATA_H
+#define LYNQ_DATA_H 1
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define LYNQ_APN_CHANNEL_MAX 10
+#define LYNQ_PDP_TYPE_MAX_LEN 16
+#define LYNQ_IFACE_NAME_MAX_LEN 50
+#define LYNQ_APN_MAX_LEN 50
+#define LYNQ_APN_TYPE_MAX_LEN 50
+#define LYNQ_PDP_ADDR_MAX_LEN 64
+#define LYNQ_DNS_ADDR_MAX_LEN 64
+#define LYNQ_GETWAYS_ADDR_MAX_LEN 64
+#define LYNQ_POXY_ADDR_MAX_LEN 64
+
+typedef struct {
+ int status; /* A RIL_DataCallFailCause, 0 which is PDP_FAIL_NONE if no error */
+ int suggestedRetryTime; /* If status != 0, this fields indicates the suggested retry
+ back-off timer value RIL wants to override the one
+ pre-configured in FW.
+ The unit is miliseconds.
+ The value < 0 means no value is suggested.
+ The value 0 means retry should be done ASAP.
+ The value of INT_MAX(0x7fffffff) means no retry. */
+ int cid; /* Context ID, uniquely identifies this call */
+ int active; /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
+ char type[LYNQ_PDP_TYPE_MAX_LEN]; /* One of the PDP_type values in TS 27.007 section 10.1.1.
+ For example, "IP", "IPV6", "IPV4V6", or "PPP". If status is
+ PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED this is the type supported
+ such as "IP" or "IPV6" */
+ char ifname[LYNQ_IFACE_NAME_MAX_LEN]; /* The network interface name */
+ char addresses[LYNQ_PDP_ADDR_MAX_LEN]; /* A space-delimited list of addresses with optional "/" prefix length,
+ e.g., "192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
+ May not be empty, typically 1 IPv4 or 1 IPv6 or
+ one of each. If the prefix length is absent the addresses
+ are assumed to be point to point with IPv4 having a prefix
+ length of 32 and IPv6 128. */
+ char dnses[LYNQ_DNS_ADDR_MAX_LEN]; /* A space-delimited list of DNS server addresses,
+ e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
+ May be empty. */
+ char gateways[LYNQ_GETWAYS_ADDR_MAX_LEN]; /* A space-delimited list of default gateway addresses,
+ e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
+ May be empty in which case the addresses represent point
+ to point connections. */
+ char pcscf[LYNQ_POXY_ADDR_MAX_LEN]; /* the Proxy Call State Control Function address
+ via PCO(Protocol Configuration Option) for IMS client. */
+ int mtu; /* MTU received from network
+ Value <= 0 means network has either not sent a value or
+ sent an invalid value */
+} lynq_data_call_response_v11_t;
+int lynq_init_data(int uToken);
+int lynq_deinit_data();
+int lynq_setup_data_call(int *handle);
+int lynq_deactive_data_call(int *handle);
+int lynq_setup_data_call_sp(int *handle,char *apn,char *apnType,char *user,char *password,char *authType,char *normalProtocol,char *roamingProtocol);
+//int lynq_deactive_data_call_sp(int *handle,char *apnType);
+int lynq_get_data_call_list(int *handle,lynq_data_call_response_v11_t dataCallList);
+int lynq_wait_data_call_state_change(int *handle);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
new file mode 100755
index 0000000..b1f8512
--- /dev/null
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -0,0 +1,772 @@
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <binder/Parcel.h>
+#include <log/log.h>
+#include "lynq_data.h"
+#include <cutils/jstring.h>
+#include <pthread.h>
+#include "liblog/lynq_deflog.h"
+#include <sys/time.h>
+#define LYNQ_SERVICE_PORT 8088
+#define LYNQ_URC_SERVICE_PORT 8086
+#define LYNQ_REC_BUF 8192
+#define LYNQ_REQUEST_PARAM_BUF 8192
+#define LYQN_SEDN_BUF 1024*8+sizeof(int)*3
+#define USER_LOG_TAG "LYNQ_DATA"
+
+using ::android::Parcel;
+typedef struct{
+ int uToken;
+ int request;
+ int paramLen;
+ char param[LYNQ_REQUEST_PARAM_BUF];
+}lynq_client_t;
+typedef enum{
+ LYNQ_E_CARDSTATE_ERROR=8000,
+ /* The voice service state is out of service*/
+ LYNQ_E_STATE_OUT_OF_SERVICE=8001,
+ /* The voice service state is EMERGENCY_ONLY*/
+ LYNQ_E_STATE_EMERGENCY_ONLY=8002,
+ /* The radio power is power off*/
+ LYNQ_E_STATE_POWER_OFF=8003,
+ LYNQ_E_TIME_OUT=8004,
+ /*create or open sms DB fail */
+ LYNQ_E_SMS_DB_FAIL=8005,
+ /*Failed to execute sql statement*/
+ LYNQ_E_SMS_SQL_FAIL = 8006,
+ LYNQ_E_SMS_NOT_FIND = 8007,
+ /* The logic conflict*/
+ LYNQ_E_CONFLICT=9000,
+ /*Null anomaly*/
+ LYNQ_E_NULL_ANONALY=9001
+}LYNQ_E;
+
+int lynq_client_sockfd = 0;
+int Global_uToken = 0;
+bool urc_recive_status = 1;
+int lynq_data_call_change_id = -1;
+static pthread_mutex_t s_data_call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t s_data_call_state_change_cond = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t s_pdn_change_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t s_pdn_change_cond = PTHREAD_COND_INITIALIZER;
+
+typedef struct{
+ char apn[LYNQ_APN_MAX_LEN];
+ char apnType[LYNQ_APN_TYPE_MAX_LEN];
+ char ifaceName[LYNQ_IFACE_NAME_MAX_LEN];
+ int hasUsed;
+ int hasTimeout;
+}lynq_apn_t;
+lynq_apn_t lynq_apn_table[LYNQ_APN_CHANNEL_MAX] = {};
+lynq_data_call_response_v11_t lynq_data_call_lists[LYNQ_APN_CHANNEL_MAX] = {};
+int lynq_data_call = 0;
+
+int getLynqApnID(char apnType[])
+{
+ int ret = 0;
+ for(ret;ret<LYNQ_APN_CHANNEL_MAX;ret++)
+ {
+ if(strcmp(lynq_apn_table[ret].apnType,apnType)==0)
+ {
+ return ret;
+ }
+ }
+ return -1;
+}
+void updateApnTable(lynq_apn_t *apn_table,char apn[],char apntype[],char ifaceName[])
+{
+ if(apn_table==NULL)
+ {
+ LYERRLOG("apn_table is null");
+ return;
+ }
+ memcpy(apn_table->apn,apn,strlen(apn)+1);
+ memcpy(apn_table->apnType,apntype,strlen(apntype)+1);
+ memcpy(apn_table->ifaceName,ifaceName,strlen(ifaceName)+1);
+ apn_table->hasTimeout = 0;
+ apn_table->hasUsed = 1;
+ return;
+}
+void cleanOnceApnTable(int apnId)
+{
+ if((apnId < 0) || (apnId > LYNQ_APN_CHANNEL_MAX-1))
+ {
+ LYERRLOG("apn id is invalid!!!");
+ return;
+ }
+ lynq_apn_table[apnId].hasTimeout = 0;
+ lynq_apn_table[apnId].hasUsed = 0;
+ bzero(lynq_apn_table[apnId].apn,LYNQ_APN_MAX_LEN);
+ bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);
+ bzero(lynq_apn_table[apnId].ifaceName,LYNQ_IFACE_NAME_MAX_LEN);
+ return;
+}
+int getUnusedElement()
+{
+ for(int i=0;i < LYNQ_APN_CHANNEL_MAX; i++)
+ {
+ if(lynq_apn_table[i].hasUsed!=1)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+int updateApn(char apnType[])
+{
+ int ret = 0;
+ ret = getUnusedElement();
+ memcpy(lynq_apn_table[ret].apnType,apnType,strlen(apnType)+1);
+ lynq_apn_table[ret].hasUsed = 1;
+ return ret;
+}
+
+int waitPdnChange()
+{
+ int ret = 0;
+ pthread_mutex_lock(&s_pdn_change_mutex);
+ ret = pthread_cond_wait(&s_pdn_change_cond,&s_pdn_change_mutex);
+ pthread_mutex_unlock(&s_pdn_change_mutex);
+ return ret;
+}
+int waitDataCallstateChange(int mtime)
+{
+ int ret = 0;
+ int sec = 0;
+ int usec = 0;
+ struct timeval now;
+ struct timespec timeout;
+ gettimeofday(&now,NULL);
+ sec = mtime/1000;
+ usec = mtime%1000;
+ timeout.tv_sec = now.tv_sec+sec;
+ timeout.tv_nsec = now.tv_usec*1000+usec*1000000;
+ pthread_mutex_lock(&s_data_call_state_change_mutex);
+ ret = pthread_cond_timedwait(&s_data_call_state_change_cond,&s_data_call_state_change_mutex,&timeout);
+ pthread_mutex_unlock(&s_data_call_state_change_mutex);
+ return ret;
+}
+void sendSignalDataCallStateChange()
+{
+ pthread_mutex_lock(&s_data_call_state_change_mutex);
+ pthread_cond_signal(&s_data_call_state_change_cond);
+ pthread_mutex_unlock(&s_data_call_state_change_mutex);
+ return;
+}
+void sendSignalPdnChange()
+{
+ pthread_mutex_lock(&s_pdn_change_mutex);
+ pthread_cond_signal(&s_pdn_change_cond);
+ pthread_mutex_unlock(&s_pdn_change_mutex);
+ return;
+}
+
+int get_response(int sockfd,Parcel &p)
+{
+ int len = 0;
+ char recvline[LYNQ_REC_BUF];
+ bzero(recvline,LYNQ_REC_BUF);
+ /* receive data from server */
+ len = read(sockfd, recvline, LYNQ_REC_BUF);
+ if(len == -1)
+ {
+ perror("read error");
+ return -1;
+ }
+ printf("===>n=%d\n",len);
+ if (recvline != NULL) {
+ p.setData((uint8_t *)recvline,len); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ }
+ return 0;
+}
+int JumpHeader(Parcel &p,int *resp_type,int *request,int *slot_id,int *error)
+{
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(resp_type);
+ p.readInt32(request);
+ p.readInt32(slot_id);
+ p.readInt32(error);
+ return 0;
+ }
+ else
+ {
+ return -1;
+ }
+}
+int send_request(int sockfd,lynq_client_t *client_tmp)
+{
+ int ret=0;
+ ret = write(sockfd, client_tmp, LYQN_SEDN_BUF);
+ if(ret==-1)
+ {
+ perror("write error");
+ return -1;
+ }
+ return 0;
+}
+static char *strdupReadString(Parcel &p) {
+ size_t stringlen;
+ const char16_t *s16;
+ s16 = p.readString16Inplace(&stringlen);
+ return strndup16to8(s16, stringlen);
+}
+static char *strdupReadString_p(Parcel *p) {
+ size_t stringlen;
+ const char16_t *s16;
+ s16 = p->readString16Inplace(&stringlen);
+ return strndup16to8(s16, stringlen);
+}
+
+
+/*Warren add for T800 platform 2021/11/19 start*/
+int lynq_socket_client_start()
+{
+ struct sockaddr_in lynq_socket_server_addr;
+ /* init lynq_socket_server_addr */
+ bzero(&lynq_socket_server_addr, sizeof(lynq_socket_server_addr));
+ lynq_socket_server_addr.sin_family = AF_INET;
+ lynq_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
+ lynq_socket_server_addr.sin_addr.s_addr = htons(INADDR_ANY);
+ /*
+ if(inet_pton(AF_INET,"127.0.0.1", &lynq_socket_server_addr.sin_addr) <= 0)
+ {
+ printf("[%s] is not a valid IPaddress\n", argv[1]);
+ exit(1);
+ }
+*/
+ lynq_client_sockfd = socket(AF_INET, SOCK_DGRAM, 0);
+ if(connect(lynq_client_sockfd, (struct sockaddr *)&lynq_socket_server_addr, sizeof(lynq_socket_server_addr)) == -1)
+ {
+ perror("connect error");
+ return -1;
+ }
+ return 0;
+}
+void *thread_urc_recv(void *parg)
+{
+ int socket_fd = (int64_t)parg;
+ int len=0;
+ socklen_t addr_len=0;
+ uint8_t *dataLength = NULL;
+ char urc_data[LYNQ_REC_BUF];
+ char apn[LYNQ_APN_MAX_LEN];
+ char apnType[LYNQ_APN_TYPE_MAX_LEN];
+ int pdnState = 0;
+ char ifaceName[LYNQ_IFACE_NAME_MAX_LEN];
+ int slot_id = -1;
+ int resp_type = -1;
+ int urcid = -1;
+ char *urc_msg = NULL;
+ Parcel *p = NULL;
+ struct sockaddr_in dest_addr;
+ LYINFLOG("thread_urc_recv in running....\n");
+ while(urc_recive_status)
+ {
+ bzero(urc_data,LYNQ_REC_BUF);
+ //get data msg
+ len = recvfrom(socket_fd,urc_data,LYNQ_REC_BUF,0,(struct sockaddr *)&dest_addr,&addr_len);
+ if(len <= 0)
+ {
+ perror("thread_urc_recv step2 fail:");
+ break;
+ }
+ LYDBGLOG("=====>urc data len<=====:%d\n",len);
+ p = new Parcel();
+ if(p==NULL)
+ {
+ RLOGD("new parcel failure!!!");
+ break;
+ }
+ p->setData((uint8_t *)urc_data,len); // p.setData((uint8_t *) buffer, buflen);
+ p->setDataPosition(0);
+ if(p->dataAvail() > 0)
+ {
+ p->readInt32(&resp_type);
+ p->readInt32(&urcid);
+ p->readInt32(&slot_id);
+ //LYDBGLOG("*******Warren test*******:resp_type=%d,urcid=%d,slot_id=%d\n",resp_type,urcid,slot_id);
+ switch (urcid)
+ {
+ case 9003://LYNQ_URC_DATA_CALL_STATUS_IND
+ {
+ LYINFLOG("**************:resp_type=%d,urcid=%d,slot_id=%d\n",resp_type,urcid,slot_id);
+ p->readInt32(&pdnState);
+ bzero(apn,LYNQ_APN_MAX_LEN);
+ bzero(apnType,LYNQ_APN_TYPE_MAX_LEN);
+ bzero(ifaceName,LYNQ_IFACE_NAME_MAX_LEN);
+ if(pdnState!=4)//PDN_DISCONNECTED
+ {
+ urc_msg = strdupReadString_p(p);
+ int len = strlen(urc_msg);
+ if(len < LYNQ_APN_MAX_LEN-1)
+ {
+ memcpy(apn,urc_msg,len+1);
+ }
+ urc_msg = strdupReadString_p(p);
+ len = strlen(urc_msg);
+ if(len < LYNQ_APN_TYPE_MAX_LEN-1)
+ {
+ memcpy(apnType,urc_msg,len+1);
+ }
+ urc_msg = strdupReadString_p(p);
+ len = strlen(urc_msg);
+ if(len < LYNQ_IFACE_NAME_MAX_LEN-1)
+ {
+ memcpy(ifaceName,urc_msg,strlen(urc_msg)+1);
+ }
+ //sendSignalDataCallStateChange();
+ }
+ int apnId = getLynqApnID(apnType);
+ if(lynq_apn_table[apnId].hasTimeout==1)
+ {
+ LYERRLOG("apn:%s has time out",lynq_apn_table[apnId].apn);
+ lynq_deactive_data_call(&apnId);
+ continue;
+ }
+ updateApnTable(&lynq_apn_table[apnId], apn,apnType,ifaceName);
+ sendSignalPdnChange();
+ lynq_data_call_change_id = apnId;
+ if(lynq_data_call==1)
+ {
+ sendSignalDataCallStateChange();
+ lynq_data_call = 0;
+ }
+ /*
+ if(dataCb!=NULL)
+ {
+ (*dataCb)(apn,apnType,pdnState,ifaceName);
+ }
+ */
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ delete p;
+ p = NULL;
+ }
+ close(socket_fd);
+}
+int lynq_socket_urc_start()
+{
+ int socket_fd=0;
+ int rt=0;
+ int len=0;
+ int on=1;
+ struct sockaddr_in urc_local_addr;
+ pthread_t tid;
+ pthread_attr_t attr;
+ socket_fd = socket(AF_INET,SOCK_DGRAM,0);
+ printf("test 001\n");
+ if(socket_fd < 0)
+ {
+ perror("creaet socket for udp fail");
+ return -1;
+ }
+ urc_local_addr.sin_family = AF_INET;
+ urc_local_addr.sin_port = htons(LYNQ_URC_SERVICE_PORT);
+ urc_local_addr.sin_addr.s_addr = htons(INADDR_ANY);
+ /* Set socket to allow reuse of address and port, SO_REUSEADDR value is 2*/
+ rt = setsockopt(socket_fd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof on);
+ if(rt<0)
+ {
+ perror("SO_REUSEADDR fail\n");
+ return -1;
+ }
+ rt = bind(socket_fd ,(struct sockaddr*)&urc_local_addr, sizeof(urc_local_addr));
+ if (rt == -1)
+ {
+ perror("bind failed");
+ return -1;
+ }
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+ rt = pthread_create(&tid,&attr,thread_urc_recv,(void *)socket_fd);
+ if(rt < 0)
+ {
+ printf("urc loop failure!!!\n");
+ return -1;
+ }
+ printf("urc loop success!!!\n");
+ return 0;
+}
+void lynq_call_state_change_test(int soc_id)
+{
+ printf("call state change,sim:%d\n",soc_id);
+}
+void lynq_data_call_state_cb_test(char apn[LYNQ_APN_MAX_LEN],char apnType[LYNQ_APN_TYPE_MAX_LEN],int pdnState,char ifaceName[LYNQ_IFACE_NAME_MAX_LEN])
+{
+ printf("data state change,apn=%s,apntype=%s,pdnstate=%d,ifacename=%s:%d\n",apn,apnType,pdnState,ifaceName);
+}
+
+int lynq_init_data(int uToken)
+{
+ int result = 0;
+ Global_uToken = uToken;
+ LYLOGSET(LOG_INFO);
+ LYLOGEINIT(USER_LOG_TAG);
+ result = lynq_socket_client_start();
+ if(result!=0)
+ {
+ LYERRLOG("init socket client fail!!!");
+ return -1;
+ }
+ result = lynq_socket_urc_start();
+ if(result!=0)
+ {
+ LYERRLOG("init socket urc fail!!!");
+ return -1;
+ }
+ memset(lynq_apn_table,0,sizeof(lynq_apn_table));
+ LYDBGLOG("lynq init call success!!!");
+ return 0;
+
+}
+int lynq_deinit_data()
+{
+ close(lynq_client_sockfd);
+ for(int i =0;i<LYNQ_APN_CHANNEL_MAX;i++)
+ {
+ if(lynq_apn_table[i].apnType!=NULL)
+ {
+ lynq_deactive_data_call(&i);
+ }
+ }
+ urc_recive_status = 0;
+ return 0;
+}
+int lynq_setup_data_call(int *handle)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ char iface = NULL;
+ int lynq_data_call_id = 0;
+ if(handle==NULL)
+ {
+ LYERRLOG("handle is null!!!");
+ return LYNQ_E_NULL_ANONALY;
+ }
+ client.uToken = Global_uToken;
+ client.request = 27;//RIL_REQUEST_SETUP_DATA_CALL
+ client.paramLen = 0;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ LYERRLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ lynq_data_call_id = updateApn("default");
+ lynq_data_call = 1;
+ if(error==0)
+ {
+ if(waitDataCallstateChange(1000)==ETIMEDOUT)//1000ms
+ {
+ error = LYNQ_E_TIME_OUT;
+ LYERRLOG("timeout:wait data Call state fail!!!");
+ lynq_apn_table[lynq_data_call_id].hasTimeout = 1;
+ return error;
+ }
+ *handle = lynq_data_call_id;
+ }
+ return error;
+}
+int lynq_deactive_data_call(int *handle)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int lynq_data_call_id = -1;
+ lynq_data_call_id = *handle;
+ if(handle==NULL)
+ {
+ LYERRLOG("handle is null!!!");
+ return -1;
+ }
+ client.uToken = Global_uToken;
+ client.request = 41;//RIL_REQUEST_DEACTIVATE_DATA_CALL
+ if(strcmp(lynq_apn_table[lynq_data_call_id].apnType,"default")==0)
+ {
+ client.paramLen = 0;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ }
+ else
+ {
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%s",lynq_apn_table[lynq_data_call_id].apnType);
+ }
+ LYERRLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ cleanOnceApnTable(lynq_data_call_id);
+ return error;
+}
+int lynq_setup_data_call_sp(int *handle,char *apn,char *apnType,char *user,char *password,char *authType,char *normalProtocol,char *roamingProtocol)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ char iface = NULL;
+ int lynq_data_call_id = -1;
+ char *argv[10] = {};
+ if(handle==NULL||apn==NULL||apnType==NULL)
+ {
+ LYERRLOG("handle ,apn or apntype is null!!!");
+ return -1;
+ }
+ if(user==NULL)
+ {
+ argv[1] = "null";
+ }
+ else
+ {
+ argv[1] = user;
+ }
+ if(password==NULL)
+ {
+ argv[2] = "null";
+ }
+ else
+ {
+ argv[2] = password;
+ }
+ if(authType==NULL)
+ {
+ argv[3] = "null";
+ }
+ else
+ {
+ argv[3] = authType;
+ }
+ if(normalProtocol==NULL)
+ {
+ argv[4] = "null";
+ }
+ else
+ {
+ argv[4] = normalProtocol;
+ }
+ if(roamingProtocol==NULL)
+ {
+ argv[5] = "null";
+ }
+ else
+ {
+ argv[5] = roamingProtocol;
+ }
+ client.uToken = Global_uToken;
+ client.request = 27;//RIL_REQUEST_SETUP_DATA_CALL
+ client.paramLen = 7;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%s %s %s %s %s %s %s",apn,apnType,argv[1],argv[2],argv[3],argv[4],argv[5]);
+ LYERRLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ lynq_data_call_id = updateApn(apnType);
+ if(error==0)
+ {
+ if(waitDataCallstateChange(1000)==ETIMEDOUT)//1000ms
+ {
+ error = LYNQ_E_TIME_OUT;
+ LYERRLOG("timeout:wait data Call state fail!!!");
+ lynq_apn_table[lynq_data_call_id].hasTimeout = 1;
+ return error;
+ }
+ *handle = lynq_data_call_id;
+ }
+ return error;
+}
+/*
+int lynq_deactive_data_call_sp(int *handle,char *apnType)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ if(handle==NULL||apnType==NULL)
+ {
+ LYERRLOG("handle is null!!!");
+ return -1;
+ }
+ client.uToken = Global_uToken;
+ client.request = 41;//RIL_REQUEST_DEACTIVATE_DATA_CALL
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%s",apnType);
+ LYERRLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ return error;
+}
+*/
+int getDataCallLists(lynq_data_call_response_v11_t dataCallList[LYNQ_APN_CHANNEL_MAX],int *realNum)
+{
+ Parcel p;
+ lynq_client_t client;
+ int resp_type = -1;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int version =0;
+ int num = 0;
+ int temp_int =0;
+ char *temp_char = NULL;
+ if(dataCallList==NULL)
+ {
+ LYERRLOG("dataCallList is null!!!");
+ return -1;
+ }
+ client.uToken = Global_uToken;
+ client.request = 57;//RIL_REQUEST_DATA_CALL_LIST
+ client.paramLen = 0;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ LYERRLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ return -1;
+ }
+ get_response(lynq_client_sockfd,p);
+ JumpHeader(p,&resp_type,&request,&slot_id,&error);
+ LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ p.readInt32(&version);
+ if(version==11)
+ {
+ p.readInt32(&num);
+ *realNum = num;
+ for (int i = 0; i < num; i++)
+ {
+ p.readInt32(&dataCallList[i].status);
+ p.readInt32(&dataCallList[i].suggestedRetryTime);
+ p.readInt32(&dataCallList[i].cid);
+ p.readInt32(&dataCallList[i].active);
+ temp_char = strdupReadString(p);
+ memcpy(dataCallList[i].type,temp_char,strlen(temp_char)+1);
+ temp_char = strdupReadString(p);
+ memcpy(dataCallList[i].ifname,temp_char,strlen(temp_char)+1);
+ temp_char = strdupReadString(p);
+ memcpy(dataCallList[i].addresses,temp_char,strlen(temp_char)+1);
+ temp_char = strdupReadString(p);
+ memcpy(dataCallList[i].dnses,temp_char,strlen(temp_char)+1);
+ temp_char = strdupReadString(p);
+ memcpy(dataCallList[i].gateways,temp_char,strlen(temp_char)+1);
+ temp_char = strdupReadString(p);
+ memcpy(dataCallList[i].pcscf,temp_char,strlen(temp_char)+1);
+ p.readInt32(&dataCallList[i].mtu);
+ }
+ }
+ return error;
+}
+int lynq_get_data_call_list(int *handle,lynq_data_call_response_v11_t dataCallList)
+{
+ lynq_data_call_response_v11_t interDataCallList[LYNQ_APN_CHANNEL_MAX]={};
+ int number = 0;
+ int lynq_data_call_id = 0;
+ int error = 0;
+ lynq_data_call_id = *handle;
+ if(handle==NULL)
+ {
+ LYERRLOG("handle is NULL");
+ return LYNQ_E_NULL_ANONALY;
+ }
+ memset(interDataCallList,0,sizeof(interDataCallList));
+ error = getDataCallLists(interDataCallList,&number);
+ if(error == 0)
+ {
+ for(int i = 0;i < number;i++)
+ {
+ if(strcmp(interDataCallList[i].ifname,lynq_apn_table[lynq_data_call_id].ifaceName)==0)
+ {
+ dataCallList.active = interDataCallList[i].active;
+ dataCallList.suggestedRetryTime = interDataCallList[i].suggestedRetryTime;
+ dataCallList.cid = interDataCallList[i].cid;
+ dataCallList.status = interDataCallList[i].status;
+ dataCallList.mtu = interDataCallList[i].mtu;
+ memcpy(dataCallList.addresses,interDataCallList[i].addresses,sizeof(interDataCallList[i].addresses));
+ memcpy(dataCallList.ifname,interDataCallList[i].ifname,sizeof(interDataCallList[i].ifname));
+ memcpy(dataCallList.dnses,interDataCallList[i].dnses,sizeof(interDataCallList[i].dnses));
+ memcpy(dataCallList.type,interDataCallList[i].type,sizeof(interDataCallList[i].type));
+ memcpy(dataCallList.gateways,interDataCallList[i].gateways,sizeof(interDataCallList[i].gateways));
+ memcpy(dataCallList.pcscf,interDataCallList[i].pcscf,sizeof(interDataCallList[i].pcscf));
+ }
+ }
+ }
+ return error;
+}
+int lynq_wait_data_call_state_change(int *handle)
+{
+ waitPdnChange();
+ *handle = lynq_data_call_change_id;
+ LYINFLOG("lynq data call id:%d",lynq_data_call_change_id);
+ return 0;
+}
+#if 0
+int main(int argc,char **argv)
+{
+ int n = 0;
+ n = lynq_init_call(lynq_call_state_change_test,2222);
+ if(n<0)
+ {
+ printf("lynq init call fail!!!\n");
+ return -1;
+ }
+ printf("lynq call init success!!!\n");
+ char phoneNum[LYNQ_PHONE_NUMBER_MAX];
+ sprintf(phoneNum,"18180053406 0",strlen("18180053406 0")+1);
+ lynq_call(phoneNum);
+ while(1)
+ {
+ sleep(1);
+ }
+ return 0;
+}
+#endif
+/*Warren add for T800 platform 2021/11/19 end*/
diff --git a/src/lynq/lib/liblynq-data/makefile b/src/lynq/lib/liblynq-data/makefile
new file mode 100755
index 0000000..0a02ec8
--- /dev/null
+++ b/src/lynq/lib/liblynq-data/makefile
@@ -0,0 +1,70 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+ -std=gnu++14 \
+ -g -Os \
+ -flto \
+ -DRIL_SHLIB \
+ -DATCI_PARSE \
+ -fPIC \
+ -DKEEP_ALIVE \
+ -DECALL_SUPPORT \
+ -fpermissive \
+
+
+
+$(warning ################# lynq data demo ROOT: $(ROOT),includedir:$(includedir))
+LOCAL_PATH = .
+
+LOCAL_C_INCLUDES = \
+ -I. \
+ -I$(LOCAL_PATH)/include/libdata \
+ -I$(ROOT)$(includedir)/logger \
+ -I$(ROOT)$(includedir)/liblog \
+
+
+LOCAL_LIBS := \
+ -L. \
+ -ldl \
+ -lstdc++ \
+ -llog \
+ -lcutils \
+ -lutils \
+ -lbinder \
+ -lpthread \
+ -llynq-log \
+
+
+SOURCES = $(wildcard *.cpp)
+
+EXECUTABLE = liblynq-data.so
+
+OBJECTS=$(SOURCES:.cpp=.o)
+
+
+.PHONY: build clean install pack_rootfs
+all: build
+$(EXECUTABLE): $(OBJECTS)
+ $(CXX) -shared -Wl,--no-undefined $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.cpp
+ $(CXX) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
+
+build: $(EXECUTABLE)
+ $(warning ########## build $(EXECUTABLE) ##########)
+install:
+ mkdir -p $(ROOT)$(base_libdir)/
+ install $(EXECUTABLE) $(ROOT)$(base_libdir)/
+ mkdir -p $(ROOT)$(includedir)/$(NAME)/sdk
+pack_rootfs:
+ mkdir -p $(PACK_INITRAMFS_TO)$(base_libdir)/
+ cp -af $(EXECUTABLE) $(PACK_INITRAMFS_TO)$(base_libdir)/
+ $(CROSS)strip $(PACK_INITRAMFS_TO)$(base_libdir)/$(EXECUTABLE)
+ mkdir -p $(PACK_TO)$(base_libdir)/
+ cp -af $(EXECUTABLE) $(PACK_TO)$(base_libdir)/
+ $(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
+.PHONY: clean
+clean:
+ $(RM) $(OBJECTS) $(EXECUTABLE)
+ -find . -name "*.o" -delete
diff --git a/src/lynq/lib/liblynq-sim/LICENSE b/src/lynq/lib/liblynq-sim/LICENSE
new file mode 100755
index 0000000..77f59ed
--- /dev/null
+++ b/src/lynq/lib/liblynq-sim/LICENSE
@@ -0,0 +1,31 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MediaTek Software") are
+protected under relevant copyright laws. The information contained herein is
+confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+the prior written permission of MediaTek inc. and/or its licensors, any
+reproduction, modification, use or disclosure of MediaTek Software, and
+information contained herein, in whole or in part, shall be strictly
+prohibited.
+
+MediaTek Inc. (C) 2015. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
+RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
+INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
+TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
+ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
+RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
+MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
+CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
diff --git a/src/lynq/lib/liblynq-sim/Makefile b/src/lynq/lib/liblynq-sim/Makefile
new file mode 100755
index 0000000..d01b9ca
--- /dev/null
+++ b/src/lynq/lib/liblynq-sim/Makefile
@@ -0,0 +1,72 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+ -g -Os \
+ -flto \
+ -fPIC \
+ -DRIL_SHLIB \
+ -DATCI_PARSE \
+ -DKEEP_ALIVE \
+ -DECALL_SUPPORT
+
+
+
+$(warning ################# lynq network demo 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)/vendor-ril \
+ -I$(ROOT)$(includedir)/include \
+
+
+
+LOCAL_LIBS := \
+ -L. \
+ -ldl \
+ -llog \
+ -lbinder \
+ -lpthread \
+ -llynq-log \
+ -lutils \
+ -lcutils \
+
+SOURCES = $(wildcard *.cpp wildcard *.h src/*.cpp)
+
+EXECUTABLE = liblynq-sim.so
+
+OBJECTS=$(SOURCES:.c=.o)
+all: $(EXECUTABLE)
+
+$(EXECUTABLE): $(OBJECTS)
+ $(CXX) -shared -Wl,--no-undefined $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.c
+ $(CC) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
+
+build: $(EXECUTABLE)
+ $(warning ########## build $(EXECUTABLE) ##########)
+
+install:
+ $(warning ################# lynq network demo EXECUTABLE: $(EXECUTABLE),base:$(base_libdir))
+ mkdir -p $(ROOT)$(base_libdir)/
+ install $(EXECUTABLE) $(ROOT)$(base_libdir)/
+
+pack_rootfs:
+ $(warning ################# lynq network demo PACK: $(PACK_INITRAMFS_TO),base:$(base_libdir))
+ mkdir -p $(PACK_INITRAMFS_TO)$(base_libdir)/
+ cp -af $(EXECUTABLE) $(PACK_INITRAMFS_TO)$(base_libdir)/
+ $(CROSS)strip $(PACK_INITRAMFS_TO)$(base_libdir)/$(EXECUTABLE)
+ mkdir -p $(PACK_TO)$(base_libdir)/
+ cp -af $(EXECUTABLE) $(PACK_TO)$(base_libdir)/
+ $(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
+
+.PHONY: clean
+clean:
+ $(RM) $(OBJECTS) $(EXECUTABLE)
+
+
diff --git a/src/lynq/lib/liblynq-sim/include/lynq_sim.h b/src/lynq/lib/liblynq-sim/include/lynq_sim.h
new file mode 100755
index 0000000..9b9593f
--- /dev/null
+++ b/src/lynq/lib/liblynq-sim/include/lynq_sim.h
@@ -0,0 +1,89 @@
+/*=============================================================================
+# FileName: lynq_sim.cpp
+# Desc: about SIMAPI
+# Author: mobiletek
+# Version: V1.0
+# LastChange: 2020-07-29
+# History:
+# If you need to use any API under lynq_sim, you must first call the init_sim() function to initialize these functions.
+=============================================================================*/
+#ifndef __LYNQ_SIM__
+#define __LYNQ_SIM__
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.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>
+#define MAX_BUF 20
+#define MAX_NUM 80
+#ifdef __cplusplus
+
+#define RIL_REQUEST_GET_SIM_STATUS 1
+#define RIL_REQUEST_GET_IMSI 11
+#define RIL_REQUEST_QUERY_ICCID 2026
+#define RIL_REQUEST_SET_FACILITY_LOCK 43
+#define RIL_REQUEST_QUERY_FACILITY_LOCK 42
+#define RIL_REQUEST_ENTER_SIM_PIN 2
+#define RIL_REQUEST_ENTER_SIM_PUK 3
+#define RIL_REQUEST_CHANGE_SIM_PIN 6
+#define RIL_REQUEST_OEM_HOOK_RAW 59
+
+
+extern "C" {
+#endif
+
+
+#define MAX_LEN 1024*8
+
+typedef struct{
+ int uToken;
+ int request;
+ int paramLen;
+ char param[MAX_LEN];
+}lynq_client_t;
+
+typedef struct
+{
+ char *MCCMCN;
+ char *buf;
+ char *MCN;
+}FindOperator;
+
+
+
+
+
+
+int lynq_get_sim_status(int *card_status);
+int lynq_get_imsi(char buf[]);
+
+/*add by lei*/
+int lynq_sim_init(int utoken);
+int lynq_sim_deinit(void);
+int lynq_enable_pin(char *pin);
+int lynq_disable_pin(char *pin);
+int lynq_query_operator(char buf[]);
+int lynq_get_iccid(char buf[]);
+int lynq_query_pin_lock(char *pin,int buf[]);
+int lynq_verify_pin(char *pin);
+int lynq_change_pin(char *old_pin, char *new_pin);
+int lynq_unlock_pin(char *puk, char *pin);
+int lynq_query_phone_number(char buf[]);
+/*add by lei*/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/src/lynq/lib/liblynq-sim/include/operator.h b/src/lynq/lib/liblynq-sim/include/operator.h
new file mode 100755
index 0000000..8001868
--- /dev/null
+++ b/src/lynq/lib/liblynq-sim/include/operator.h
@@ -0,0 +1,32 @@
+
+/*=============================================================================
+** FileName: command.h
+** Desc: about operator
+** Author: lei
+** Version: V1.0
+** LastChange: 2021-02-26
+** History:
+=============================================================================*/
+
+{"45400", "CSL", "HK" },
+{"45401", "NEW WORLD", "HK" },
+{"45402", "CSL", "HK" },
+{"45404", "Orange", "HK" },
+{"45406", "SMC", "HK" },
+{"45410", "NEW WORLD", "HK" },
+{"45412", "PEOPLES", "HK" },
+{"45416", "SUNDAY", "HK" },
+{"45418", "HK TELECOM", "HK" },
+{"46000", "CHINA MOBILE", "CN" },
+{"46001", "CHN-CUGSM", "CN" },
+{"46002", "CHINA MOBILE", "CN" },
+{"46003", "CHINA TELECOM", "CN" },
+{"46601", "Far EasTone", "TW" },
+{"46606", "TUNTEX", "TW" },
+{"46668", "ACeS", "TW" },
+{"46688", "KGT", "TW" },
+{"46692", "Chunghwa", "TW" },
+{"46693", "MobiTai", "TW" },
+{"46697", "TWN GSM", "TW" },
+{"46699", "TransAsia", "TW" },
+{(char *)NULL, (char *)NULL, (char *)NULL},
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp b/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
new file mode 100755
index 0000000..1a1f38e
--- /dev/null
+++ b/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
@@ -0,0 +1,602 @@
+/*=============================================================================
+# FileName: lynq_sim.cpp
+# Desc: about SIM API
+# Author: mobiletek
+# Version: V1.0
+# LastChange: 2021-12-29
+# History:
+=============================================================================*/
+#include <dlfcn.h>
+#include <string.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include "lynq_sim.h"
+
+#include <errno.h>
+
+
+#define MAX_NUM 10
+#define USER_LOG_TAG "LYNQ_SIM"
+
+using ::android::Parcel;
+#define DEST_PORT 8088
+#define DSET_IP_ADDRESS "127.0.0.1"
+lynq_client_t client_t;
+/* socket文件描述符 */
+int len_addr_serv;
+struct sockaddr_in addr_serv;
+static int sock_fd = 0;
+int Global_uToken = 0;
+int resp_type = -1;
+int request = -1;
+int slot_id = -1;
+int error1 = -1;
+
+FindOperator findOperator[] = {
+#include "include/operator.h"
+};
+
+static FindOperator*find_ope_command (char *name,FindOperator *Class){
+ if(name == NULL || Class == NULL){
+ return ((FindOperator *)NULL);
+ }
+ register int i;
+ for (i = 0; Class[i].MCCMCN; i++)
+ if (strncmp (name, Class[i].MCCMCN, 5) == 0)
+ return (&Class[i]);
+ return ((FindOperator *)NULL);
+}
+
+int lynq_sim_init(int utoken){
+ if(utoken < 0){
+ printf("init err.");
+ return -1;
+ }
+ // LYLOGSET(LOG_INFO);
+ // LYLOGEINIT(USER_LOG_TAG);
+ Global_uToken = utoken;
+ sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
+ if (-1 == sock_fd)
+ {
+ printf("socket open err.");
+ return -1;
+ }
+ /* 设置address */
+ 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);
+ len_addr_serv = sizeof(addr_serv);
+ /*test*/
+ return 0;
+}
+
+int lynq_sim_deinit(void){
+ close(sock_fd);
+ return 0;
+}
+
+static char * lynqStrdupReadString(Parcel &p) {
+ size_t stringlen;
+ const char16_t *s16;
+ s16 = p.readString16Inplace(&stringlen);
+ return strndup16to8(s16, stringlen);
+}
+
+static void delete_char(char str[],char target){
+ int i,j;
+ for(i=j=0;str[i]!='\0';i++){
+ if(str[i]!=target){
+ str[j++]=str[i];
+ }
+ }
+ str[j]='\0';
+}
+
+/*If you need to use any API under lynq_sim, you mustfirst call the init_sim() function to initialize these functions.*/
+int lynq_get_sim_status(int *card_status)
+{
+ int ret = -1;
+ if(card_status == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ int len = 0;
+ lynq_client_t client_t1;
+ memset(&client_t1, 0, sizeof(client_t1) );
+ client_t1.request = RIL_REQUEST_GET_SIM_STATUS;
+ client_t1.paramLen = 0;
+ client_t1.uToken = Global_uToken;
+ char res_data[MAX_LEN] = {0};
+ int len1 = sizeof(client_t1.param);
+ memset(client_t1.param, 0, sizeof(char)*MAX_LEN);
+ printf("client_t1 %d\n", sizeof(client_t1));
+ send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN, 0, (struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return ret;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ p.readInt32(card_status);
+ }
+ return error1;
+}
+/*AT> AT+CIMI AT< IMSI*/
+int lynq_get_imsi(char buf[])
+{
+ int ret = -1;
+ if(buf == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ int len = 0;
+ lynq_client_t client_t1;
+ memset(&client_t1, 0, sizeof(client_t1) );
+ client_t1.request = RIL_REQUEST_GET_IMSI;
+ client_t1.paramLen = 0;
+ client_t1.uToken = Global_uToken;
+ char res_data[MAX_LEN] = {0};
+ memset(client_t1.param, 0, sizeof(client_t1.param));
+ send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ if(!error1){
+ char * test = lynqStrdupReadString(p);
+ memcpy(buf, test, strlen(test));
+ }
+ printf("---->test<----resp_type=%d,request=%d,slot_id=%d,error=%d\n",resp_type,request,slot_id,error1);
+ }
+ return error1;
+}
+
+
+/*add by lei*/
+
+int lynq_get_iccid(char buf[]){
+ int ret = -1;
+ if(buf == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ int len = 0;
+ client_t.request = RIL_REQUEST_QUERY_ICCID;
+ client_t.paramLen = 0;
+ client_t.uToken = Global_uToken;
+ char res_data[MAX_LEN] = {0};
+ memset(client_t.param, 0, sizeof(client_t.param));
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ if(!error1){
+ char * test = lynqStrdupReadString(p);
+ memcpy(buf, test, strlen(test));
+ }
+ printf("---->test<----resp_type=%d,request=%d,slot_id=%d,error=%d\n",resp_type,request,slot_id,error1);
+ }
+ return error1;
+}
+
+int lynq_enable_pin(char *pin){
+ int ret = -1;
+ if(pin == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ char res_data[MAX_LEN] = {0};
+ client_t.request = RIL_REQUEST_SET_FACILITY_LOCK;
+ client_t.paramLen = 4;
+ client_t.uToken = Global_uToken;
+ sprintf(client_t.param, "%s %s %s %s\n", "SC", pin, "11", "1");
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ }
+ return error1;
+
+}
+
+int lynq_disable_pin(char *pin){
+ int ret = -1;
+ if(pin == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ char res_data[MAX_LEN] = {0};
+ client_t.request = RIL_REQUEST_SET_FACILITY_LOCK;
+ client_t.paramLen = 4;
+ client_t.uToken = Global_uToken;
+ sprintf(client_t.param, "%s %s %s %s\n", "SC", pin, "11", "0");
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ }
+ return error1;
+}
+
+int lynq_query_pin_lock(char *pin,int buf[]){
+ int ret = -1;
+ if(pin == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ int len = 0;
+ client_t.request = RIL_REQUEST_QUERY_FACILITY_LOCK;
+ client_t.paramLen = 3;
+ client_t.uToken = Global_uToken;
+ char res_data[MAX_LEN] = {0};
+ sprintf(client_t.param, "%s %s %s\n", "SC", pin, "11");
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ int num = -1;
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ p.readInt32(&num);
+ int *test = (int *)calloc(1, sizeof(int)*num);
+ for(int i =0; i <num; i++){
+ p.readInt32(&test[i]);
+ buf[i] = test[i];
+ }
+ free(test);
+ }
+ return error1;
+}
+
+int lynq_verify_pin(char *pin){
+ int ret = -1;
+ if(pin == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ char res_data[MAX_LEN] = {0};
+ int len = 0;
+ client_t.request = RIL_REQUEST_ENTER_SIM_PIN;
+ client_t.paramLen = 1;
+ client_t.uToken = Global_uToken;
+ sprintf(client_t.param, "%s\n", pin);
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ }
+ return error1;
+}
+
+int lynq_change_pin(char *old_pin, char *new_pin){
+ int ret = -1;
+ if(old_pin == NULL || new_pin == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ char res_data[MAX_LEN] = {0};
+ int len = 0;
+ client_t.request = RIL_REQUEST_CHANGE_SIM_PIN;
+ client_t.paramLen = 2;
+ client_t.uToken = Global_uToken;
+ sprintf(client_t.param, "%s %s\n", old_pin, new_pin);
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ }
+ return error1;
+}
+
+int lynq_unlock_pin(char *puk, char *pin){
+ int ret = -1;
+ if(puk == NULL || pin == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ char res_data[MAX_LEN] = {0};
+ int len = 0;
+ client_t.request = RIL_REQUEST_ENTER_SIM_PUK;
+ client_t.paramLen = 2;
+ client_t.uToken = Global_uToken;
+ sprintf(client_t.param, "%s %s\n", puk, pin);
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ }
+ return error1;
+}
+
+static int parse_param(char *cmd, char **argv, char buf[]){
+ if(cmd == NULL || argv == NULL || buf == NULL){
+ printf("input error");
+ return 0;
+ }
+ if(strstr(cmd,"ERROR")){
+ //char *test = strchr(cmd, ':')+1;
+ int len = strlen(cmd);
+ memcpy(buf, cmd, len);
+ buf[len] = '\0';
+ return 3;
+ }
+ else{
+ int argc = 0;
+ char *token;
+ token = strtok(cmd, ",");
+ if(strstr(token, "CNUM")){
+ char *string;
+ while (token != NULL)
+ {
+ string = token;
+ argv[argc++] = string;
+ token = strtok(NULL, ",");
+ }
+ int lengh = strlen(argv[1]);
+ memcpy(buf, argv[1], lengh);
+ buf[lengh] = '\0';
+ delete_char(buf, '"');
+ }
+ else{
+ const char *warning = "9001";
+ int len = strlen(warning);
+ memcpy(buf, warning, len);
+ buf[len] = '\0';
+ }
+
+ }
+ return 0;
+}
+
+int lynq_query_phone_number(char buf[]){
+ int ret = -1;
+ if(buf == NULL)
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ int len = 0;
+ char res_data[MAX_LEN] = {0};
+ client_t.request = RIL_REQUEST_OEM_HOOK_RAW;
+ client_t.paramLen = 1;
+ client_t.uToken = Global_uToken;
+ sprintf(client_t.param, "%s\n", "AT+CNUM");
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ perror("sendto error:");
+ return ret;
+ }
+ //get data msg
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ perror("recvfrom step2 fail:");
+ return -1;
+ }
+ printf("=====>resp data len<=====:%d,,,%d\n",recv_num,MAX_LEN);
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
+ p.setDataPosition(0);
+ int num = -1;
+ if(p.dataAvail() > 0)
+ {
+ char test[30] = {0};
+ char *argv[5] = {0};
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ p.readInt32(&num);
+ if(num == -1){
+ memcpy(buf, "-1", 2);
+ }else{
+ p.read(test, num);
+ parse_param(test, argv, buf);
+ }
+ }
+ return error1;
+}
+
+int lynq_query_operator(char buf[]){
+ int32_t token = -1;
+ if(buf == NULL)
+ return token;
+ char msg_imsi[20] = {0};
+ memset(msg_imsi,0,sizeof(msg_imsi));
+ token = lynq_get_imsi(msg_imsi);
+ if(strlen(msg_imsi) != 0){
+ FindOperator *ope_command = NULL;
+ ope_command = find_ope_command(msg_imsi, findOperator);
+ if(ope_command){
+ memcpy(buf, ope_command->buf, strlen(ope_command->buf));
+ buf[strlen(ope_command->buf)] = '\0';
+ }
+ else{
+ /*more*/
+ char mccmnc[5] = {0};
+ memcpy(buf, msg_imsi, 5);
+ buf[5] = '\0';
+ /*more*/
+ }
+ return token;
+ }
+ else{
+ //msg->base.e = err;
+ const char *test = "please insert sim card";
+ memcpy(buf, test, strlen(test));
+ return token;
+ }
+}
+
+
+
+
+
diff --git a/src/lynq/packages/apps/lynq-function-test/src/commands.h b/src/lynq/packages/apps/lynq-function-test/src/commands.h
deleted file mode 100644
index 71316d4..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/commands.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*=============================================================================
-** FileName: command.h
-** Desc: about function test
-** Author: Warren
-** Version: V1.0
-** LastChange: 2021-02-26
-** History:
-=============================================================================*/
-//call api
-{"dial",eventDial, "dial a call"},
-{"an",eventAnswer,"answer in coming call"},
-{"atan",eventAutoAnswer,"auto answer mode"},
-{"stme",eventSetMute, "set mute"},
-{"gtme",eventGetMute, "get mute status"},
-{"lcfc",eventLastCallFailCause, "last call fail cause"},
-{"hup",eventCallHangUp, "hang up a call"},
-{"udub",eventRejectCall, "hang up all call or reject a call"},
-{"dtmf",eventSetDTMF, "send DTMF number"},
-{"dtmfv",eventSetDTMFVolume, "set DTMF volume"},
-{"hwc",eventHangupWatingForCall, "hang up waiting or background call"},
-{"hfrb",eventHangupForegroundResumeBackground, "hang up foregound call and resume background call"},
-{"swha",eventSwitchWaitOrHoldAndActiveCall, "switch waiting or holding call to active"},
-{"dmc",eventDoMultiConference, "do multi conference"},
-{"och",eventOthercallHold, "separate conferece"},
-//data api
-{"edc",eventSetupDataCall, "enable data call"},
-{"ddc",eventDeactiveDataCall, "disable data call"},
-{"gdcl",eventGetDataCalllist,"get data call list"},
-//network
-{"qop",eventQueryOperator, "query operator"},
-{"qnsm",eventQueryNetSelectMode, "query network selection mode"},
-{"snsm",eventSetNetSelectMode,"set network selection mode"},
-{"qan",eventQueryAvailableNetwork, "query available network"},
-{"qrs",eventQueryRegistrationState, "query registration state"},
-{"gpnt",eventQueryPrefferredNetworkType,"get preferred network type"},
-{"spnt",eventSetPrefferredNetworkType, "set preferred network type"},
-{"gcil",eventQueryCellInfo, "get cell info list"},
-{"sucilr",eventSetUnsolCellInfoListrate,"set unsol cell info list rate"},
-{"gncid",eventQueryNeighboringCellids, "get neighboring cell IDs"},
-{"sbm",eventSetBandMode, "set band mode"},
-{"qabm",eventQueryAvailableBandmode,"query available band mode"},
-{"rpo",eventRadioOn,"set radio power on/off"},
-{"vrt",eventQueryRadioTech,"voice radio tech"},
-{"sst",eventSolicitedSignalStrength,"singal strength"},
-{"mpo",eventModemOn,"modem power"},
-//sim api
-{"gss",eventGetSimStatus, "get sim status"},
-{"gimsi",eventGetImsi, "get IMSI"},
-//sms api
-{"ssm",eventSendSms,"send sms"},
-{"iss",eventImsSendSms,"send sms over IMS"},
-{"wsts",eventWriteSmsToSim,"write sms to sim card"},
-{"rsms",eventReportSmsMemoryStatus,"report sms memory state"},
-{"dsos",eventDeletSmsOnSim,"delete sms on sim"},
-{"gsmsc",eventGetSmscAddress,"get smsc address"},
-{"ssmsc",eventSetSmscAddress,"set smsc address"},
-{"sstm",evenStoreSmsToMemory,"srore sms to memory"},
-{"gsfm",eventGetSmsFromMemory,"get sms from memory"},
-{"dmfm",eventDeleteMessageFromMemory,"delete sms from memory"},
-{(char *)NULL, NULL, (char *)NULL},
diff --git a/src/lynq/packages/apps/lynq-function-test/src/fota_test.cpp b/src/lynq/packages/apps/lynq-function-test/src/fota_test.cpp
deleted file mode 100644
index 973e235..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/fota_test.cpp
+++ /dev/null
@@ -1,280 +0,0 @@
-/*=============================================================================
-** FileName: fota_test.c
-** Desc: about function test
-** Author: victor
-** Version: V1.0
-** LastChange: 2021-10-11
-** History:
-=============================================================================*/
-#include "function_common.h"
-#include <log/log.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "fota_test.h"
-#include "fcntl.h"
-#include "mtk_device_wrap.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "include/iot_rock.h"
-#include "ftp/lynq_ftp.h"
-#ifdef __cplusplus
-}
-#endif
-
-lynq_ftp_socker_info ftp_log_info;
-
-#define UPDATA_ADDR "/tmp/fota.delta"
-#define READ_BLOCK_SIZE 0x40000
-
-int lynq_fota_md5_flag = -1;
-
-#define FLASH_DEV_DELTA "/dev/disk/by-partlabel/delta"
-
-#if 0
-#define BUF_SIZE 1024
-int lynq_fota_str_arr(char *str, char *substr, char parts[][BUF_SIZE])
-{
- char *p = NULL;
- char *q = NULL;
- char tmp[BUF_SIZE] = {0};
- char end[BUF_SIZE] = {0};
- int i = 0, j = 0, k = 0, par_num=0;
-
- char *start = strdup(str);
-
- while(*str != '\0')
- {
- p = str;
- q = substr;
- tmp[i] = *str;
- i++;
-
- while((*p == *q) && (*p != '\0') && (*q != '\0'))
- {
- p++;
- q++;
- }
- if(*q == '\0')
- {
- memset(end, 0, sizeof(end));
- strcpy(end, p);
-
- memset(parts[j], 0, sizeof(parts[j]));
-
- j == 0 ? memcpy(parts[j], tmp, strlen(tmp)-1) : memcpy(parts[j], tmp+1, strlen(tmp)-2) ;
-
- j++;
- memset(tmp, 0, sizeof(tmp));
- i = 0;
- par_num++;
- }
-
- str++;
- }
-
-
- if (!par_num) {
- LYDBGLOG("[%s-%d] cmd is error!!!\n", __FUNCTION__, __LINE__);
- LYVERBLOG("+[thhandle]: error \n");
- return -1;
- }
-
-
- if (strcmp(end, "") != 0) {
- memset(parts[j], 0, sizeof(parts[j]));
- memcpy(parts[j], tmp+1, strlen(tmp)-2);
- }
-
- for (i = 0 ; i < par_num + 1 ; i++)
- memcpy(parts[i], strchr(parts[i],'"')+1,strlen(parts[i]));
-
- return par_num;
-}
-#endif
-
-int lynq_ftp_download_fota_package(char *string[])
-{
-
- sprintf(ftp_log_info.sevname,"%s",string[1]);
- LYVERBLOG("[+UP]: sevname:%s\n",ftp_log_info.sevname);
- ftp_log_info.portnum = atoi(string[2]);
- LYVERBLOG("[+UP]: portnum:%d\n",ftp_log_info.portnum);
-
- sprintf(ftp_log_info.username,"%s",string[3]);
- sprintf(ftp_log_info.pw,"%s",string[4]);
-LYVERBLOG("[+UP]: username:%s\n",ftp_log_info.username);
-LYVERBLOG("[+UP]: pw:%s\n",ftp_log_info.pw);
-
- sprintf(ftp_log_info.is_pasv_mode,"%s",string[5]);
- sprintf(ftp_log_info.file_type,"%s",string[6]);
- sprintf(ftp_log_info.put_opt,"%s",string[7]);
-
- sprintf(ftp_log_info.getfilename_path,"%s",string[8]);
- sprintf(ftp_log_info.getfilename,"%s",string[9]);
- LYVERBLOG("[+UP]: getfilename_path:%s\n",ftp_log_info.getfilename_path);
-
- LYVERBLOG("[+UP]: Download the FTP data start\n");
- lynq_ftp_login(&ftp_log_info);
- lynq_ftp_download(&ftp_log_info);
- LYVERBLOG("[+UP]: Download the FTP data end\n");
-
- return 0;
-}
-
-int lynq_md5_fota_package(char *string[])
-{
- int ret = 0;
- int fd_down,size,fd_target;
- char delta_data[READ_BLOCK_SIZE];
- char input_md5_data[64] = {0};
-
- sprintf(input_md5_data,"%s",string[0]);
-//LYVERBLOG("[+UP]: input_md5_data:%s\n",input_md5_data);
- lynq_fota_md5_flag = lynq_md5_file_verfy(UPDATA_ADDR, input_md5_data);
- if(lynq_fota_md5_flag == 0)
- {
- LYVERBLOG("[+UP]: md5 fota package success\n");
- }
- else
- {
- LYVERBLOG("[+UP]: md5 fota package fail\n");
- return 1;
- }
-
- fd_down = open(UPDATA_ADDR,O_RDONLY);
- if (fd_down < 0) {
- LYVERBLOG("[+UP]: open source error\n");
- return 1;
- }
-
- fd_target = mtk_device_wrap_open(FLASH_DEV_DELTA,O_RDWR);
-
- if (fd_target < 0) {
- close(fd_down);
- LYERRLOG("+[UA]: open target error\n");
- return 1;
- }
-
- LYVERBLOG("[+UP]: Get ftp data write to delta\n");
- while(( size = read(fd_down,delta_data,READ_BLOCK_SIZE))>0) {
- mtk_device_wrap_write(fd_target,delta_data,READ_BLOCK_SIZE);
- memset(delta_data,0,READ_BLOCK_SIZE);
- }
-
- LYVERBLOG("[+UP]: Store upgrade data to delta success\n");
-
- mtk_device_wrap_close(fd_target);
- close(fd_down);
-
- return 0;
-}
-
-#if 0
-int lynq_md5_fota_package_new(char *string[])
-{
- int ret = 0;
- int fd_down,size,fd_target;
- int total_len = 0,pack_len = 0;
- char delta_data[READ_BLOCK_SIZE];
- char input_md5_data[64] = {0};
-
- sprintf(input_md5_data,"%s",string[0]);
- pack_len = atoi(string[1]);
-//LYVERBLOG("[+UP]: input_md5_data:%s\n",input_md5_data);
- lynq_fota_md5_flag = md5_file_verfy_new(FLASH_DEV_DELTA, input_md5_data,pack_len);
- if(lynq_fota_md5_flag == 0)
- {
- LYVERBLOG("[+UP]: md5 fota package success\n");
- }
- else
- {
- LYVERBLOG("[+UP]: md5 fota package fail\n");
- return 1;
- }
-
- fd_down = open(UPDATA_ADDR,O_RDONLY);
- if (fd_down < 0) {
- LYVERBLOG("[+UP]: open source error\n");
- return 1;
- }
-
- fd_target = mtk_device_wrap_open(FLASH_DEV_DELTA,O_RDWR);
-
- if (fd_target < 0) {
- close(fd_down);
- LYERRLOG("+[UA]: open target error\n");
- return 1;
- }
-
- LYVERBLOG("[+UP]: Get ftp data write to delta\n");
- while(( size = read(fd_down,delta_data,READ_BLOCK_SIZE))>0) {
- mtk_device_wrap_write(fd_target,delta_data,READ_BLOCK_SIZE);
- memset(delta_data,0,READ_BLOCK_SIZE);
- }
- LYVERBLOG("[+UP]: Store upgrade data to delta success\n");
-
- mtk_device_wrap_close(fd_target);
- close(fd_down);
-
- return 0;
-}
-#endif
-int lynq_fota_func_test(void)
-{
- int first_run = 1;
- LYVERBLOG("+[UA]: Upgrade to start\n");
- if(lynq_fota_md5_flag == 0)
- {
- lynq_rock_main(first_run);
- }
- else
- {
- LYVERBLOG("+[UA]: MD5 verify fail\n");
- return 1;
- }
- LYVERBLOG("+[UA]: Upgrade to end\n");
- return 0;
-}
-
-int fota_test(char *api,char *string)
-{
-// char argv[20][BUF_SIZE] = {0};
-// int line = lynq_fota_str_arr(string, "\"&", argv)+1;
- char *argv[100] = {0};
- parseParameters(string,argv);
- if(!strcmp(api, "download"))
- {
- if(!(strcmp(argv[0], "ftp")))
- {
- lynq_ftp_download_fota_package(argv);
- }
- else if(!(strcmp(argv[0], "http")))
- {
-
- }
-
- }
- else if(!(strcmp(api, "md5")))
- {
- lynq_md5_fota_package(argv);
- }
-// else if(!(strcmp(api, "md5new")))
-// {
-// lynq_md5_fota_package_new(argv);
-// }
- else if(!(strcmp(api, "upgrade")))
- {
- lynq_fota_func_test();
- }
- else
- {
- LYVERBLOG("+[fota][fota_test]: fota api error!!!\n");
- }
- return 0;
-}
-
-
diff --git a/src/lynq/packages/apps/lynq-function-test/src/fota_test.h b/src/lynq/packages/apps/lynq-function-test/src/fota_test.h
deleted file mode 100644
index 06187d8..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/fota_test.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef __FOTA_TEST_H__
-#define __FOTA_TEST_H__
-int fota_test(char *api,char *string);
-#endif //__FOTA_TEST_H__
\ No newline at end of file
diff --git a/src/lynq/packages/apps/lynq-function-test/src/function_common.cpp b/src/lynq/packages/apps/lynq-function-test/src/function_common.cpp
deleted file mode 100644
index 7d2f170..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/function_common.cpp
+++ /dev/null
@@ -1,220 +0,0 @@
-/*=============================================================================
-** FileName: function_common.cpp
-** Desc: about function test
-** Author: Warren
-** Version: V1.0
-** LastChange: 2021-02-26
-** History:
-=============================================================================*/
-/*Get private menu,take only the first two parameters, and return the head pointer of the remaining string*/
-#include <stdio.h>
-#include <string.h>
-#include "function_common.h"
-#include <sys/time.h>
-#include <unistd.h>
-#include <stdlib.h>
-void set_timer(int it_interval_sec, int it_interval_usec,int it_value_sec,int it_value_usec)
-{
- struct itimerval itv, oldtv;
- itv.it_interval.tv_sec = it_interval_sec;
- itv.it_interval.tv_usec = it_interval_usec;
- itv.it_value.tv_sec = it_value_sec;
- itv.it_value.tv_usec = it_value_usec;
- setitimer(ITIMER_REAL, &itv, &oldtv);
-}
-
-int sleep_with_restart(int second)
-{
- int left = second;
- while (left > 0)
- {
- left = sleep(left);
- }
- return 0;
-}
-int millli_sleep_with_restart(int millisecond)
-{
- int left = millisecond*1000;
- while (left > 0)
- {
- left = usleep(left);
- }
-
- return 0;
-}
-//Get private menu,take only the first two parameters, and return the head pointer of the remaining string
-char* getMenu(char * str,char *argv[])
-{
- char* pos = str;
- int menu = 0;
- int num = 0;
- if (str == NULL)
- {
- return NULL;
- }
- while (1)
- {
- menu = 0;
- if (num == 2)
- {
- break;
- }
- while (1)
- {
- if (*pos == '"')
- {
- if (menu == 0)
- {
- menu++;
- argv[num++] = pos+1;
- }
- else if (menu == 1)
- {
- *pos++ = '\0';
- break;
- }
- else
- {
- break;
- }
- }
- pos++;
- }
-
- }
- printf("moudle = %s\nAPI = %s\n", argv[0], argv[1]);
- return pos;
-}
-/*parse the parameters,and then stroge every parameter to argv.*/
-/*return the number of parameters.*/
-int getParam(char * str,char *argv[])
-{
- char* pos = str;
- int num = 0;
- if (str == NULL)
- {
- return 0;
- }
- while (1)
- {
- if (*pos == '\0')
- {
- break;
- }
- while (1)
- {
- if (*(pos - 1) == '=' && *pos == '"')// "="" as the basis for starting the parameter.
- {
- argv[num++] = pos+1;
- }
- else if (*(pos - 1) == '"' && *pos == '&')// "="" as the basis for the end of the parameter
- {
- *(pos - 1) = '\0';
- pos++;
- break;
- }
- else if (*pos == '\0'&&*(pos-1) == '"')//the string end.
- {
- *(pos - 1) = '\0';
- break;
- }
- else if (*pos == '\0')//the string end.
- {
- break;
- }
- pos++;
- }
- }
- // for (int i = 0;i < num;i++)
- // {
- // printf("argv[%d] = %s\n",i,argv[i]);
- // }
- return num;
-}
-
-/*remove the escape character '\'*/
-int removeTage(const int length,char* argv[])
-{
- char* temp = NULL;
- char* temp1 = NULL;
- char** pos = argv;
- for (int i = 0;i < length;i++)
- {
- temp1 = pos[i];
- while (1)
- {
- if (*pos[i] == '\0')
- {
- break;
- }
- if ((*pos[i] == '"') && (*(pos[i] - 1) == '\\'))//Remove "\"" when encountering '\'
- {
- temp = pos[i];
- while (1)
- {
- *(pos[i] - 1) = *(pos[i]);
- if (*(pos[i]) == '\0')
- {
- break;
- }
- pos[i]++;
- }
- pos[i] = temp;
- }
- pos[i]++;
- }
- pos[i] = temp1;
- }
- return 0;
-}
-int parseParameters(char *str,char *argv[])
-{
- int argc = 0;
- argc = getParam(str,argv);
- removeTage(argc,argv);
- // for (int i = 0;i < argc; i++)
- // {
- // printf("param %d = %s\n",i, argv[i]);
- // }
- return 0;
-}
-RIL_COMMAND*find_command (char *name,RIL_COMMAND *Class)
-{
- register int i;
- for (i = 0; Class[i].name; i++)
- if (strcmp (name, Class[i].name) == 0)
- return (&Class[i]);
- return ((RIL_COMMAND *)NULL);
-}
-
-int check_numScope(char **argv){
- if(!strcmp(argv[0], "0"))
- return 1;
- if(!atoi(argv[0])){
- return -1;
- }
- else{
- int num = atoi(argv[0]);
- if(num < 0 || num > 36)
- return -1;
- return 1;
- }
-}
-int check_special(char **argv){
- if(!strcmp(argv[0], "0"))
- return 1;
- if(!strcmp(argv[0], "#"))
- return 1;
- if(!strcmp(argv[0], "*"))
- return 1;
- if(!atoi(argv[0])){
- return -1;
- }
- else{
- int num = atoi(argv[0]);
- if(num < 0 || num > 9)
- return -1;
- return 1;
- }
-}
-
diff --git a/src/lynq/packages/apps/lynq-function-test/src/function_common.h b/src/lynq/packages/apps/lynq-function-test/src/function_common.h
deleted file mode 100644
index d3d4141..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/function_common.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*=============================================================================
-** FileName: function_common.h
-** Desc: about function test
-** Author: Warren
-** Version: V1.0
-** LastChange: 2021-02-26
-** History:
-=============================================================================*/
-#ifndef __FUNCTION_COMMON_H__
-#define __FUNCTION_COMMON_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- #include "liblog/liblog.h"
- #include "liblog/lynq_deflog.h"
-#ifdef __cplusplus
-}
-#endif
-typedef enum{
- MENU_INPUT_ERROR=0,
- MODULE_INPUT_ERROR,
- API_INPUT_ERROR,
- INVALID_CMD,
-}COMMAND_ERROR;
-typedef struct {
- char *name; /* User printable name of the function. */
- int (*func)(char **param); /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
-} RIL_COMMAND;
-RIL_COMMAND*find_command (char *name,RIL_COMMAND *Class);
-
-void set_timer(int it_interval_sec, int it_interval_usec,int it_value_sec,int it_value_usec);
-int sleep_with_restart(int second);
-int millli_sleep_with_restart(int millisecond);
-
-int check_numScope(char **argv);
-int check_special(char **argv);
-char* getMenu(char * str,char *argv[]);
-int parseParameters(char *str,char *argv[]);
-//int getParam(char * str,char *argv[]);
-//int removeTage(const int length,char* argv[]);
-
-#endif
\ No newline at end of file
diff --git a/src/lynq/packages/apps/lynq-function-test/src/gpio_test.cpp b/src/lynq/packages/apps/lynq-function-test/src/gpio_test.cpp
deleted file mode 100644
index 837ab94..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/gpio_test.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*=============================================================================
-** FileName: gpio_test.cpp
-** Desc: about function test
-** Author: zhou
-** Version: V1.0
-** LastChange: 2021-03-04
-** History:
-=============================================================================*/
-#include "function_common.h"
-#include <log/log.h>
-#include <stdio.h>
-#include "gpio_test.h"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "liblynq-driver-control/libdriver.h"
-#ifdef __cplusplus
-}
-#endif
-int check_mode(const char *mode)
-{
-if(!strcmp(mode, GPIO_DIR))
-{
- return 1;
-}
-if(!strcmp(mode, GPIO_OUT))
-{
- return 1;
-}
-if(!strcmp(mode, GPIO_MODE))
-{
- return 1;
-}
- return -1;
-}
-static int check_status(char **argv)
-{
- if(!strcmp(argv[2],"0")){
- return 1;
- }
- if(!atoi(argv[2])){
- return -1;
- }
- int num = atoi(argv[2]);
- if(num == 1)
- return 1;
- return -1;
-}
-int gpio_test(char *api,char *string) {
- char *argv[100] = {0};
- parseParameters(string,argv);
- if(!strcmp(api, "get")){
- char output1[1024] = {0};
- int value = atoi(argv[0]);
- lynq_get_gpio (value,output1);
- // printf("Factory_result get %d gpio:%s \n",value,output1)
- LYVERBLOG("+[gpio][get]: data = %s\n",output1);
-
- }
- else if(!strcmp(api, "set")){
- int check_prame;
- check_prame = check_status(argv);
- if(check_prame == -1)
- {
- LYVERBLOG("+[gpio][set]: error num = %d \n",GPIO_PRAME_ERROR);
- return 0;
- }
- int gpio_numb = atoi(argv[1]);
-
- int gpio_statu = atoi(argv[2]);
-
- check_prame = check_mode(argv[0]);
- if(check_prame == -1)
- {
- LYVERBLOG("+[gpio][set]: error num = %d \n",GPIO_PRAME_ERROR);
- return 0;
- }
-
- int result = lynq_set_gpio(argv[0], gpio_numb,gpio_statu);
- if(result == -1)
- {
- LYVERBLOG("+[gpio][set]: error num = %d \n",GPIO_SET_ERROR);
- return 0;
- }
- else
- {
- LYVERBLOG("+[gpio][set]: ok!!\n",result);
- return 1;
- }
- }
- else {
- LYVERBLOG("+[gpio][lynq_set_gpio]: error num =%d\n",GPIO_PRAME_ERROR);
- }
-
- return 0;
-}
\ No newline at end of file
diff --git a/src/lynq/packages/apps/lynq-function-test/src/gpio_test.h b/src/lynq/packages/apps/lynq-function-test/src/gpio_test.h
deleted file mode 100644
index 204cfe0..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/gpio_test.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef __LYNQ_GPIO_TEST_H__
-#define __LYNQ_GPIO_TEST_H__
-#define GPIO_MODE "mode"
-#define GPIO_DIR "dir"
-#define GPIO_OUT "out"
-typedef enum {
- GPIO_SET_SUCCESS = 0 ,
- GPIO_PRAME_ERROR = 1,
- GPIO_SET_ERROR = 2,
-}GPIO_SET_RESULT;
-int gpio_test(char *api,char *string);
-#endif //__LYNQ_GPIO_TEST_H__
\ No newline at end of file
diff --git a/src/lynq/packages/apps/lynq-function-test/src/main.cpp b/src/lynq/packages/apps/lynq-function-test/src/main.cpp
old mode 100644
new mode 100755
index e75c768..93c80e4
--- a/src/lynq/packages/apps/lynq-function-test/src/main.cpp
+++ b/src/lynq/packages/apps/lynq-function-test/src/main.cpp
@@ -1,374 +1,573 @@
-/* gets example */
#include <stdio.h>
+#include <dlfcn.h>
+#include <signal.h>
#include <string.h>
#include <stdlib.h>
-#include <libtel/lib_tele.h>
-#include "ril_test.h"
-#include "gpio_test.h"
-#include "fota_test.h"
-#include "function_common.h"
-//#include "exception_multicast.h"
-#include "usb_switch.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "liblynq-broadcast/broadcast_send.h"
-#include <gio/gio.h>
-#include <glib.h>
-#include "liblynq-driver-control/libdriver.h"
-#ifdef __cplusplus
-}
-#endif
-#define BUFFER_SIZE 8192
-#define USER_LOG_TAG "FUNCTION_TEST"
-#define MAX_ARGS 5
-typedef enum {
- API_MENU = 1,
- DEMO_MENU,
-}TEST_MAIN_ITEM;
-typedef enum{
- API_RIL=0,
- API_GPIO,
- API_MQTT,
- API_HTTP,
- API_WIFI,
- API_GNSS,
- API_USB,
- API_FOTA,
-} API_MOUDLE;
+//#include <lynq_sim.h>
+#include <lynq_data.h>
+#include <lynq_call.h>
+#define BUF_SIZE 32
+#define BUF_PIN 4
-void lynq_incoming_call_cb(RIL_SOCKET_ID soc_id,int index, char * addr, RIL_CallState state, int toa)
+int flag_init = 0;
+void* handler;
+typedef struct
{
- // printf("[SIM%d]index is %d,addr is %s,state is %d,toa is %d\n",soc_id,index,addr,state,toa);
- LYVERBLOG("[SIM%d]index is %d,addr is %s,state is %d,toa is %d\n",soc_id,index,addr,state,toa);
-}
+ int cmdIdx;
+ char *funcName;
+}st_api_test_case;
-void lynq_recive_new_sms_cb(RIL_SOCKET_ID soc_id,char * num, char * smsc, char * msg, int charset)
+st_api_test_case api_testcases[] =
{
- // printf("[SIM%d]num is %s,smsc is %s,msg is %s,charset is %d\n",soc_id,num,smsc,msg,charset);
- LYVERBLOG("[SIM%d]num is %s,smsc is %s,msg is %s,charset is %d\n",soc_id,num,smsc,msg,charset);
-}
-static user_cb mytest={
- lynq_recive_new_sms_cb,
- lynq_incoming_call_cb
+ {0, "lynq_sim_init"},
+ {1, "lynq_enable_pin"},
+ {2, "lynq_disable_pin"},
+ {3, "lynq_query_operator"},
+ {4, "lynq_get_iccid"},
+ {5, "lynq_query_pin_lock"},
+ {6, "lynq_verify_pin"},
+ {7, "lynq_change_pin"},
+ {8, "lynq_unlock_pin"},
+ {9, "lynq_query_phone_number"},
+ {10, "lynq_get_imsi"},
+ {11, "lynq_get_sim_status"},
+ {12, "lynq_sim_deinit"},
+ {13, "lynq_setup_data_call"},
+ {14, "lynq_deactive_data_call"},
+ {15, "lynq_setup_data_call_sp"},
+ {16, "lynq_get_data_call_list"},
+ {17, "lynq_wait_data_call_state_change"},
+ {18, "lynq_init_data"},
+ {19, "lynq_deinit_data"},
+ {21, "lynq_init_call"},
+ {22, "lynq_call"},
+ {23, "lynq_call_answer"},
+ {24, "lynq_call_hungup"},
+ {26, "lynq_call_hungup_all"},
+ {27, "lynq_wait_incoming_call"},
+ {28, "lynq_deinit_call"},
+ {-1, NULL}
};
-static void getCallback(const char* str_arg, int int_arg )
+void print_help(void)
{
- //printf("SignalCallback,str_arg:%s,int_arg:%d\n", str_arg,int_arg);
- LYVERBLOG("SignalCallback,str_arg:%s,int_arg:%d\n", str_arg,int_arg);
+ int i;
- return;
-}
-
-void hold_on(){
- char any[5]={ 0 };
- printf("Press any key to return\n");
- fgets(any, 5, stdin);
-}
-
-int parse_param(char *cmd, char *argv[], int max_args){
- char *pos, *pos2;
- int argc = 0;
-
- pos = cmd;
- while (1) {
- // Trim the space characters.
- while (*pos == ' ') {
- pos++;
- }
-
- if (*pos == '\0') {
- break;
- }
-
- // One token may start with '"' or other characters.
- if (*pos == '"' && (pos2 = strchr(pos + 1, '"'))) {
- argv[argc++] = pos + 1;
- *pos2 = '\0';
- pos = pos2 + 1;
- if (*pos == '\n'){
- *pos = '\0';
- pos = pos + 1;
- }
- }
- else {
- argv[argc++] = pos;
- while (*pos != '\0' && *pos != ' '&& *pos != '\n')
- {
- if (*pos == '"' && (pos2 = strchr(pos + 1, '"')))
- {
- pos = pos2 ;
- }
- else
- pos++;
- }
- *pos++ = '\0';
- }
-
- // Check if the maximum of arguments is reached.
- if (argc == max_args) {
+ printf("Supported test cases:\n");
+ for(i = 0; ; i++)
+ {
+ if(api_testcases[i].cmdIdx == -1)
+ {
break;
}
+ printf("%d:\t%s\n", api_testcases[i].cmdIdx, api_testcases[i].funcName);
}
-
- return argc;
}
-int getRilModule(char *module)
+
+int (*lynq_sim_init)(int);
+int (*lynq_sim_deinit)(void);
+static void signal_handler(int signum)
{
- if (module==NULL)
- {
- //printf("[ERROR] Please input module,and try again!");
- // LYVERBLOG("+[command error]:error num = %d\n",MODULE_INPUT_ERROR);
- return -1;
- }
- if(!strcmp(module,"ril"))
- {
- return API_RIL;
- }
- else if(!strcmp(module,"gpio"))
- {
- return API_GPIO;
- }
- else if(!strcmp(module,"MQTT"))
- {
- return API_MQTT;
- }
- else if(!strcmp(module,"HTTP"))
- {
- return API_HTTP;
- }
- else if(!strcmp(module,"WIFI"))
- {
- return API_WIFI;
- }
- else if(!strcmp(module,"GNSS"))
- {
- return API_GNSS;
- }
- else if(!strcmp(module,"usb_switch"))
- {
- return API_USB;
- }
- else if(!strcmp(module, "fota"))
- {
- return API_FOTA;
- }
- else
- {
- LYVERBLOG("+[command error]:error num = %d\n",MODULE_INPUT_ERROR);
- // printf("can not find %s API module ",module);
- return -1;
- }
- return -1;
-}
-
-int api_start(int argc, char *argv[]){
- LYDBGLOG("api_start,argc:%d\n",argc);
- char *menu[2] = {0};// menu[0] is the "moudle",menu[1] is the "API"
- char* argvHead=NULL;
- int module = -1;
- argvHead = getMenu(argv[2],menu);//find the "module" and the "API"
- module = getRilModule(menu[0]);
- // if(argvHead == NULL)
- // {
- // printf("pram api error\n");
- // return 0;
- // }
- switch(module)
- {
- case API_RIL:
- {
- if(argvHead)
- {
- ril_test(menu[1],argvHead);
- break;
- }
- }
- /* Add the code of the owner modules below*/
- case API_GPIO:
- {
- gpio_test(menu[1],argvHead);
+ switch(signum){
+ case SIGABRT:
+ printf("[sim_demo] recv SIGABRT\n");
break;
- }
- case API_USB:
- {
- usb_switch_test(menu[1],argvHead);
+ case SIGBUS:
+ printf("[sim_demo] recv SIGBUS\n");
break;
- }
- case API_FOTA:
- {
- fota_test(menu[1],argvHead);
- break;
- }
- case API_MQTT:
- case API_HTTP:
- case API_WIFI:
- case API_GNSS:
+ case SIGFPE:
+ printf("[sim_demo] recv SIGFPE\n");
break;
- default:
- // printf("pram module error\n");
- LYVERBLOG("+[command error]:error num = %d\n",API_INPUT_ERROR);
-
+ case SIGILL:
+ printf("[sim_demo] recv SIGILL\n");
+ break;
+ case SIGSEGV:
+ printf("[sim_demo] recv SIGSEGV\n");
+ break;
+ default:
+ printf("[sim_demo] recv unknown signal\n");
break;
}
- // hold_on(); //add by zhouqunchao delete help message
- return 1;
+ lynq_sim_deinit();
+ dlclose(handler);
+ exit(0);
}
-int function_start(int argc, char *argv[])
-{
- int select_menu = atoi(argv[0]);
- int thread = atoi(argv[1]);
- // printf("select_menu:%d,thread:%d\n",select_menu,thread);
- switch(select_menu)
- {
- case API_MENU:
- {
- if (thread == 1)//rita add @2021.6.21 for threadhandle test
- {
- LYDBGLOG("[%s-%d] argv[2] = [%s]\n", __FUNCTION__, __LINE__, argv[2]);
- if(strlen(argv[2])){//rita add @2021.6.21 for data error
- LYDBGLOG("[%s-%d] argv[2] = [%s]\n", __FUNCTION__, __LINE__, argv[2]);
- send_broadcast_by_name("function", strlen(argv[2]), argv[2]);
- }
- else{
- LYVERBLOG("+[thhandle]: error num = %d\n", INVALID_CMD);
- return INVALID_CMD;
- }
- }
- else if(thread ==2){//rita add @2021.6.21 for local test
- api_start(argc,argv);
- }
- else{
- //printf("thread 1,local 2\n");
- LYDBGLOG("thread 1,local 2\n");
- }
- break;
- }
- case DEMO_MENU:
- {
- //printf("DEMO_MENU\n");
- LYDBGLOG("DEMO_MENU\n");
- break;
- }
- default:
- break;
- }
- return 0;
-}
-
-void help_display(){
- printf("\n");
- printf("*****************************************************************************\n");
- printf("0:help ------- help\n");
- printf("*****************************************************************************\n");
- printf("1:API TEST\n" );
- printf(" 1-1:Async api-\n" );
- printf(" --MQTT\n" );
- printf("\n");
- printf(" --HTTP\n" );
- printf(" 1-2:Sync api-\n" );
- printf(" --GPIO\n" );
- printf("\n");
- printf(" --RIL\n" );
- printf("\n");
- printf(" --WIFI\n" );
- printf("\n");
- printf(" --GNSS\n" );
- printf("\n");
- printf(" --SERVICE\n" );
- printf("*****************************************************************************\n");
- printf("2:DEMO TEST:Subsequent updates\n" );
- printf("*****************************************************************************\n");
- printf("\n");
- printf("1:API TEST The format is as follows :\n" );
- printf("{menu}-{mode selection} moudle=\"{moudle}\"&API=\"{api interface}\"&session=\"{session id}\"\"¶meterA=\"{parameter A}\"\n" );
- /*
- printf("The main parameters are as follows:\n");
- printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
- printf("menu:1--API TEST,2--DEMO TEST\n" );
- printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
- printf("mode selection:1--async api,2--sync api\n" );
- printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
- printf("moudle:Test module--includes the following modules\n" );
- printf("RIL, GPIO,MQTT,HTTP,WIFI,GNSS\n" );
- printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
- printf("api interface:--Interface corresponding to module\n" );
- printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
- printf("session id:--Used to distinguish different session groups of the same module\n" );
- printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
- printf("parameter A:--API parameter,Add format {\"¶meter_name=\"{parameter}\"} \n" );
- printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
- */
- printf("Select menu:\n");
-}
-void menu_display(){
- printf("\n");
- printf("**********************\n");
- printf("0:help menu\n");
- printf("1:API TEST\n");
- printf("2:DEMO TEST\n");
- printf("**********************\n");
- printf("\n");
- printf("Select menu:\n");
-}
-int main(int argc, char const *argv[])
+int main()
{
+ int cmdIdx = 0;
+ int ret = -1;
+ char buf[BUF_SIZE] = {0};
+ int flag = 0;
+ //打开库文件
+ handler = dlopen("/lib/liblynq-sim.so",RTLD_LAZY);
+ if(dlerror() != NULL){
+ printf("%s\n",dlerror());
+ return 0;
+ }
-
- LYLOGEINIT(USER_LOG_TAG);
- registerTriggerCallback(getCallback);
- register_key_info();
- lynqRegisterUnsolicitedResponse(&mytest);
- lynq_ril_init();
- sleep_with_restart(1);
- register_broadcast_send();
- while (1) {
- char *argv[MAX_ARGS];
- char str[BUFFER_SIZE]={ 0 };
- menu_display();
- fgets(str, BUFFER_SIZE, stdin);
- LYDBGLOG("[%s-%d] str= [%s]\n", __FUNCTION__, __LINE__, str);
- str[strlen(str)-1]='\0';
- if(!strcmp(str, "0")){
- help_display();
- //hold_on(); //add by zhouqunchao delete help message
+ lynq_sim_init=(int (*)(int))dlsym(handler,"lynq_sim_init");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_enable_pin)(char *)=(int (*)(char *))dlsym(handler,"lynq_enable_pin");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_disable_pin)(char *)=(int (*)(char *))dlsym(handler,"lynq_disable_pin");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_query_operator)(char *)=(int (*)(char *))dlsym(handler,"lynq_query_operator");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_get_iccid)(char *)=(int (*)(char *))dlsym(handler,"lynq_get_iccid");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_query_pin_lock)(char *,int *)=(int (*)(char *, int *))dlsym(handler,"lynq_query_pin_lock");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_verify_pin)(char *)=(int (*)(char *))dlsym(handler,"lynq_verify_pin");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_change_pin)(char *,char *)=(int (*)(char *, char *))dlsym(handler,"lynq_change_pin");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_unlock_pin)(char *,char *)=(int (*)(char *, char *))dlsym(handler,"lynq_unlock_pin");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_query_phone_number)(char *)=(int (*)(char *))dlsym(handler,"lynq_query_phone_number");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_get_imsi)(char *)=(int (*)(char *))dlsym(handler,"lynq_get_imsi");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ int(*lynq_get_sim_status)(int *)=(int (*)(int *))dlsym(handler,"lynq_get_sim_status");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ lynq_sim_deinit=(int (*)(void))dlsym(handler,"lynq_sim_deinit");
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+
+ if(dlerror()!=NULL){
+ printf("%s\n",dlerror());
+ }
+ signal(SIGPIPE, signal_handler);
+ signal(SIGABRT, signal_handler);
+ signal(SIGBUS, signal_handler);
+ signal(SIGFPE, signal_handler);
+ signal(SIGILL, signal_handler);
+ signal(SIGSEGV, signal_handler);
+ print_help();
+ while(1)
+ {
+ printf("please input cmd index(-1 exit, 80-help): ");
+ if (scanf("%d", &cmdIdx) != 1)
+ {
+ char c;
+ while((c = getchar()) != '\n' && c != EOF);
+ printf("Illegal input.Please input correctly\n");
+ print_help();
continue;
+ }
+ memset(buf, 0, sizeof(buf));
+ int handle_data = -1;
+ int handle_call = -1;
+ switch(cmdIdx)
+ {
+ case 0: /* lynq_sim_init */
+ {
+
+ if(flag_init == 1)
+ {
+ printf("init is already\n");
+ break;
+ }
+ else{
+ int x;
+ printf("input token\n");
+ scanf("%d", &x);
+ lynq_sim_init(x);
+ printf("Run lynq_sim_init\n");
+ flag_init = 1;
+ break;
+ }
+
}
- if(!strcmp(str,"quit"))
- {
+
+ case 1: /* lynq_enable_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ printf("input pin\n");
+ scanf("%s", pin);
+ int ret = lynq_enable_pin(pin);
+ if(!ret){
+ printf("ok\n");
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ }
break;
}
- if ((strncmp(str,"1-",2) == 0)||
- (strncmp(str,"2-",2)== 0))
- {
- char* at_cmd = strstr(str, "-");
- strncpy(at_cmd, " ", 1);
- LYDBGLOG("[%s-%d] at_cmd = [%s]\n", __FUNCTION__, __LINE__, at_cmd);
+ case 2: /* lynq_disable_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ printf("input pin\n");
+ scanf("%s", pin);
+ int ret = lynq_disable_pin(pin);
+ if(!ret){
+ printf("ok\n");
+ }else{
+ printf("error num is %d\n", ret);
+ }
+
+ }
+ break;
+ }
- int argc = parse_param(str, argv, MAX_ARGS);
- //add by zqc Format error judgment start
- if(argv[2] == NULL)
- {
- LYVERBLOG("+[command error]:error num = %d\n",MENU_INPUT_ERROR);
- continue;
+ case 3: /* lynq_query_operator */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char operator1[BUF_SIZE] = {0};
+ int ret = lynq_query_operator(operator1);
+ if(!ret){
+ printf("operator is %s\n", operator1);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+
+ }
+ break;
}
- //add by zqc Format error judgment end
- function_start(argc,argv);
- continue;
- }
- else{
- // printf("pram error\n");
- LYVERBLOG("+[command error]:error num = %d\n",MENU_INPUT_ERROR);
- continue;
- }
- }
-
-
-
- return 0;
-}
+ case 4: /* lynq_get_iccid */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char iccid[BUF_SIZE] = {0};
+ int ret = lynq_get_iccid(iccid);
+ if(!ret){
+ printf("iccid is %s\n", iccid);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ }
+ break;
+ }
+
+ case 5: /* lynq_query_pin_lock */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ printf("input pin\n");
+ scanf("%s", pin);
+ int lock[BUF_SIZE] = {0};
+ int ret = lynq_query_pin_lock(pin, lock);
+ if(!ret){
+ printf("lock is %d\n", lock[0]);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+
+ }
+ break;
+ }
+ case 6: /* lynq_verify_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ printf("input pin\n");
+ scanf("%s", pin);
+ int ret = lynq_verify_pin(pin);
+ if(!ret){
+ printf("ok\n");
+ }else{
+ printf("error num is %d\n", ret);
+ }
+
+ }
+ break;
+ }
+ case 7: /* lynq_change_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char old_pin[BUF_PIN] = {0};
+ printf("input old pin\n");
+ scanf("%s", old_pin);
+ char new_pin[BUF_PIN] = {0};
+ printf("input new pin\n");
+ scanf("%s", new_pin);
+ int ret = lynq_change_pin(old_pin, new_pin);
+ if(!ret){
+ printf("ok\n");
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ }
+ break;
+ }
+ case 8: /* lynq_unlock_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char puk[BUF_SIZE] = {0};
+ printf("input puk\n");
+ scanf("%s", puk);
+ char new_pin[BUF_PIN] = {0};
+ printf("input new pin\n");
+ scanf("%s", new_pin);
+ int ret = lynq_unlock_pin(puk, new_pin);
+ if(!ret){
+ printf("ok\n");
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ }
+ break;
+ }
+ case 9: /* lynq_query_phone_number */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char number[BUF_SIZE] = {0};
+ int ret = lynq_query_phone_number(number);
+ if(!ret){
+ printf("ok number is %s\n", number);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ }
+ break;
+ }
+ case 10: /* lynq_get_imsi */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char imsi[BUF_SIZE] = {0};
+ int ret = lynq_get_imsi(imsi);
+ if(!ret){
+ printf("ok imsi is %s\n", imsi);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ }
+ break;
+ }
+ case 11: /* lynq_get_sim_status */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ int x = -1;
+ int *y = &x;
+ int ret = lynq_get_sim_status(y);
+ if(!ret){
+ printf("state is %d\n", *y);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ }
+ break;
+ }
+ case 12:
+ {
+ lynq_sim_deinit();
+ flag_init = 0;
+ break;
+ }
+
+ case 13:
+ {
+
+ int *y = &handle_data;
+ int ret = lynq_setup_data_call(y);
+ if(!ret){
+ printf("state is %d\n", *y);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+ case 14:
+ {
+ int *y = &handle_data;
+ int ret = lynq_deactive_data_call(y);
+ if(!ret){
+ printf("state is %d\n", *y);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+ // case 15:
+ // {
+ // lynq_setup_data_call_sp();
+ // flag_init = 0;
+ // break;
+ // }
+ // case 16:
+ // {
+ // lynq_get_data_call_list();
+ // flag_init = 0;
+ // break;
+ // }
+ // case 17:
+ // {
+ // lynq_wait_data_call_state_change();
+ // flag_init = 0;
+ // break;
+ // }
+ case 18:
+ {
+ int x;
+ printf("input token\n");
+ scanf("%d", &x);
+ int ret = lynq_init_data(x);
+ if(!ret){
+ printf("init success %d\n", ret);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+ case 19:
+ {
+ lynq_deinit_data();
+ }
+ case 21:
+ {
+ int x;
+ printf("input token\n");
+ scanf("%d", &x);
+ int ret = lynq_init_call(x);
+ if(!ret){
+ printf("init success %d\n", ret);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+
+ case 22:
+ {
+ int *y= &handle_call;
+ printf("before:\n");
+ printf("handle_call %p\n", &y);
+ char add[20] = {0};
+ printf("input tele num\n");
+ scanf("%s",add);
+ int ret = lynq_call(y,add);
+ printf("after:\n");
+ printf("handle_call %p\n", &y);
+ if(!ret){
+ printf("lynq_call success %d\n", ret);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+ case 23:
+ {
+ int ret = lynq_call_answer();
+ if(!ret){
+ printf("lynq_call_answer success %d\n", ret);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+ case 24:
+ {
+ int *y= &handle_call;
+ printf("after:\n");
+ printf("handle_call %p\n", &y);
+ int ret = lynq_call_hungup(y);
+ if(!ret){
+ printf("lynq_call_hungup success %d\n", ret);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+ case 26:
+ {
+ int ret = lynq_call_hungup_all();
+ if(!ret){
+ printf("lynq_call_hungup_all success %d\n", ret);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+ case 28:
+ {
+ int ret = lynq_deinit_call();
+ if(!ret){
+ printf("lynq_deinit_call success %d\n", ret);
+ }else{
+ printf("error num is %d\n", ret);
+ }
+ break;
+ }
+
+ case -1:
+ {
+ flag = 1; /* exit */
+ break;
+ }
+ case 80:
+ print_help();
+ break;
+ default:
+ print_help();
+ break;
+ }
+
+ if(flag == 1)
+ break;
+ }
+ //关闭库文件
+ dlclose(handler);
+ return 0;
+}
\ No newline at end of file
diff --git a/src/lynq/packages/apps/lynq-function-test/src/makefile b/src/lynq/packages/apps/lynq-function-test/src/makefile
old mode 100644
new mode 100755
index bfd29e9..7c75562
--- a/src/lynq/packages/apps/lynq-function-test/src/makefile
+++ b/src/lynq/packages/apps/lynq-function-test/src/makefile
@@ -46,22 +46,8 @@
LOCAL_C_INCLUDES = \
-I. \
-I$(LOCAL_PATH) \
- -I$(ROOT)$(includedir)/logger \
- -I$(ROOT)$(includedir)/ftp \
- -I$(ROOT)$(includedir)/liblynq-broadcast \
- -I$(ROOT)$(includedir)/vendor-ril \
- -I$(ROOT)$(includedir)/liblog \
- -I$(ROOT)$(includedir)/liblynq-driver-control \
- -I$(ROOT)$(includedir)/libtel \
- -I$(ROOT)$(includedir)/gstreamer-1.0 \
- -I$(ROOT)$(includedir)/glib-2.0 \
- -I$(ROOT)$(libdir)/glib-2.0/include \
- -I$(ROOT)$(libdir)/gstreamer-1.0/include\
- -I$(ROOT)$(includedir)/dbus-1.0 \
- -I../gps_hal/inc \
- -I../gps_hal/inc/hardware \
- -I$(ROOT)$(libdir)/dbus-1.0/include \
- -I$(ROOT)$(includedir)/include \
+ -I$(ROOT)$(includedir)/libdata \
+ -I$(ROOT)$(includedir)/libcall \
-DLIB_GNSS_HAL_DIR='"$(libdir)"'
LOCAL_C_INCLUDES+=$(DNS_FLAGS)
@@ -70,36 +56,16 @@
-L. \
-ldl \
-lstdc++ \
- -llog \
- -lsncfg \
-lcutils \
-lutils \
- -lpower \
-lbinder \
- -llynq-log \
- -llynq-tele-ril \
-lpthread \
- -lrt \
- -llynq-driver-control \
- -lgpshal \
- -lpal \
- -lgstreamer-1.0 \
- -lglib-2.0 \
- -lgstbase-1.0 \
- -lgstreamer-1.0 \
- -lgobject-2.0 \
- -lgio-2.0 \
- -ldtmf \
- -lapn \
- -ldbus-1 \
- -llynq-broadcast \
- -llynq-protcl \
- -llynq-fota \
- -lnandapi \
+ -llynq-data\
+ -llynq-call \
LOCAL_SRC_FILES_CPP = $(wildcard *.cpp gpio/*.cpp ril/*.cpp)
LOCAL_SRC_FILES_C = $(wildcard *.c gps/*.c)
-EXECUTABLE = lynq-function-test
+EXECUTABLE = lynq-sim-test
OBJECTS=$(LOCAL_SRC_FILES_CPP:.cpp=.o) $(LOCAL_SRC_FILES_C:.c=.o)
all: $(EXECUTABLE)
diff --git a/src/lynq/packages/apps/lynq-function-test/src/ril_test.cpp b/src/lynq/packages/apps/lynq-function-test/src/ril_test.cpp
deleted file mode 100644
index bdcb958..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/ril_test.cpp
+++ /dev/null
@@ -1,1799 +0,0 @@
-/*=============================================================================
-** FileName: ril_test.cpp
-** Desc: about function test
-** Author: Warren
-** Version: V1.0
-** LastChange: 2021-02-26
-** History:
-=============================================================================*/
-#include "function_common.h"
-#include <log/log.h>
-#include <liblog/lynq_deflog.h>
-#include "libtel/lib_tele.h"
-#include <libtel/lynq_call.h>
-#include <libtel/lynq_sim.h>
-#include <libtel/lynq_network.h>
-#include <libtel/lynq_data.h>
-#include <libtel/lynq_sms.h>
-#include "ril_test.h"
-#include <cutils/properties.h>
-#include <string.h>
-#define MAX_P 1024
-RIL_COMMAND api_commands[] = {
-#include "commands.h"
-};
-static int check_status(char **argv)
-{
- if(!strcmp(argv[0],"0")){
- return 1;
- }
- if(!atoi(argv[0])){
- return -1;
- }
- int num = atoi(argv[0]);
- if(num == 1)
- return 1;
- return -1;
-}
-static int strUpper(char * str)
-{
- int i=0;
- while(1)
- {
- if(str[i]=='\0')
- {
- break;
- }
- if(str[i]>='a'&&str[i]<='z')
- {
- //printf("str %c\n",str[i]-32);
- str[i]=str[i]-32;
- }
- i++;
- }
- return 0;
-}
-
-int eventDial(char **argv)
-{
- int32_t token;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][dial]: Please input phony number,and try again\n");
- return -1;
- }
- char* addr = argv[0];
- char output[1024] = {0};
- lynqCallList *msg = (lynqCallList*)malloc(sizeof(lynqCallList));
- memset(msg,0,sizeof(lynqCallList));
- msg->addr=(char *)malloc(sizeof(char));
- memset(msg->addr,0,sizeof(char));
- token = lynq_call(addr, msg);
- LYINFLOG("[MAIN_LOG] request is %d,phone number is %s,token is %x,error is %d,call_state is %d\n",
- msg->base.request,msg->addr,msg->base.token,msg->base.e,msg->call_state);
- if(msg->base.e!=0)
- {
- LYVERBLOG( "+[ril][dial]: error num = %d\n",msg->base.e);
- }
- else
- {
- LYVERBLOG( "+[ril][dial]: ok!!\n");
- }
- free(msg->addr);
- msg->addr=NULL;
- free(msg);
- msg=NULL;
- return 0;
-}
-
-int eventAnswer(char **argv)
-{
- int32_t token;
- char output[1024] = {0};
- lynqCallList *msg = (lynqCallList*)malloc(sizeof(lynqCallList));
- memset(msg,0,sizeof(lynqCallList));
- msg->addr=(char *)malloc(sizeof(char));
- memset(msg->addr,0,sizeof(char));
- //printf("call start \n");
- token = lynq_call_answer(msg);
- //printf("[MAIN_LOG] request is %d,phone number is %s,token is %x,error is %d,call_state is %d\n",
- //msg->base.request,msg->addr,msg->base.token,msg->base.e,msg->call_state);
- LYINFLOG("[MAIN_LOG] request is %d,phone number is %s,token is %x,error is %d,call_state is %d",
- msg->base.request,msg->addr,msg->base.request,msg->base.e,msg->call_state);
- if(msg->base.e!=0)
- {
- LYVERBLOG( "+[ril][an]: error num = %d\n",msg->base.e);
- }
- else
- {
- LYVERBLOG( "+[ril][an]: ok!!\n");
- }
- //emResultNotify(output,command);
- free(msg->addr);
- msg->addr=NULL;
- free(msg);
- msg=NULL;
- return 0;
-}
-int eventAutoAnswer(char **argv)
-{
- int32_t token=0;
- int mode=0;
- char output[1024] = {0};
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][atan]: Please input auto answer mode value:0 or 1,and try again\n");
- return -1;
- }
- int status = atoi(argv[0]);
- if(!(status==1 ||status ==0))
- {
- LYERRLOG("+[ril][atan]: Please input auto answer mode value:0 or 1,and try again\n");
- return -1;
- }
- token = lynq_set_auto_answercall(status,&mode);
- if(mode!=status)
- {
- LYVERBLOG( "+[ril][atan]: error num = %d\n",RIL_E_GENERIC_FAILURE);
- }
- else
- {
- LYVERBLOG( "+[ril][atan]: ok!!\n");
- }
- return 0;
-}
-int eventSetMute(char **argv)
-{
- int32_t token = 0;
- int status =0;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][stme]: Please input set mute mode:0 or 1,and try again!\n");
- return -1;
- }
- int mute = atoi(argv[0]);
- token = lynq_set_mute_mic(mute, &status);
- LYINFLOG("set mute status is %s,current mute status is %s\n",mute>0?"mute on":"mute off",status>0?"mute on":"mute off");
- if(mute!=status)
- {
- LYVERBLOG("+[ril][stme]: error num = %d\n",RIL_E_GENERIC_FAILURE);
- }
- else
- {
- LYVERBLOG("+[ril][stme]: ok!!\n");
- }
- return 0;
-}
-int eventGetMute(char **argv)
-{
- int32_t token = 0;
- int status =0;
- char output[1024] = {0};
- token = lynq_get_mute_status(&status);
- LYVERBLOG("+[ril][gtme]: status = %d\n",status>0?1:0);
- LYVERBLOG("+[ril][gtme]: ok!!\n");
- return 0;
-}
-int eventLastCallFailCause(char **argv)
-{
- int32_t token = 0;
- int status =0;
- char output[1024] = {0};
- lynqLastCallFailCause * msg = (lynqLastCallFailCause*)malloc(sizeof(lynqLastCallFailCause));
- memset(msg,0,sizeof(lynqLastCallFailCause));
- msg->vendor_cause = (char *)malloc(sizeof(char)*64);
- memset(msg->vendor_cause,0,sizeof(char));
- token = lynq_get_last_call_fail_cause(msg);
- LYINFLOG("token is %x,request is %d,error_code is %d,cause_code is %d,vendor_cause is %s\n",msg->base.token,
- msg->base.request,msg->base.e,msg->cause_code,msg->vendor_cause);
- if(msg->base.e!=0)
- {
- LYVERBLOG("+[ril][lcfc]: error num = %d\n",msg->base.e);
- }
- else
- {
- LYVERBLOG("+[ril][lcfc]: cause_code = %d,vendor_cause = %s\n",msg->cause_code,msg->vendor_cause);
- LYVERBLOG("+[ril][lcfc]: ok!!\n");
- }
- free(msg->vendor_cause);
- free(msg);
- return 0;
-}
-int eventCallHangUp(char **argv)
-{
- lynqBase msg;
- char output[1024] = {0};
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][hup]: Please input call index,and try again!\n");
- return -1;
- }
- int index = atoi(argv[0]);
- lynq_call_hang_up(index,&msg);
- //printf("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- LYINFLOG("request is %d,token is %x,error is %d",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][hup]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][hup]: ok!!\n");
- }
- return 0;
-}
-int eventRejectCall(char **argv)
-{
- lynqBase msg;
- char output[1024] = {0};
- lynq_reject_call(&msg);
- //printf("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][udub]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][udub]: ok!!\n");
- }
- return 0;
-}
-int eventSetDTMF(char **argv)
-{
- if(check_special(argv) == -1){
- LYVERBLOG("+[ril][dtmf]: Please input DTMF value:0-9,8,#,and try again!\n");
- return -1;
- }
- if(argv[0]==NULL || strlen(argv[0]) == 0)
- {
- LYVERBLOG("+[ril][dtmf]: Please input DTMF value:0-9,8,#,and try again!\n");
- return -1;
- }
- lynqBase msg;
- char output[1024] = {0};
- char value = argv[0][0];
- lynq_set_DTMF(value,&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][dtmf]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][dtmf]: ok!!\n");
- }
- return 0;
-}
-int eventSetDTMFVolume(char **argv)
-{
- if(check_numScope(argv) == -1){
- LYVERBLOG("+[ril][dtmfv]: Please input DTMF volume(0-36),and try again!\n");
- return -1;
- }
- int32_t token =0;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][dtmfv]: Please input DTMF volume(0-36),and try again!\n");
- return -1;
- }
- int volume = atoi(argv[0]);
- token = lynq_set_DTMF_volume(volume);
- LYVERBLOG("+[ril][dtmfv]: ok!!\n");
- //printf("Factory_result set DTMF Volume is %s\n",(token>0?"success":"fail"));
- return 0;
-}
-int eventDoMultiConference(char **argv)
-{
- lynqCallList msg;
- msg.addr=NULL;
- lynq_do_multi_conference(&msg);
- LYINFLOG("request is %d,call id is %d,phone number is %s,type of address is %d,token is %x,error is %d,call_state is %d\n",
- msg.base.request,msg.call_id,msg.addr,msg.toa,msg.base.token,msg.base.e,msg.call_state);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][dmc]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][dmc]: ok!!\n");
- }
- return 0;
-}
-int eventOthercallHold(char **argv)
-{
- lynqBase msg;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][och]: Please input call id,and try again!\n");
- return -1;
- }
- int call_id = atoi(argv[0]);
- lynq_othercall_hold(call_id,&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][och]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][och]: ok!!\n");
- }
- return 0;
-}
-int eventHangupWatingForCall(char **argv)
-{
- lynqCallList msg;
- msg.addr=NULL;
- lynq_hangup_wating_for_call(&msg);
- LYINFLOG("[MAIN_LOG] request is %d,call id is %d,phone number is %s,type of address is %d,token is %x,error is %d,call_state is %d\n",
- msg.base.request,msg.call_id,msg.addr,msg.toa,msg.base.token,msg.base.e,msg.call_state);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][hwc]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][hwc]: ok!!\n");
- }
- return 0;
-}
-int eventHangupForegroundResumeBackground(char **argv)
-{
- lynqCallList msg;
- msg.addr=NULL;
- lynq_hangup_foreground_resume_background(&msg);
- LYINFLOG("[MAIN_LOG] request is %d,call id is %d,phone number is %s,type of address is %d,token is %x,error is %d,call_state is %d\n",
- msg.base.request,msg.call_id,msg.addr,msg.toa,msg.base.token,msg.base.e,msg.call_state);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][hfrb]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][hfrb]: ok!!\n");
- }
- return 0;
-}
-int eventSwitchWaitOrHoldAndActiveCall(char ** argv)
-{
- lynqCallList msg;
- msg.addr=NULL;
- lynq_switch_hold_and_active_call(&msg);
- LYINFLOG("[MAIN_LOG] request is %d,call id is %d,phone number is %s,type of address is %d,token is %x,error is %d,call_state is %d\n",
- msg.base.request,msg.call_id,msg.addr,msg.toa,msg.base.token,msg.base.e,msg.call_state);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][swha]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][swha]: ok!!\n");
- }
- return 0;
-}
-
-int eventQueryOperator(char ** argv)
-{
- operatorInfo msg;
- msg.OperatorFN=NULL;
- msg.OperatorSH=NULL;
- msg.MccMnc=NULL;
- lynq_query_operater(&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][qop]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][qop]: OperatorFN = %s,OperatorSH = %s,MccMnc = %s\n",msg.OperatorFN,msg.OperatorSH,msg.MccMnc);
- LYVERBLOG("+[ril][qop]: ok!!\n");
- }
- return 0;
-}
-int eventQueryNetSelectMode(char ** argv)
-{
- networkSelecttionMode msg;
- lynq_query_network_selection_mode(& msg);
- //printf("request is %d,token is %x,error is %d,mode is %d\n",msg.base.request,msg.base.token,msg.base.e,msg.mode);
- LYINFLOG("request is %d,token is %x,error is %d,mode is %d\n",msg.base.request,msg.base.token,msg.base.e,msg.mode);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][qnsm]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][qnsm]: mode = %d\n",msg.mode);
- LYVERBLOG("+[ril][qnsm]: ok!!\n");
- }
- return 0;
-}
-int eventSetNetSelectMode(char ** argv)
-{
- char str[100]={0};
- if(check_status(argv)==-1){
- LYVERBLOG("+[ril][snsm]: Please input network selection mode,and try again!\n");
- return -1;
- }
- if(argv[0]==NULL || strlen(argv[0]) == 0)
- {
- LYERRLOG("+[ril][snsm]: Please input network selection mode,and try again!\n");
- return -1;
- }
- int mode = atoi(argv[0]);
- const char * mccmnc = "46000";//just China Mobile Communications Group
- lynqBase msg;
- sprintf(str,"%s",(mode==0?"Auto":"Manual"));
- if(mode==0)
- {
- lynq_set_network_selection_mode(str,NULL,&msg);
- }
- else if(mode ==1)
- {
- LYVERBLOG("+[ril][snsm]: You have selected manual mode, this command only supports CMCC SIM card temporarily");
- lynq_set_network_selection_mode(str,mccmnc,&msg);
- }
- else
- {
- LYERRLOG("+[ril][snsm]: please input network selection mode:0 or 1,and try again\n");
- return 0;
- }
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][snsm]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][snsm]: ok!!\n");
- }
- return 0;
-}
-int eventQueryAvailableNetwork(char **argv)
-{
- int32_t token=0;
- availableNetwork msg;
- msg.OperatorFN=NULL;
- msg.OperatorSH=NULL;
- msg.MccMnc=NULL;
- msg.NetStatus=NULL;
- lynq_query_available_network(&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][qan]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][qan]: OperatorFN = %s,OperatorSH = %s,MccMnc = %s,NetStatus = %s\n",msg.OperatorFN,msg.OperatorSH,msg.MccMnc,msg.NetStatus);
- LYVERBLOG("+[ril][qan]: ok!!\n");
- }
- return 0;
-
-}
- int eventQueryRegistrationState(char ** argv)
-{
- registrationStateInfo msg;
- msg.CID=NULL;
- msg.LAC=NULL;
- char str[10];
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][qrs]: Please input voice/data/ims,and try again!\n");
- return -1;
- }
- char *type = argv[0];
- if (strlen(type)>10)
- {
- LYERRLOG("+[ril][qrs]: the parameter is inavaliable !\n");
- return -1;
- }
- memcpy(str,type,strlen(type)+1);
- strUpper(str);
- //printf("upper str is %s\n",str);
- lynq_query_registration_state(str,&msg);
- if(!strcmp(str,"VOICE")){
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][qrs]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][qrs]: registrationState = %d\n",msg.regState);
- LYVERBLOG("+[ril][qrs]: ok!!\n");
- }
- }else if(!strcmp(str,"DATA")){
-
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][qrs]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][qrs]: registrationState = %d,LAC = %s,CID = %s,networkTyp = %d\n",msg.regState,msg.LAC,msg.CID,msg.netType);
- LYVERBLOG("+[ril][qrs]: ok!!\n");
- }
- }else if(!strcmp(str,"IMS")){
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][qrs]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][qrs]: imsRegistrationState = %d,radioTechFamily = %d\n",msg.imsRegState,msg.radioTechFam);
- LYVERBLOG("+[ril][qrs]: ok!!\n");
- }
- }else{
- LYERRLOG("+[ril][qrs]: [%s][%d] query ims registration state about voice, data, and ims!!! \n",__FUNCTION__,__LINE__);
- return -1;
- }
- return 0;
- }
- int eventQueryPrefferredNetworkType(char ** argv)
-{
- prefferredNetworkType msg;
- lynq_query_prefferred_networktype(&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][gpnt]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][gpnt]: pnt = %d\n",msg.pnt);
- LYVERBLOG("+[ril][gpnt]: ok!!\n");
- }
- return 0;
-}
- int eventSetPrefferredNetworkType(char ** argv)
-{
- lynqBase msg;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][spnt]: Please input prefferrend neteork type,and try again!\n");
- return -1;
- }
- int type = atoi(argv[0]);
- lynq_set_prefferred_networktype(type,&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][spnt]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][spnt]: ok!!\n");
- }
- return 0;
-}
-int eventQueryCellInfo(char ** argv)
-{
- cellInfoList **msg;
- int num=5;
- int realNum =0;
- int32_t token=0;
- msg = (cellInfoList **)malloc(sizeof(cellInfoList *)*num);
- if(msg==NULL)
- {
- LYERRLOG("+[ril][gcil]: malloc LYNQ_Data_Call_Response_v11 fail \n");
- return -1;
- }
- for(int i =0;i<num;i++)
- {
- msg[i] = (cellInfoList*)malloc(sizeof(cellInfoList));
- if (msg[i]==NULL)
- {
- for (int n=0;n<i;n++)
- {
- free(msg[n]);
- }
- return -1;
- }
- memset(msg[i],0,sizeof(cellInfoList));
- }
- token = lynq_query_cell_info(msg, num, &realNum);
- LYINFLOG("+[ril][gcil]: request is %d,token is %x,e is %d\n",msg[0]->base.request,msg[0]->base.token,msg[0]->base.e);
- if(msg[0]->base.e!=0)
- {
- LYVERBLOG("+[ril][gcil]: error num = %d\n",msg[0]->base.e);
- }
- else
- {
- for(int i = 0; i<realNum; i++)
- {
- LYVERBLOG("+[ril][gcil]: cellInfoType = %d,registered = %d,timeStampType = %d,timeStamp = %d\n",msg[i]->cellinfo.cellInfoType,msg[i]->cellinfo.registered,msg[i]->cellinfo.timeStampType,msg[i]->cellinfo.timeStamp);
- switch(msg[i]->cellinfo.cellInfoType) {
- case RIL_CELL_INFO_TYPE_GSM: {
- LYVERBLOG("+[ril][gcil]: gsm_mcc = %d,gsm_mnc = %d,gsm_lac = %d,gsm_cid = %d,gsm_signalStrength = %d,gsm_bitErrorRate%d,gsm_timingAdvance = %d\n",
- msg[i]->cellinfo.CellInfo.gsm.cellIdentityGsm.mcc,
- msg[i]->cellinfo.CellInfo.gsm.cellIdentityGsm.mnc,
- msg[i]->cellinfo.CellInfo.gsm.cellIdentityGsm.lac,
- msg[i]->cellinfo.CellInfo.gsm.cellIdentityGsm.cid,
- msg[i]->cellinfo.CellInfo.gsm.signalStrengthGsm.signalStrength,
- msg[i]->cellinfo.CellInfo.gsm.signalStrengthGsm.bitErrorRate,
- msg[i]->cellinfo.CellInfo.gsm.signalStrengthGsm.timingAdvance);
- break;
- }
- case RIL_CELL_INFO_TYPE_WCDMA: {
- LYVERBLOG("+[ril][gcil]: wcdma_mcc = %d,wcdma_mnc = %d,wcdma_lac = %d,wcdma_cid = %d,wcdma_psc = %d,wcdma_signalStrength = %d,wcdma_bitErrorRate = %d\n",
- msg[i]->cellinfo.CellInfo.wcdma.cellIdentityWcdma.mcc,
- msg[i]->cellinfo.CellInfo.wcdma.cellIdentityWcdma.mnc,
- msg[i]->cellinfo.CellInfo.wcdma.cellIdentityWcdma.lac,
- msg[i]->cellinfo.CellInfo.wcdma.cellIdentityWcdma.cid,
- msg[i]->cellinfo.CellInfo.wcdma.cellIdentityWcdma.psc,
- msg[i]->cellinfo.CellInfo.wcdma.signalStrengthWcdma.signalStrength,
- msg[i]->cellinfo.CellInfo.wcdma.signalStrengthWcdma.bitErrorRate);
- break;
- }
- case RIL_CELL_INFO_TYPE_CDMA: {
- LYVERBLOG("+[ril][gcil]: cdma_networkId = %d,cdma_systemId = %d,cdma_basestationId = %d,cdma_longitude = %d,cdma_latitude = %d,cdma_dbm = %d,cdma_ecio = %d,cdma_Evdo_dbm = %d,cdma_Evdo_ecio = %d,cdma_Evdo_signalNoiseRatio = %d\n",
- msg[i]->cellinfo.CellInfo.cdma.cellIdentityCdma.networkId,
- msg[i]->cellinfo.CellInfo.cdma.cellIdentityCdma.systemId,
- msg[i]->cellinfo.CellInfo.cdma.cellIdentityCdma.basestationId,
- msg[i]->cellinfo.CellInfo.cdma.cellIdentityCdma.longitude,
- msg[i]->cellinfo.CellInfo.cdma.cellIdentityCdma.latitude,
- msg[i]->cellinfo.CellInfo.cdma.signalStrengthCdma.dbm,
- msg[i]->cellinfo.CellInfo.cdma.signalStrengthCdma.ecio,
- msg[i]->cellinfo.CellInfo.cdma.signalStrengthEvdo.dbm,
- msg[i]->cellinfo.CellInfo.cdma.signalStrengthEvdo.ecio,
- msg[i]->cellinfo.CellInfo.cdma.signalStrengthEvdo.signalNoiseRatio);
- break;
- }
- case RIL_CELL_INFO_TYPE_LTE: {
- LYVERBLOG("+[ril][gcil]: lte_mcc = %d,lte_mnc = %d,lte_ci = %d,lte_pci = %d,lte_tac = %d,lte_signalStrength = %d,lte_rsrp = %d,lte_rsrq = %d,lte_rssnr = %d,lte_cqi = %d,lte_timingAdvance = %d\n",
- msg[i]->cellinfo.CellInfo.lte.cellIdentityLte.mcc,
- msg[i]->cellinfo.CellInfo.lte.cellIdentityLte.mnc,
- msg[i]->cellinfo.CellInfo.lte.cellIdentityLte.ci,
- msg[i]->cellinfo.CellInfo.lte.cellIdentityLte.pci,
- msg[i]->cellinfo.CellInfo.lte.cellIdentityLte.tac,
- msg[i]->cellinfo.CellInfo.lte.signalStrengthLte.signalStrength,
- msg[i]->cellinfo.CellInfo.lte.signalStrengthLte.rsrp,
- msg[i]->cellinfo.CellInfo.lte.signalStrengthLte.rsrq,
- msg[i]->cellinfo.CellInfo.lte.signalStrengthLte.rssnr,
- msg[i]->cellinfo.CellInfo.lte.signalStrengthLte.cqi,
- msg[i]->cellinfo.CellInfo.lte.signalStrengthLte.timingAdvance);
- break;
- }
- case RIL_CELL_INFO_TYPE_TD_SCDMA: {
- LYVERBLOG("+[ril][gcil]: tdscdma_mcc = %d,tdscdma_mnc = %d,tdscdma_lac = %d,tdscdma_cid = %d,tdscdma_cpid = %d,tdscdma_rscp = %d\n",
- msg[i]->cellinfo.CellInfo.tdscdma.cellIdentityTdscdma.mcc,
- msg[i]->cellinfo.CellInfo.tdscdma.cellIdentityTdscdma.mnc,
- msg[i]->cellinfo.CellInfo.tdscdma.cellIdentityTdscdma.lac,
- msg[i]->cellinfo.CellInfo.tdscdma.cellIdentityTdscdma.cid,
- msg[i]->cellinfo.CellInfo.tdscdma.cellIdentityTdscdma.cpid,
- msg[i]->cellinfo.CellInfo.tdscdma.signalStrengthTdscdma.rscp);
- break;
- }
- default:
- break;
- }
- }
- LYVERBLOG("+[ril][gcil]: ok!!\n");
- }
- for (int i = 0; i < num; i++)
- {
- if (msg[i]!=NULL)
- {
- free(msg[i]);
- msg[i]=NULL;
- }
- }
- free(msg);
- msg=NULL;
- return 0;
-}
-int eventSetUnsolCellInfoListrate(char ** argv)
-{
- lynqBase msg;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][sucilr]:Please input unsolicited cell infomation list rate,and try again!\n");
- return -1;
- }
- int rate = atoi(argv[0]);
- lynq_set_unsol_cell_info_listrate(rate,&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][sucilr]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][sucilr]: ok!!\n");
- }
- return 0;
-}
-int eventQueryNeighboringCellids(char ** argv)
-{
- neighboringCellIDs **msg=NULL;
- int num=5;
- int realNum =0;
- int32_t token=0;
- msg = (neighboringCellIDs **)malloc(sizeof(neighboringCellIDs *)*num);
- if(msg==NULL)
- {
- RLOGD("malloc LYNQ_Data_Call_Response_v11 fail \n");
- return -1;
- }
- for(int i =0;i<num;i++)
- {
- msg[i] = (neighboringCellIDs*)malloc(sizeof(neighboringCellIDs));
- msg[i]->cid = (char*)malloc(sizeof(char));
- if (msg[i]==NULL)
- {
- for (int n=0;n<i;n++)
- {
- free(msg[n]->cid);
- free(msg[n]);
- }
- return -1;
- }
- memset(msg[i],0,sizeof(neighboringCellIDs));
- }
- msg[0]->base.e=(RIL_Errno)(-1);
- token = lynq_query_neighboring_cellids(msg, num, &realNum);
- if(msg[0]->base.e!=0)
- {
- LYVERBLOG("+[ril][gncid]: error num = %d\n",msg[0]->base.e);
- }
- else
- {
- LYINFLOG("request is %d,token is %x,error is %d\n",msg[0]->base.request,msg[0]->base.token,msg[0]->base.e);
- for(int i =0;i<realNum;i++)
- {
- LYVERBLOG("+[ril][gncid]: cid = %s,rssi = %d\n",msg[i]->cid,msg[i]->rssi);
- }
- LYVERBLOG("+[ril][gncid]: ok!!\n");
- }
- for (int i = 0; i < num; i++)
- {
- if (msg[i]!=NULL)
- {
- free(msg[i]->cid);
- msg[i]->cid=NULL;
- free(msg[i]);
- msg[i]=NULL;
- }
- }
- free(msg);
- msg=NULL;
- return 0;
-}
-int eventSetBandMode(char ** argv)
-{
- lynqBase msg;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][sbm]: Please input band mode,and try again!\n");
- return -1;
- }
- int mode = atoi(argv[0]);
- lynq_set_band_mode(mode,&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][sbm]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][sbm]: ok!!\n");
- }
- return 0;
-}
-int eventQueryAvailableBandmode(char ** argv)
-{
- availableBandMode msg;
- lynq_query_available_bandmode(&msg);
- char buffer[256] = {0};
- char element[256] = {0};
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.bandmode[0]>0)
- {
- for(int i =1;i<=msg.bandmode[0];i++)
- {
- sprintf(element,"%d,",msg.bandmode[i]);
- strncat(buffer, element, strlen(element));
- }
- LYVERBLOG("+[ril][qabm]: availableBandMode = %s\n",buffer);
- LYVERBLOG("+[ril][qabm]: ok!!\n",buffer);
- return 0;
- }
- LYVERBLOG("+[ril][qabm]: error num = %d\n",msg.base.e);
- LYINFLOG("available band mode is null");
- return 0;
-}
-int eventRadioOn(char ** argv)
-{
- lynqBase msg;
- if(check_status(argv)==-1){
- LYVERBLOG("+[ril][rpo]: Please input radio on value,0 or 1,and try again!\n");
- return -1;
- }
- if(argv[0]==NULL || strlen(argv[0]) == 0)
- {
- LYVERBLOG("+[ril][rpo]: Please input radio on value,0 or 1,and try again!\n");
- return -1;
- }
- int state = atoi(argv[0]);
- lynq_radio_on(state,&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][rpo]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][rpo]: ok!!\n");
- }
- return 0;
-}
-int eventQueryRadioTech(char ** argv)
-{
- radioTechnology msg;
- char output[1024] = {0};
- lynq_query_radio_tech(&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][vrt]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][vrt]: RadioTech = %d\n",msg.radioTech);
- LYVERBLOG("+[ril][vrt]: ok!!\n");
- }
- return 0;
-}
-int eventSolicitedSignalStrength(char ** argv)
-{
- solicitedSignalStrength msg;
- lynq_solicited_signal_strength(&msg);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.base.request,msg.base.token,msg.base.e);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][sst]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][sst]: GW_signalStrength = %d,GW_bitErrorRate = %d,GW_timingAdvance = %d\n",
- msg.signalStrength.GW_SignalStrength.signalStrength,
- msg.signalStrength.GW_SignalStrength.bitErrorRate,
- msg.signalStrength.GW_SignalStrength.timingAdvance);
- LYVERBLOG("+[ril][sst]: CDMA_dbm = %d,CDMA_ecio = %d\n",
- msg.signalStrength.CDMA_SignalStrength.dbm,
- msg.signalStrength.CDMA_SignalStrength.ecio);
- LYVERBLOG("+[ril][sst]: EVDO_dbm = %d,EVDO_ecio = %d,EVDO_signalNoiseRatio = %d\n",
- msg.signalStrength.EVDO_SignalStrength.dbm,
- msg.signalStrength.EVDO_SignalStrength.ecio,
- msg.signalStrength.EVDO_SignalStrength.signalNoiseRatio);
- LYVERBLOG("+[ril][sst]: LTE_signalStrength = %d,LTE_rsrp = %d,LTE_rsrq = %d,LTE_rssnr = %d,LTE_cqi = %d,LTE_timingAdvance = %d\n",
- msg.signalStrength.LTE_SignalStrength.signalStrength,
- msg.signalStrength.LTE_SignalStrength.rsrp,
- msg.signalStrength.LTE_SignalStrength.rsrq,
- msg.signalStrength.LTE_SignalStrength.rssnr,
- msg.signalStrength.LTE_SignalStrength.cqi,
- msg.signalStrength.LTE_SignalStrength.timingAdvance);
- LYVERBLOG("+[ril][sst]: TD_SCDMA_signalStrength = %d,TD_SCDMA_bitErrorRate = %d,TD_SCDMA_rscp = %d\n",
- msg.signalStrength.TD_SCDMA_SignalStrength.signalStrength,
- msg.signalStrength.TD_SCDMA_SignalStrength.bitErrorRate,
- msg.signalStrength.TD_SCDMA_SignalStrength.rscp);
- LYVERBLOG("+[ril][sst]: WCDMA_signalStrength = %d,WCDMA_bitErrorRate = %d,WCDMA_rscp = %d,WCDMA_ecno = %d\n",
- msg.signalStrength.WCDMA_SignalStrength.signalStrength,
- msg.signalStrength.WCDMA_SignalStrength.bitErrorRate,
- msg.signalStrength.WCDMA_SignalStrength.rscp,
- msg.signalStrength.WCDMA_SignalStrength.ecno);
- LYVERBLOG("+[ril][sst]: ok!!\n");
- }
- return 0;
-}
-int eventModemOn(char **argv)
-{
- lynqBase msg;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][mpo]: Please input mode on value,0 or 1,and try again!\n");
- return -1;
- }
- int state = atoi(argv[0]);
- lynq_modem_on(state,&msg);
- //printf("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][mpo]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][mpo]: ok!!\n");
- }
- return 0;
-}
-int eventSetupDataCall(char ** argv)
-{
- int32_t token;
- int state=0;
- token = lynq_data_enable_data(&state);
- //printf("pdn state is %s\n",state<0?"disconnect":"connect");
- if(state<0)
- {
- LYVERBLOG("+[ril][edc]: error num = %d\n",RIL_E_GENERIC_FAILURE);
- }
- else
- {
- LYVERBLOG("+[ril][edc]: ok!!\n");
- }
- return 0;
-}
-int eventDeactiveDataCall(char ** argv)
-{
- int32_t token;
- int state=0;
- token = lynq_data_dectivate_data_call(&state);
- LYVERBLOG("+[ril][ddc]: ok!!\n");
- //printf("Factory_result pdn state is %s\n",state<0?"connect":"disconnect");
- return 0;
-}
-int eventGetDataCalllist(char ** argv)
-{
- int32_t token=0;
- int num=5;
- int realNum=0;
- LYNQ_Data_Call_Response_v11 **msg=(LYNQ_Data_Call_Response_v11**)malloc(sizeof(LYNQ_Data_Call_Response_v11*)*num);
- if (msg == NULL)
- {
- LYERRLOG("+[ril][gdcl]: malloc LYNQ_Data_Call_Response_v11 fail \n");
- return -1;
- }
- for(int i =0;i<num;i++)
- {
- msg[i] = (LYNQ_Data_Call_Response_v11*)malloc(sizeof(LYNQ_Data_Call_Response_v11));
- if (msg[i]==NULL)
- {
- for (int n=0;n<i;n++)
- {
- free(msg[n]);
- }
- return -1;
- }
- memset(msg[i],0,sizeof(LYNQ_Data_Call_Response_v11));
- }
- token = lynq_get_data_call_list(msg, num,&realNum);
- /*
- for(int i = 0; i<realNum; i++)
- {
- printf("status is %d,\nsuggestedRetryTime is %d,\ncid is %d,\nactive is %d,\nmtu is %d\n",msg[i]->status,msg[i]->suggestedRetryTime,msg[i]->cid,msg[i]->active,msg[i]->mtu);
- printf("type is %s\n",msg[i]->type);
- printf("ifname is %s\n",msg[i]->ifname);
- printf("addresses is %s\n",msg[i]->addresses);
- printf("dnses is %s\n",msg[i]->dnses);
- printf("gateways is %s\n",msg[i]->gateways);
- printf("pcscf is %s\n",msg[i]->pcscf);
- }
- */
- if(realNum>0)
- {
-
- //printf("Factory_result error code 1\n");
- for(int i = 0; i<realNum; i++)
- {
- LYVERBLOG("+[ril][gdcl]: status = %d,suggestedRetryTime = %d,cid = %d,active = %d,mtu = %d\n",msg[i]->status,msg[i]->suggestedRetryTime,msg[i]->cid,msg[i]->active,msg[i]->mtu);
- LYVERBLOG("+[ril][gdcl]: type = %s,ifname = %s,addresses = %s,dnses = %s,gateways = s%,pcscf = %s\n",msg[i]->type,msg[i]->ifname,msg[i]->addresses,msg[i]->dnses,msg[i]->gateways,msg[i]->pcscf);
- }
- LYVERBLOG("+[ril][gdcl]: ok!!\n");
- }
- else
- {
- LYVERBLOG("+[ril][gdcl]: error num = %d\n",RIL_E_GENERIC_FAILURE);
- }
- for (int i = 0; i < num; i++)
- {
- if (msg[i]!=NULL)
- {
- free(msg[i]);
- msg[i]=NULL;
- }
- }
- free(msg);
- msg=NULL;
- return 0;
-}
-
-int eventGetSimStatus(char ** argv)
-{
- static int32_t token=0;
- simStatus * sim_status=NULL;
- sim_status = (simStatus *)malloc(sizeof(simStatus));
- token = lynq_get_sim_status(sim_status);
- LYINFLOG("card_status:%d,card_type:%d,pin_state:%d,error_code:%d,request:%d,token:%x\n",sim_status->card_status,
- sim_status->card_type,sim_status->pin_state,sim_status->base.e,sim_status->base.request,sim_status->base.token);
- if(sim_status->base.e!=0)
- {
- LYVERBLOG("+[ril][gss]: error num = %d\n",sim_status->base.e);
- }
- else
- {
- LYVERBLOG("+[ril][gss]: card_status = %d,card_type = %d,pin_state = %d\n",sim_status->card_status,
- sim_status->card_type,sim_status->pin_state);
- LYVERBLOG("+[ril][gss]: ok!!\n");
- }
- if (sim_status->base.e==-1)
- {
- free(sim_status);
- sim_status=NULL;
- return -1;
- }
- free(sim_status);
- sim_status=NULL;
- return 0;
-}
-int eventGetImsi(char ** argv)
-{
- simImsi msg;
- lynq_get_imsi(&msg);
- //printf("request is %d, token is %x,error_code %d,imsi is %s\n",msg.base.request,msg.base.token, msg.base.e,msg.imsi);
- LYINFLOG("request is %d, token is %x,error_code %d,imsi is %s\n",msg.base.request,msg.base.token, msg.base.e,msg.imsi);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][gimsi]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][gimsi]: imsi = %s\n",msg.imsi);
- LYVERBLOG("+[ril][gimsi]: ok!!\n");
- }
- if (msg.base.e==-1)
- {
- return -1;
- }
- return 0;
-}
-int eventSendSms(char ** argv)
-{
- int32_t token=0;
- if(argv[0]==NULL||argv[1]==NULL)
- {
- LYERRLOG("+[ril][ssm: Please input telephonyNumber and message,and try again!\n");
- return -1;
- }
- char *telephonyNumber = argv[0];
- char *msgcont = argv[1];
- smsResponse msg;
- msg.smsResp.ackPDU=NULL;
- //const char *telephonyNumber ="10086";
- //const char * msgcont = "103";
- token = lynq_send_sms(telephonyNumber, 0,msgcont, NULL,&msg);
- //printf("request is %d,token is %x,error is %d,\nmessageRef is %d,ackPDU is %s,errorCode is %d\n",msg.base.request,msg.base.token,msg.base.e,
- //msg.smsResp.messageRef,msg.smsResp.ackPDU,msg.smsResp.errorCode);
- LYINFLOG("request is %d,token is %x,error is %d,messageRef is %d,ackPDU is %s,errorCode is %d\n",msg.base.request,msg.base.token,msg.base.e,
- msg.smsResp.messageRef,msg.smsResp.ackPDU,msg.smsResp.errorCode);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][ssm]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][ssm]: ok!!\n");
- }
- return 0;
-}
-int eventImsSendSms(char ** argv)
-{
- int32_t token=0;
- smsResponse msg;
- if(argv[0]==NULL||argv[1]==NULL)
- {
- LYERRLOG("+[ril][iss]:Please input telephonyNumber and message,and try again!\n");
- return -1;
- }
- char *telephonyNumber = argv[0];
- char *msgcont = argv[1];
- msg.smsResp.ackPDU=NULL;
- //const char *telephonyNumber ="10086";
- //const char * msgcont = "103";
- const char* retryNum ="0";
- const char *messageRef = "201";
- token = lynq_Ims_send_sms(telephonyNumber, 0,msgcont,retryNum,messageRef, NULL,&msg);
- LYINFLOG("request is %d,token is %x,error is %d,messageRef is %d,ackPDU is %s,errorCode is %d\n",msg.base.request,msg.base.token,msg.base.e,
- msg.smsResp.messageRef,msg.smsResp.ackPDU,msg.smsResp.errorCode);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][iss]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][iss]: ok!!\n");
- }
- return 0;
-}
-int eventWriteSmsToSim(char ** argv)
-{
- int32_t token=0;
- messageStoreInfo msg;
- if(argv[0]==NULL||argv[1]==NULL||argv[2]==NULL)
- {
- LYERRLOG("+[ril][wsts]: Please input telephonyNumber,message and sms status,and try again!\n");
- return -1;
- }
- const int smsStatus = atoi(argv[0]);
- const char *recPhonNum = argv[1];
- const char *msgcont = argv[2];
- token = lynq_write_sms_to_sim(smsStatus,recPhonNum,0,msgcont,NULL,&msg);
- LYINFLOG("request is %d,token is %x,error is %d,\nmessage strore index is %d\n",msg.base.request,msg.base.token,msg.base.e,
- msg.msgStoreIndex);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][wsts]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][wsts]: ok!!\n");
- }
- return 0;
-}
-int eventReportSmsMemoryStatus(char **argv)
-{
- lynqBase msg;
- char output[1024] = {0};
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][rsms]: Please input memory status,0 or 1,and try again!\n");
- return -1;
- }
- int value = atoi(argv[0]);
- lynq_report_sms_memory_status(value,&msg);
- //printf("request is %d,token is %x,error is %d,\n",msg.request,msg.token,msg.e);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][rsms]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][rsms]: ok!!\n");
- }
- return 0;
-}
-int eventDeletSmsOnSim(char **argv)
-{
- lynqBase msg;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][dsos]: Please input sms index,and try again!\n");
- return -1;
- }
- int value = atoi(argv[0]);
- lynq_delet_sms_on_sim(value,&msg);
- //printf("request is %d,token is %x,error is %d,\n",msg.request,msg.token,msg.e);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][dsos]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][dsos]: ok!!\n");
- }
- return 0;
-}
-int eventGetSmscAddress(char **argv)
-{
- smscCbInfo msg;
- lynq_get_smsc_address(&msg);
- //printf("request is %d,token is %x,error is %d,smsc address is %s\n",msg.base.request,msg.base.token,msg.base.e,msg.smsc);
- LYINFLOG("request is %d,token is %x,error is %d,smsc address is %s\n",msg.base.request,msg.base.token,msg.base.e,msg.smsc);
- if(msg.base.e!=0)
- {
- LYVERBLOG("+[ril][gsmsc]: error num = %d\n",msg.base.e);
- }
- else
- {
- LYVERBLOG("+[ril][gsmsc]: smsc = %s\n",msg.smsc);
- LYVERBLOG("+[ril][gsmsc]: ok!!\n");
- }
- return 0;
-}
-int eventSetSmscAddress(char **argv)
-{
- lynqBase msg;
- if(argv[0]==NULL)
- {
- LYERRLOG("+[ril][ssmsc]: Please input smsc address,and try again!\n");
- return -1;
- }
- const char* serviceNumber = argv[0];
- lynq_set_smsc_address(serviceNumber,&msg);
- //printf("request is %d,token is %x,error is %d,\n",msg.request,msg.token,msg.e);
- LYINFLOG("request is %d,token is %x,error is %d\n",msg.request,msg.token,msg.e);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][ssmsc]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][ssmsc]: ok!!\n");
- }
- return 0;
-}
-int evenStoreSmsToMemory(char **argv)
-{
- lynqBase msg;
- msg.e = (RIL_Errno)(-1);
- //printf("argv[2]%d,argv[3]%s,argv[4]%s\n",atoi(argv[2]), argv[3],argv[4]);
- lynq_store_sms_to_memory(RIL_SOCKET_1,atoi(argv[0]), argv[1],argv[2],&msg);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][sstm]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][sstm]: ok!!\n");
- }
- return 0;
-}
-int eventGetSmsFromMemory(char **argv)
-{
- lynqBase msg;
- msg.e = (RIL_Errno)(-1);
- storeMessageInfo sms;
- lynq_get_sms_from_memory(atoi(argv[0]),&sms, &msg);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][gstfm]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][gsfm]: Index = %d,Message = %s,Status = %d,teleNum= %s\n",sms.index,sms.message,sms.status,sms.teleNum);
- LYVERBLOG("+[ril][gsfm]: ok!!\n");
- }
- return 0;
-}
-int eventDeleteMessageFromMemory(char **argv)
-{
- lynqBase msg;
- msg.e = (RIL_Errno)(-1);
- lynq_delete_message_from_memory(atoi(argv[0]), &msg);
- if(msg.e!=0)
- {
- LYVERBLOG("+[ril][dmfm]: error num = %d\n",msg.e);
- }
- else
- {
- LYVERBLOG("+[ril][dmfm]: ok!!\n");
- }
- return 0;
-}
-
-//int callController(int *item, char *value,int command);
-//int networkcontroller(int *item, char *value,int command);
-//int datacontroller(int *item, char *value,int command);
-//int simcontroller(int *item, char *value,int command);
-//int smscontroller(int *item, char *value,int command);
-
-int ril_test(char *api,char *string) {
- char *argv[MAX_P] = {0};
- parseParameters(string,argv);
- RIL_COMMAND *command = find_command(api,api_commands);
- if(command)
- {
- (*(command->func)) (argv);
- }
- else
- {
- LYERRLOG("Can not find this command from function_test!!!\n");
- }
- /*
- switch (module) {
- case CALL_API:
- {
- callController(menu[1],argv);
- break;
- }
- case NETWORK_API:
- {
- networkcontroller(menu[1],argv);
- break;
- }
- case DATA_API:
- {
- datacontroller(menu[1],argv);
- break;
- }
- case SMS_API:
- {
- smscontroller(menu[1],argv);
- //RLOGD("test_api,RIL_API");
- break;
- }
- case SIM_API:
- {
- simcontroller(menu[1],argv);
- break;
- }
- default:
- break;
- }
- */
- return 0;
-}
-/*
-int callController(char *api,char **param)
-{
- char output[1024] = {0};
- RIL_COMMAND *command = find_command(api,api_commands);
- (*(command->func)) (param);
-
- switch(call_api_choice)
- {
- case DAIL:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventDial(argv[1],command);
- }
- else
- {
- printf("please input inavaliable call number,and try again!\n");
- emResultNotify(output,command);
- }
-
- //eventDial(item[4],command);
- //printf("please input inavaliable call number,and try again!\n");
- //emResultNotify(output,command);
-
- break;
- }
- case ANSWER_CALL:
- {
- eventAnswer(command);
- break;
- }
- case HANGUP_CALL:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventCallHangUp(atoi(&argv[1][0]),command);
- }
- else
- {
- printf("please input call id,and try again!\n");
- emResultNotify(output ,command);
- }
- break;
- }
- case REJECT_CALL:
- {
- eventRejectCall(command);
- break;
- }
- case AUTO_ANSWER_CALL:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventAutoAnswer(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input auto answer mode value:0 or 1,and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case SET_MUTE_STATUS:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventSetMute(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input set mute mode:0 or 1,and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case GET_MUTE_STATUS:
- {
- eventGetMute(command);
- break;
- }
- case SET_DTMF:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventSetDTMF(argv[1][0],command);
- }
- else
- {
- sprintf(output,"please input DTMF value:0-9,8,#,and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case SET_DTMF_V:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventSetDTMFVolume(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input volume value,0-36,and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case DO_MULTI_CONF:
- {
- eventDoMultiConference(command);
- break;
- }
- case OTHER_CALL_HOLD:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventOthercallHold(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input call id, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case HANGUP_WAITING_CALL:
- {
- eventHangupWatingForCall(command);
- break;
- }
- case HANGUP_FORE_RES_BACK:
- {
- eventHangupForegroundResumeBackground(command);
- break;
- }
- case SWITCH_HOLD_AND_ACTIVE_CALL:
- {
- eventSwitchWaitOrHoldAndActiveCall(command);
- break;
- }
- case GET_LAST_CALL_FAIL_CAUSE:
- {
- eventLastCallFailCause(command);
- break;
- }
- default:
- break;
- }
- return 0;
-}
-int networkcontroller(char *api,char **param)
-{
- int network_api_choice = item[3];
- char output[1024] = {0};
- switch(network_api_choice)
- {
- case QUERY_OPERATOR:
- {
- eventQueryOperator(command);
- break;
- }
- case QUERY_NETWORK_SELECTION_MODE:
- {
- eventQueryNetSelectMode(command);
- break;
- }
- case SET_NETWORK_SELECTION_MODE:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventSetNetSelectMode(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input network selection mode 0 or 1, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case QUERY_AVAILABLE_NETWORKS:
- {
- eventQueryAvailableNetwork(command);
- break;
- }
- case QUERY_REGISTRATION_STATE:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventQueryRegistrationState(argv[1],command);
- }
- else
- {
- sprintf(output,"please input type voice,data,or ims, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case GET_PREFERRED_NETWORK_TYPE:
- {
- eventQueryPrefferredNetworkType(command);
- break;
- }
- case SET_PREFERRED_NETWORK_TYPE:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventSetPrefferredNetworkType(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input preferred network type value , and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case GET_CELL_INFO_LIST:
- {
- eventQueryCellInfo(command);
- break;
- }
- case SET_UNSOL_CELL_INFO_LIST_RATE:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventSetUnsolCellInfoListrate(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input unsolicited cell infomation list rate , and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case GET_NEIGHBORING_CELL_IDS:
- {
- eventQueryNeighboringCellids(command);
- break;
- }
- case SET_BAND_MODE:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventSetBandMode(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input band mode, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case QUERY_AVAILABLE_BAND_MODE:
- {
- eventQueryAvailableBandmode(command);
- break;
- }
- case RADIO_POWER:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventRadioOn(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input radio power status value 0 or 1, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case VOICE_RADIO_TECH:
- {
- eventQueryRadioTech(command);
- break;
- }
- case SIGNAL_STRENGTH:
- {
- eventSolicitedSignalStrength(command);
- break;
- }
- case MODEM_POWER:
- {
- int num=0;
- char *argv[2]={0};
- if(num==parseParam(1, value,argv))
- {
- eventModemOn(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input modem power status value 0 or 1, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- default:
- break;
- }
- return 0;
-}
-int datacontroller(char *api,char **param)
-{
- int data_api_choice = item[3];
- char output[1024] = {0};
- switch(data_api_choice)
- {
- case SETUP_DATA_CALL:
- {
- eventSetupDataCall(command);
- break;
- }
- case DEACTIVATE_DATA_CALL:
- {
- eventDeactiveDataCall(command);
- break;
- }
- case GET_DATA_CALL_LIST:
- {
- eventGetDataCalllist(command);
- break;
- }
- default:
- break;
- }
- return 0;
-}
-int simcontroller(char *api,char **param)
-{
- int sim_api_choice = item[3];
- char output[1024] = {0};
- switch(sim_api_choice)
- {
- case GET_SIM_STATUS:
- {
- eventGetSimStatus(command);
- break;
- }
- case GET_IMSI:
- {
- eventGetImsi(command);
- break;
- }
- default:
- break;
- }
- return 0;
-}
-int smscontroller(int *item, char *value,int command)
-{
- int sms_api_choice = item[3];
- char output[1024] = {0};
- switch(sms_api_choice)
- {
- case SEND_SMS:
- {
- int num=0;
- char *argv[MAX_P]={0};
- if(num==parseParam(2, value,argv))
- {
- eventSendSms(argv[1], argv[2],command);
- }
- else
- {
- sprintf(output,"please input phone number and message, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case IMS_SEND_SMS:
- {
- int num=0;
- char *argv[MAX_P]={0};
- if(num==parseParam(2, value,argv))
- {
- eventImsSendSms(argv[1], argv[2],command);
- }
- else
- {
- sprintf(output,"please input phone number and message, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case WRITE_SMS_TO_SIM:
- {
- int num=0;
- char *argv[MAX_P]={0};
- if(num==parseParam(3, value,argv))
- {
- eventWriteSmsToSim(atoi(&argv[1][0]),argv[2], argv[3],command);
- }
- else
- {
- sprintf(output,"please input sms status,phone number and message, and try again!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case REPORT_SMS_MEMORY_STATUS:
- {
- int num=0;
- char *argv[MAX_P]={0};
- if(num==parseParam(1, value,argv))
- {
- eventReportSmsMemoryStatus(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input memory status 0 or 1,and try agin!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case DELETE_SMS_ON_SIM:
- {
- int num=0;
- char *argv[MAX_P]={0};
- if(num==parseParam(1, value,argv))
- {
- eventDeletSmsOnSim(atoi(&argv[1][0]),command);
- }
- else
- {
- sprintf(output,"please input sms index,and try agin!\n");
- emResultNotify(output,command);
- }
- break;
- }
- case GET_SMSC_ADDRESS:
- {
- eventGetSmscAddress(command);
- break;
- }
- case SET_SMSC_ADDRESS:
- {
- int num=0;
- char *argv[MAX_P]={0};
- if(num==parseParam(1, value,argv))
- {
- eventSetSmscAddress(argv[1],command);
- }
- else
- {
- sprintf(output,"please input serviceNumber,and try agin!\n");
- emResultNotify(output,command);
- }
- break;
- }
- }
- return 0;
-}
-*/
-
-
diff --git a/src/lynq/packages/apps/lynq-function-test/src/ril_test.h b/src/lynq/packages/apps/lynq-function-test/src/ril_test.h
deleted file mode 100644
index 7b1aa66..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/ril_test.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*=============================================================================
-** FileName: ril_test.h
-** Desc: about function test
-** Author: Warren
-** Version: V1.0
-** LastChange: 2021-02-26
-** History:
-=============================================================================*/
-
-#ifndef __LYNQ_RIL_TEST_H__
-#define __LYNQ_RIL_TEST_H__
-typedef enum {
- SIM_API = 0,
- CALL_API,
- NETWORK_API,
- DATA_API,
- SMS_API,
-}RIL_API_MENU;
-
-typedef enum{
- DAIL= 0,
- ANSWER_CALL,
- HANGUP_CALL,
- REJECT_CALL,
- AUTO_ANSWER_CALL,
- SET_MUTE_STATUS,
- GET_MUTE_STATUS,
- SET_DTMF,
- SET_DTMF_V,
- DO_MULTI_CONF,
- OTHER_CALL_HOLD,
- HANGUP_WAITING_CALL,
- HANGUP_FORE_RES_BACK,
- SWITCH_HOLD_AND_ACTIVE_CALL,
- GET_LAST_CALL_FAIL_CAUSE,
-}RIL_CALL_MENU;
-
-typedef enum
-{
- QUERY_OPERATOR=0,
- QUERY_NETWORK_SELECTION_MODE,
- SET_NETWORK_SELECTION_MODE,
- QUERY_AVAILABLE_NETWORKS,
- QUERY_REGISTRATION_STATE,
- GET_PREFERRED_NETWORK_TYPE,
- SET_PREFERRED_NETWORK_TYPE,
- GET_CELL_INFO_LIST,
- SET_UNSOL_CELL_INFO_LIST_RATE,
- GET_NEIGHBORING_CELL_IDS ,
- SET_BAND_MODE,
- QUERY_AVAILABLE_BAND_MODE,
- RADIO_POWER,
- VOICE_RADIO_TECH,
- SIGNAL_STRENGTH,
- MODEM_POWER,
-}RIL_NETWORK_MENU;
-
-typedef enum{
- SETUP_DATA_CALL=0,
- DEACTIVATE_DATA_CALL,
- GET_DATA_CALL_LIST,
-}RIL_DATA_MENU;
-
-typedef enum{
- GET_SIM_STATUS=0,
- GET_IMSI,
-}RIL_SIM_MENU;
-
-typedef enum{
- SEND_SMS=0,
- IMS_SEND_SMS,
- WRITE_SMS_TO_SIM,
- REPORT_SMS_MEMORY_STATUS,
- DELETE_SMS_ON_SIM,
- GET_SMSC_ADDRESS,
- SET_SMSC_ADDRESS,
-}RIL_SMS_MENU;
-int eventDial(char **argv);
-int eventAnswer(char **argv);
-int eventAutoAnswer(char **argv);
-int eventSetMute(char **argv);
-int eventGetMute(char **argv);
-int eventLastCallFailCause(char **argv);
-int eventCallHangUp(char **argv);
-int eventRejectCall(char **argv);
-int eventSetDTMF(char **argv);
-int eventSetDTMFVolume(char **argv);
-int eventDoMultiConference(char **argv);
-int eventOthercallHold(char **argv);
-int eventHangupWatingForCall(char **argv);
-int eventHangupForegroundResumeBackground(char **argv);
-int eventSwitchWaitOrHoldAndActiveCall(char ** argv);
-int eventQueryOperator(char ** argv);
-int eventQueryNetSelectMode(char ** argv);
-int eventSetNetSelectMode(char ** argv);
-int eventQueryAvailableNetwork(char **argv);
-int eventQueryRegistrationState(char ** argv);
-int eventQueryPrefferredNetworkType(char ** argv);
-int eventSetPrefferredNetworkType(char ** argv);
-int eventQueryCellInfo(char ** argv);
-int eventSetUnsolCellInfoListrate(char ** argv);
-int eventQueryNeighboringCellids(char ** argv);
-int eventSetBandMode(char ** argv);
-int eventQueryAvailableBandmode(char ** argv);
-int eventRadioOn(char ** argv);
-int eventQueryRadioTech(char ** argv);
-int eventSolicitedSignalStrength(char ** argv);
-int eventModemOn(char **argv);
-int eventSetupDataCall(char ** argv);
-int eventDeactiveDataCall(char ** argv);
-int eventGetDataCalllist(char ** argv);
-int eventGetSimStatus(char ** argv);
-int eventGetImsi(char ** argv);
-int eventSendSms(char ** argv);
-int eventImsSendSms(char ** argv);
-int eventWriteSmsToSim(char ** argv);
-int eventReportSmsMemoryStatus(char **argv);
-int eventDeletSmsOnSim(char **argv);
-int eventGetSmscAddress(char **argv);
-int eventSetSmscAddress(char **argv);
-int evenStoreSmsToMemory(char **argv);
-int eventGetSmsFromMemory(char **argv);
-int eventDeleteMessageFromMemory(char **argv);
-
-
-int ril_test(char *api,char *string);
-
-
-#endif //__LYNQ_RIL_TEST_H__
-
diff --git a/src/lynq/packages/apps/lynq-function-test/src/usb_commands.h b/src/lynq/packages/apps/lynq-function-test/src/usb_commands.h
deleted file mode 100644
index cd6f381..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/usb_commands.h
+++ /dev/null
@@ -1,4 +0,0 @@
-{"enable_gadget",enable_gadget, "enable_gadget"},
-{"tether_gadget_on",tether_gadget_on, "tether_gadget_on"},
-{"disable_gadget",disable_gadget, "disable_gadget"},
-{"tether_gadget_off",tether_gadget_off, "tether_gadget_off"},
\ No newline at end of file
diff --git a/src/lynq/packages/apps/lynq-function-test/src/usb_switch.cpp b/src/lynq/packages/apps/lynq-function-test/src/usb_switch.cpp
deleted file mode 100644
index c037ab1..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/usb_switch.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "usb_switch.h"
-#define MAX_P 1024
-
-RIL_COMMAND usb_api_commands[] = {
-#include "usb_commands.h"
-};
-
-
-int usb_switch_test(char *api,char *string) {
- char *argv[MAX_P] = {0};
- parseParameters(string,argv);
- RIL_COMMAND *command = find_command(api,usb_api_commands);
- if(command)
- {
- (*(command->func)) (argv);
- }
- else
- {
- LYERRLOG("Can not find this command from function_test!!!\n");
- }
- return 0;
-}
-
-
-int enable_gadget(char **argv){
- char buff[128]={0};
- FILE *cmd = NULL;
- cmd = popen("connmanctl enable gadget", "r");
- if (cmd == NULL) {
- RLOGD("open pipe fail!\n");
- return 0;
- }
- while(fgets(buff,127,cmd)!=NULL)
- {
- LYVERBLOG("enable gadget, %s",buff);
-
- }
- pclose(cmd);
- return 0;
-}
-int tether_gadget_on(char **argv){
- char buff[128]={0};
- FILE *cmd = NULL;
- cmd = popen("connmanctl tether gadget on", "r");
- if (cmd == NULL) {
- RLOGD("open pipe fail!\n");
- return 0;
- }
- while(fgets(buff,127,cmd)!=NULL)
- {
- LYVERBLOG("tether gadget on, %s",buff);
-
- }
- pclose(cmd);
- return 0;
-}
-int disable_gadget(char **argv){
- char buff[128]={0};
- FILE *cmd = NULL;
- cmd = popen("connmanctl disable gadget", "r");
- if (cmd == NULL) {
- RLOGD("open pipe fail!\n");
- return 0;
- }
- while(fgets(buff,127,cmd)!=NULL)
- {
- LYVERBLOG("disable gadget , %s",buff);
-
- }
- pclose(cmd);
- return 0;
-}
-int tether_gadget_off(char **argv){
- char buff[128]={0};
- FILE *cmd = NULL;
- cmd = popen("connmanctl tether gadget off", "r");
- if (cmd == NULL) {
- RLOGD("open pipe fail!\n");
- return 0;
- }
- while(fgets(buff,127,cmd)!=NULL)
- {
- LYVERBLOG("tether gadget off, %s",buff);
-
- }
- pclose(cmd);
- return 0;
-}
\ No newline at end of file
diff --git a/src/lynq/packages/apps/lynq-function-test/src/usb_switch.h b/src/lynq/packages/apps/lynq-function-test/src/usb_switch.h
deleted file mode 100644
index 1021e44..0000000
--- a/src/lynq/packages/apps/lynq-function-test/src/usb_switch.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef __USB_SWITCH_H__
-#define __USB_SWITCH_H__
-
-#include "function_common.h"
-#include <log/log.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-
-
-int usb_switch_test(char *api,char *string);
-int enable_gadget(char **argv);
-int tether_gadget_on(char **argv);
-int disable_gadget(char **argv);
-int tether_gadget_off(char **argv);
-#endif
\ No newline at end of file