Merge "[Feature][T106][task-view-1101][audio] Add audio exception exit to clean up resources"
diff --git a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x0004F000.bin b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x0004F400.bin
similarity index 100%
rename from allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x0004F000.bin
rename to allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x0004F400.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref.ini b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref.ini
index da1591a..6496bf2 100755
--- a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref.ini
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref.ini
@@ -14,14 +14,14 @@
../allbins_dc_ref/phycom_nvrwo_0x0002C400.bin
../allbins_dc_ref/phycom_nvrwo_0x00037C00.bin
../allbins_dc_ref/phycom_nvrwo_0x00043400.bin
-;../allbins_dc_ref/phycom_nvrwo_0x0004EC00.bin
+../allbins_dc_ref/phycom_nvrwo_0x0004EC00.bin
;xf.li@20230927 add for DRDI end
../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x00003400.bin
;xf.li@20230927 add for DRDI start
../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x0002CC00.bin
../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin
../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x00043C00.bin
-;../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x0004F000.bin
+../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x0004F400.bin
;xf.li@20230927 add for DRDI end
../allbins_dc_ref/phyGgeCom_nvrwo_0x0000EC00.bin
../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00007800.bin
@@ -29,18 +29,18 @@
../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00031000.bin
../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin
../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00048000.bin
-;../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00053800.bin
+../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00053800.bin
;xf.li@20230927 add for DRDI end
../allbins_dc_ref/phyLteaCom_nvrwo_0x00012C00.bin
../allbins_dc_ref/phyLtetxtable_nvrwo_0x0001BC00.bin
../allbins_dc_ref/phyTdsAmtUser_nvrwo_0x00002800.bin
../allbins_dc_ref/phyTdsCom_nvrwo_0x0000E400.bin
-;../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00005000.bin
+../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00005000.bin
;xf.li@20230927 add for DRDI start
../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x0002E800.bin
../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin
../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00045800.bin
-;../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00051000.bin
+../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00051000.bin
;xf.li@20230927 add for DRDI end
../allbins_dc_ref/phyWcdmaCom_nvrwo_0x00012400.bin
../allbins_dc_ref/zxRfM0_nvrwo_0x00016C00.bin
diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini
index d05e783..5543462 100755
--- a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini
@@ -14,14 +14,14 @@
../allbins_dc_ref_M22/phycom_nvrwo_0x0002C400.bin
../allbins_dc_ref_M22/phycom_nvrwo_0x00037C00.bin
../allbins_dc_ref_M22/phycom_nvrwo_0x00043400.bin
-;../allbins_dc_ref_M22/phycom_nvrwo_0x0004EC00.bin
+../allbins_dc_ref_M22/phycom_nvrwo_0x0004EC00.bin
;xf.li@20230927 add for DRDI end
../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x00003400.bin
;xf.li@20230927 add for DRDI start
../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x0002CC00.bin
../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x00038400.bin
../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x00043C00.bin
-;../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x0004F000.bin
+../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x0004F400.bin
;xf.li@20230927 add for DRDI end
../allbins_dc_ref_M22/phyGgeCom_nvrwo_0x0000EC00.bin
../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00007800.bin
@@ -29,18 +29,18 @@
../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00031000.bin
../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x0003C800.bin
../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00048000.bin
-;../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00053800.bin
+../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00053800.bin
;xf.li@20230927 add for DRDI end
../allbins_dc_ref_M22/phyLteaCom_nvrwo_0x00012C00.bin
../allbins_dc_ref_M22/phyLtetxtable_nvrwo_0x0001BC00.bin
../allbins_dc_ref_M22/phyTdsAmtUser_nvrwo_0x00002800.bin
../allbins_dc_ref_M22/phyTdsCom_nvrwo_0x0000E400.bin
-;../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00005000.bin
+../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00005000.bin
;xf.li@20230927 add for DRDI start
../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x0002E800.bin
../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x0003A000.bin
../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00045800.bin
-;../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00051000.bin
+../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00051000.bin
;xf.li@20230927 add for DRDI end
../allbins_dc_ref_M22/phyWcdmaCom_nvrwo_0x00012400.bin
../allbins_dc_ref_M22/zxRfM0_nvrwo_0x00016C00.bin
diff --git a/ap/app/Script/scripts/psext_down_ipv6.sh b/ap/app/Script/scripts/psext_down_ipv6.sh
index c738a77..9c32c71 100755
--- a/ap/app/Script/scripts/psext_down_ipv6.sh
+++ b/ap/app/Script/scripts/psext_down_ipv6.sh
@@ -3,7 +3,7 @@
if [ "$test_log" == "" ]; then
test_log=`nv get path_log`"te.log"
fi
-echo "Info: psext_updown_ipv6.sh $ps_if $eth_if $br_if start" >> $test_log
+echo "Info: psext_down_ipv6.sh $1 start" >> $test_log
c_id=$1
ps_if=`nv get pswan`$c_id
@@ -15,7 +15,7 @@
{
br_ip=`nv get $br_if"_ipv6_ip"`
ps_ip=`nv get $ps_if"_ipv6_ip"`
- pdp_ip=`nv get ipv6_wan_ipaddr`
+ pdp_ip=`nv get $ps_if"_ipv6_pdp"`
ip6tables -t filter -D FORWARD -p icmpv6 --icmpv6-type 135 -j DROP
@@ -67,7 +67,7 @@
nv set $ps_if"_dhcpv6_end"="::"
#适配页面等其他地方使用老NV
- nv set ipv6_wan_ipaddr="::"
+ nv set $ps_if"_ipv6_pdp"="::"
nv set $ps_if"_ipv6_state"="dead"
local_ipv6_addr_nv="$ps_if""_local_ipv6_addr"
diff --git a/ap/app/Script/scripts/psext_updown_ipv6.sh b/ap/app/Script/scripts/psext_updown_ipv6.sh
index 06bee36..9207f11 100755
--- a/ap/app/Script/scripts/psext_updown_ipv6.sh
+++ b/ap/app/Script/scripts/psext_updown_ipv6.sh
@@ -142,7 +142,7 @@
#pdp 激活的ipv6地址
pdp_ip=$prefix_info_temp$interface_id_temp
#pdp激活地址,适配页面使用
- nv set ipv6_wan_ipaddr="$pdp_ip"
+ nv set $ps_if"_ipv6_pdp"="$pdp_ip"
ipv6_addr_conver $pdp_ip "$ps_if"
@@ -364,7 +364,7 @@
{
br_ip=`nv get $br_if"_ipv6_ip"`
ps_ip=`nv get $ps_if"_ipv6_ip"`
- pdp_ip=`nv get ipv6_wan_ipaddr`
+ pdp_ip=`nv get $ps_if"_ipv6_pdp"`
ip6tables -t filter -D FORWARD -p icmpv6 --icmpv6-type 135 -j DROP
@@ -416,7 +416,7 @@
nv set $ps_if"_dhcpv6_end"="::"
#适配页面等其他地方使用老NV
- nv set ipv6_wan_ipaddr="::"
+ nv set $ps_if"_ipv6_pdp"="::"
nv set $ps_if"_ipv6_state"="dead"
local_ipv6_addr_nv="$ps_if""_local_ipv6_addr"
diff --git a/ap/app/zte_comm/zte_mainctrl/netdev_proc.c b/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
index 4a4ae9b..2533625 100755
--- a/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
+++ b/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
@@ -874,17 +874,26 @@
(actinfo->act_info.ip46flag & V4_VALID))
{
char nat_enable[4] = {0};
-
+ /*add lynq nv config support & merge changes for sihai@cz.li on 2024/10/11 start*/
+ int rndis_ip_map = !system("cat /sys/class/lynq_nv_cfg/cdev_lynq_nv_cfg/rndis_ip_map | grep 1");
system_cmd_ex("iptables -P INPUT ACCEPT");
system_cmd_ex("iptables -P OUTPUT ACCEPT");
system_cmd_ex("iptables -P FORWARD ACCEPT");
- system_cmd_ex("iptables -t nat -F");
+ if (rndis_ip_map == 0)
+ system_cmd_ex("iptables -t nat -F");
system_cmd_ex("iptables -t nat -X port_forward");
system_cmd_ex("iptables -t nat -X DMZ");
system_cmd_ex("iptables -t nat -X port_mapping");
system_cmd_ex("iptables -t nat -N port_forward");
system_cmd_ex("iptables -t nat -N DMZ");
system_cmd_ex("iptables -t nat -N port_mapping");
+ if (rndis_ip_map == 1)
+ {
+ system_cmd_ex("iptables -t nat -D PREROUTING -j port_forward");
+ system_cmd_ex("iptables -t nat -D PREROUTING -j DMZ");
+ system_cmd_ex("iptables -t nat -D PREROUTING -j port_mapping");
+ }
+ /*add lynq nv config support & merge changes for sihai@cz.li on 2024/10/11 end*/
system_cmd_ex("iptables -t nat -I PREROUTING 1 -j port_forward");
system_cmd_ex("iptables -t nat -I PREROUTING 1 -j DMZ");
system_cmd_ex("iptables -t nat -I PREROUTING 1 -j port_mapping");
diff --git a/ap/os/linux/linux-3.4.x/drivers/net/psnet/psnet_io.c b/ap/os/linux/linux-3.4.x/drivers/net/psnet/psnet_io.c
index b5ffada..07db9aa 100755
--- a/ap/os/linux/linux-3.4.x/drivers/net/psnet/psnet_io.c
+++ b/ap/os/linux/linux-3.4.x/drivers/net/psnet/psnet_io.c
@@ -94,6 +94,8 @@
int ra_mtu_enable;
module_param(ra_mtu_enable, int, 0644);
+int rs_send_flag;
+module_param(rs_send_flag, int, 0644);
extern struct psnet *global_psnet[DDR_DEV_MAX];
void psnet_parse_RA_pkt(unsigned char cid, unsigned char* pkt, int len)
@@ -187,7 +189,7 @@
int psnet_get_prefix(unsigned char cid, int len, unsigned char *prefix, unsigned char *prefix_len)
{
- if(cid > 0 && cid <= DDR_DEV_MAX){
+ if(cid > 0 && cid <= DDR_DEV_MAX && rs_send_flag == 0){
if(g_psnet_ipv6_prefix[cid-1].flag == 0){
int ret = down_timeout(&g_psnet_ipv6_prefix[cid-1].sem, 3*HZ);
if(ret != 0)//cov
diff --git a/ap/os/linux/linux-3.4.x/drivers/net/zvnet/zvnet_dev.c b/ap/os/linux/linux-3.4.x/drivers/net/zvnet/zvnet_dev.c
index 426b9ed..d059496 100755
--- a/ap/os/linux/linux-3.4.x/drivers/net/zvnet/zvnet_dev.c
+++ b/ap/os/linux/linux-3.4.x/drivers/net/zvnet/zvnet_dev.c
@@ -399,6 +399,7 @@
if (!skb)
{
write_free_capbuf(pbuf_temp->buff);
+ if(printk_ratelimit())
zv_err("skb=%d alloc fail tops=%d fromps=%d\n",atomic_read(&skb_used),atomic_read(&skb_tops),atomic_read(&skb_fromps));
return NULL;
}
@@ -992,6 +993,9 @@
.chID = channel_20,
.flag = 0};
struct T_zvnet_rpmsg buff[ZVNET_XMIT_BUFF_NUM];
+ struct sched_param param = { .sched_priority = 1 };
+ param.sched_priority = 36;
+ sched_setscheduler(current, SCHED_FIFO, ¶m);
//struct zvp_header hzvp;
/*
if(IS_ERR(zvnetdev)) {
@@ -1027,6 +1031,7 @@
for(i = 0; i < num; i++){
skb = skb_build_capbuf(&buff[i]);
if (unlikely(!skb)) {
+ if(printk_ratelimit())
zv_err("skb_build_capbuf fail,len=%d i=%d",ret_len,i);
continue;
}
diff --git a/ap/os/linux/linux-3.4.x/drivers/usb/gadget/u_ether.c b/ap/os/linux/linux-3.4.x/drivers/usb/gadget/u_ether.c
index 16cf5dc..14d4b28 100755
--- a/ap/os/linux/linux-3.4.x/drivers/usb/gadget/u_ether.c
+++ b/ap/os/linux/linux-3.4.x/drivers/usb/gadget/u_ether.c
@@ -294,6 +294,7 @@
skb = dev_alloc_skb(size);
if (skb == NULL) {
+ if(printk_ratelimit())
DBG(dev, "no rx skb\n");
goto enomem;
}
diff --git a/ap/os/linux/linux-3.4.x/net/core/SI/ext_mem.c b/ap/os/linux/linux-3.4.x/net/core/SI/ext_mem.c
index 5ebd6dc..851493c 100755
--- a/ap/os/linux/linux-3.4.x/net/core/SI/ext_mem.c
+++ b/ap/os/linux/linux-3.4.x/net/core/SI/ext_mem.c
@@ -334,6 +334,7 @@
psnet_freepsbuf(pbuf_temp->pbuf_head);
#endif
#endif
+ if(printk_ratelimit())
printk("skb=%d psbuff fail1 tops=%d fromps=%d\n",atomic_read(&skb_used),atomic_read(&skb_tops),atomic_read(&skb_fromps));
return NULL;
}
diff --git a/ap/os/linux/linux-3.4.x/net/core/fastproc/fast6.c b/ap/os/linux/linux-3.4.x/net/core/fastproc/fast6.c
index 3805cac..986119f 100755
--- a/ap/os/linux/linux-3.4.x/net/core/fastproc/fast6.c
+++ b/ap/os/linux/linux-3.4.x/net/core/fastproc/fast6.c
@@ -40,6 +40,7 @@
extern struct tasklet_struct fast_tx_bh;
/* ******************************** º¯ÊýÉêÃ÷ ********************************/
extern int zvnet_get_index_by_netdev(struct net_device *net);
+extern struct net_device *fast_br_parent(const struct net_device *dev);
/* ******************************** º¯ÊýʵÏÖ ********************************/
// ipv6±¨Í·À©Õ¹Ñ¡ÏÅжÏÊÇ·ñ°üº¬l4head
@@ -367,6 +368,10 @@
return 0;
}
}
+ if(skb->isvlan && fast6_entry_data->hh_flag == 0){
+ rcu_read_unlock();
+ return 0;
+ }
#endif
dev = fast6_entry_data->outdev;
/*Åжϱ¨Îij¤¶ÈÊÇ·ñ³¬¹ý³ö¿ÚDEVµÄMTU*/
@@ -402,6 +407,11 @@
l4_offset = l4head - skb->data;
//tcpdumpin_sq(skb);
#if _USE_VEHICLE_DC
+ if(skb->indev && zvnet_get_index_by_netdev(skb->indev) >= 0 && (zvnet_get_index_by_netdev(dev) >= 0 ||
+ ((dev->priv_flags & IFF_EBRIDGE) && (fast_br_parent(skb->indev) != dev)))){
+ rcu_read_unlock();
+ return 0;
+ }
if(fastbr_level != 1){
if (IPPROTO_TCP == tuple.dst.protonum){
tcph = (struct tcphdr *)l4head;
diff --git a/ap/os/linux/linux-3.4.x/net/core/fastproc/fast_common.c b/ap/os/linux/linux-3.4.x/net/core/fastproc/fast_common.c
index 0d0b071..54d1f74 100755
--- a/ap/os/linux/linux-3.4.x/net/core/fastproc/fast_common.c
+++ b/ap/os/linux/linux-3.4.x/net/core/fastproc/fast_common.c
@@ -722,11 +722,11 @@
{
tcpack_rel(entry);
entry->ct->timeout.function((unsigned long)entry->ct);
- //²»ÔÙÒýÓÃctÁË
- nf_ct_put(entry->ct);
#if _USE_VEHICLE_DC
fast_entry_unlink_cap(entry);
#endif
+ //²»ÔÙÒýÓÃctÁË
+ nf_ct_put(entry->ct);
fn_list_del(list_head, entry, free_entry);
}
@@ -1951,6 +1951,7 @@
skb->protocol = old_pro;
skb->data = old_data;
skb->len = old_len;
+ skb->isvlan = 0;
return 0;
}
diff --git a/ap/os/linux/linux-3.4.x/net/core/fastproc/fastnat.c b/ap/os/linux/linux-3.4.x/net/core/fastproc/fastnat.c
index 7e9c7b1..dc9d5a4 100755
--- a/ap/os/linux/linux-3.4.x/net/core/fastproc/fastnat.c
+++ b/ap/os/linux/linux-3.4.x/net/core/fastproc/fastnat.c
@@ -285,6 +285,10 @@
goto err_out;
}
}
+ if(skb->isvlan && nat_entry_data->hh_flag == 0){
+ rcu_read_unlock();
+ goto err_out;
+ }
#endif
/* Ended by AICoder, pid:40ce82efac7642c141d308ead0cdf7208c94b48b */
dev = nat_entry_data->outdev;
@@ -514,9 +518,8 @@
struct nf_conn *ct_fwd = (struct nf_conn *)skb->nfct_bak;
fast_entry_t *nat_entry_fwd = ct_fwd?((fast_entry_t *)ct_fwd->fast_entry):nat_entry;
fast_entry_data_t *cap_entry_data = &nat_entry_fwd->data[dir];
- if (nat_entry_fwd){
- /*skbÒÑ¾ÈÆ»ØÀ´ÁË£¬°ó¶¨ÐÂÀÏfast£¬¼Ç¼capct*/
- spin_lock_bh(&fastnat_spinlock);
+ spin_lock_bh(&fastnat_spinlock);
+ if (nat_entry_fwd && nat_entry_fwd->fwd_entry == NULL && nat_entry->fwd_entry == NULL){
if(nat_entry_fwd != nat_entry){
if(!__nf_ct_tuple_src_equal(&cap_entry_data->tuplehash.tuple, &nat_entry_data->tuplehash.tuple) &&
__nf_ct_tuple_dst_equal(&cap_entry_data->tuplehash.tuple, &nat_entry_data->tuplehash.tuple)){
@@ -593,8 +596,8 @@
nat_entry_fwd->data[0].outdev = nat_entry_fwd->data[1].indev;
}
}
- spin_unlock_bh(&fastnat_spinlock);
}
+ spin_unlock_bh(&fastnat_spinlock);
}else{
/* Started by AICoder, pid:h335cmc8c7cc4681459c0af3d0a68e0bb604fd47 */
if(nat_entry_data->indev != skb->indev){
diff --git a/ap/project/zx297520v3/prj_vehicle_dc/config/normal/config.linux b/ap/project/zx297520v3/prj_vehicle_dc/config/normal/config.linux
index 5385154..b072530 100755
--- a/ap/project/zx297520v3/prj_vehicle_dc/config/normal/config.linux
+++ b/ap/project/zx297520v3/prj_vehicle_dc/config/normal/config.linux
@@ -774,7 +774,7 @@
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
-CONFIG_BRIDGE_IGMP_SNOOPING=y
+# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
CONFIG_VLAN_8021Q=y
# CONFIG_VLAN_8021Q_GVRP is not set
diff --git a/ap/project/zx297520v3/prj_vehicle_dc_ref/config/normal/config.linux b/ap/project/zx297520v3/prj_vehicle_dc_ref/config/normal/config.linux
index 16efbbb..152255d 100755
--- a/ap/project/zx297520v3/prj_vehicle_dc_ref/config/normal/config.linux
+++ b/ap/project/zx297520v3/prj_vehicle_dc_ref/config/normal/config.linux
@@ -774,7 +774,7 @@
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
-CONFIG_BRIDGE_IGMP_SNOOPING=y
+# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
CONFIG_VLAN_8021Q=y
# CONFIG_VLAN_8021Q_GVRP is not set
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys
index eade5dc..2474478 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys
@@ -443,3 +443,4 @@
DEBUG_INFO_FILE_NUM=2
DEBUG_INFO_FILE_TOTAL_SIZE=1
#debug info end
+nofast_port=21+22+23+25+53+67+68+69+110+115+123+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user
index 7570274..c084e8e 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -153,7 +153,7 @@
natenable=
dosenable=0
need_jilian=1
-nofast_port=21+22+23+25+53+67+68+69+110+115+123+443+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
+nofast_port=21+22+23+25+53+67+68+69+110+115+123+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
nv_save_interval=300
path_conf=/etc_rw
path_ro=/etc_ro
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
index d5b8bbf..a42a25c 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
@@ -449,9 +449,12 @@
T3396_COUNTS=3
ECALL_T2_TIMER=3600
NGECALL_FORTEST=0
-CUSTOMER_FLAG=0
+#LYNQ_HUANG_QING_AT_20250428_ZXW_TASK_1120_CR_20250327578D9BCF_LET_ZXIC_SUPPORT_LYNQ_NG_ECALL_MODIFY_BEGIN
+CUSTOMER_FLAG=1
+#LYNQ_HUANG_QING_AT_20250428_ZXW_TASK_1120_CR_20250327578D9BCF_LET_ZXIC_SUPPORT_LYNQ_NG_ECALL_MODIFY_END
#for volte end
DEBUG_INFO_FILE_PATH=/mnt/userdata
DEBUG_INFO_FILE_NUM=2
DEBUG_INFO_FILE_TOTAL_SIZE=1
#debug info end
+nofast_port=21+22+23+25+53+67+68+69+110+115+123+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_user b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_user
index f7695af..ef54214 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -153,7 +153,7 @@
natenable=
dosenable=0
need_jilian=1
-nofast_port=21+22+23+25+53+67+68+69+110+115+123+443+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
+nofast_port=21+22+23+25+53+67+68+69+110+115+123+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
nv_save_interval=300
path_conf=/etc_rw
path_ro=/etc_ro
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
index 2d45d7d..233faf4 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
@@ -214,11 +214,12 @@
if(ind->registration_valid)
{
- printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
+ printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d, deny_reason is %d\n",
tech_domain[ind->registration.tech_domain],
radio_tech[ind->registration.radio_tech],
ind->registration.roaming,
- ind->registration.registration_state);
+ ind->registration.registration_state,
+ ind->registration.deny_reason);
}
if(ind->registration_details_3gpp_valid)
{
@@ -382,19 +383,21 @@
printf("qser_nw_get_reg_status ret = %d, detail info:\n", ret);
if(t_info.voice_registration_valid)
{
- printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
+ printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d, deny_reason is %d\n",
tech_domain[t_info.voice_registration.tech_domain],
radio_tech[t_info.voice_registration.radio_tech],
t_info.voice_registration.roaming,
- t_info.voice_registration.registration_state);
+ t_info.voice_registration.registration_state,
+ t_info.voice_registration.deny_reason);
}
if(t_info.data_registration_valid)
{
- printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
+ printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d, deny_reason is %d\n",
tech_domain[t_info.data_registration.tech_domain],
radio_tech[t_info.data_registration.radio_tech],
t_info.data_registration.roaming,
- t_info.data_registration.registration_state);
+ t_info.data_registration.registration_state,
+ t_info.data_registration.deny_reason);
}
if(t_info.voice_registration_details_3gpp_valid)
{
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-adc/lynq-adc.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-adc/lynq-adc.cpp
index a465ae3..1286d7d 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-adc/lynq-adc.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-adc/lynq-adc.cpp
@@ -3,6 +3,8 @@
#include <string.h>
#include <sc_bsp.h>
#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
#include "lynq-adc.h"
#include "liblog/lynq_deflog.h"
@@ -14,6 +16,8 @@
#define ADC1_NODES "/sys/kernel/debug/pmu_zx29/adc1"
#define ADC2_NODES "/sys/kernel/debug/pmu_zx29/adc2"
+static int adc_count_initialized = 0;
+
/********************************************************************
* @brief: qser_adc_show, function to read ADC value from specific channel
* @param qadc [IN]: ADC_CHANNEL_E, the ADC channel to read from
@@ -27,6 +31,19 @@
int adc_value;
char cmd_ret[1024]={0};
FILE *fd;
+
+ if (!adc_count_initialized) {
+ int fd_init;
+ if ((fd_init = open("/sys/kernel/debug/pmu_zx29/set_adc_count", O_WRONLY)) != -1) {
+ ssize_t ret = write(fd_init, "1", 1);
+ close(fd_init);
+ adc_count_initialized = 1;
+ LYDBGLOG("ADC count initialized, write returned: %zd bytes\n", ret);
+ } else {
+ LYERRLOG("Failed to initialize ADC count: %s\n", strerror(errno));
+ }
+ }
+
switch(qadc)
{
case QADC_NONE:
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
index 35a2d3c..eab15dc 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -1566,14 +1566,6 @@
return LYNQ_E_REPETITIVE_APN;
}
}
- pthread_mutex_lock(&g_lynq_data_sendto_mutex);
- if(send_request(lynq_client_sockfd,&client)==-1)
- {
- LYERRLOG("send request fail");
- perror("[LYNQ_DATA] send request fail:");
- pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
- return -1;
- }
//find lynq_data_call_id
for(lynq_data_call_id = 0; lynq_data_call_id < LYNQ_APN_CHANNEL_MAX; lynq_data_call_id++)
{
@@ -1585,6 +1577,16 @@
if (lynq_data_call_id == LYNQ_APN_CHANNEL_MAX)
{
LYERRLOG("update apn table fail error id = %d",lynq_data_call_id);
+ return -1;
+ }
+ LYINFLOG("lynq_data_call_id = %d\n", lynq_data_call_id);
+ //ready to send request
+ pthread_mutex_lock(&g_lynq_data_sendto_mutex);
+
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
return -1;
}
@@ -2309,10 +2311,10 @@
LYERRLOG("[lynq_get_data_call_list] handle or datacalllist is NULL");
return LYNQ_E_NULL_ANONALY;
}
- if (*handle<0 && handle>8)
+ if (*handle<0 || *handle>LYNQ_APN_CHANNEL_MAX)
{
LYERRLOG("[lynq_get_data_call_list] handle value error");
- return LYNQ_E_NULL_ANONALY;
+ return 0;
}
LYINFLOG("[lynq_get_data_call_list] incoming handle value: %d",*handle);
memset(&interDataCallList,0,sizeof(interDataCallList));
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-network/lynq_network.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-network/lynq_network.cpp
index f0c0bba..fb231b9 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-network/lynq_network.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-network/lynq_network.cpp
@@ -763,7 +763,7 @@
LYERRLOG("%s data resp[3] %s is NULL",__func__);
}
}
- else if((*regState)==3 || (*regState)==13)
+ else //if((*regState)==3 || (*regState)==13) //LYNQ_HUANG_QING_AT_20250421_ZXW_TASK_1355_CR_202504112CA2ADB1_MODIFY
{
if(resp[reject_index]==NULL)
{
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
index a88e181..ca8f216 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
@@ -118,7 +118,7 @@
int qser_Gnss_injectEphemeris(uint32_t h_gnss);
int qser_Gnss_download_tle();
int qser_Gnss_injectEphemeris_withpath(uint32_t h_gnss, char *path);
-
+int qser_Gnss_setting_statement_type(uint32_t h_gnss, char *statement_type,int state);
#ifdef __cplusplus
}
#endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
index 172ff02..a6118de 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
@@ -318,7 +318,7 @@
//int lynq_gnss_get_ap_data(void);
int lynq_gnss_output_frq(int frequency);
int lynq_gnss_start();
-
+int lynq_gnss_setting_statement_type(uint32 h_gnss, char *statement_type,int state);
#ifdef __cplusplus
}
#endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
index 9e44fb0..97e0497 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
@@ -475,6 +475,23 @@
return 0;
}
+int qser_Gnss_setting_statement_type(uint32_t h_gnss, char *statement_type,int state)
+{
+ int ret;
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
+ ret = lynq_gnss_setting_statement_type(h_gnss,statement_type,state);
+ if(ret < 0)
+ {
+ return -1;
+ }
+
+ return 0;
+}
+
void atsvc_incb_entity(char *input,int length);
int lynq_at_cgps(int at_type,int gnss_state_type);
int lynq_at_cgpsnmea(int at_type,int gnss_state_type);
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
index c238eee..8979e97 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
@@ -341,6 +341,107 @@
}
}
+int uint16_2_byte(uint16 a, void *buff, bool big_endian)
+{
+ uint8* ptr = (uint8*)buff;
+ if(big_endian) {
+ ptr[0] = (uint8)(a >> 8);
+ ptr[1] = (uint8)a;
+ } else {
+ ptr[1] = (uint8)(a >> 8);
+ ptr[0] = (uint8)a;
+ }
+ return sizeof(uint16);
+}
+
+static uint16 fletcher16(const uint8_t* data, int data_len)
+{
+ uint32_t sum1 = 0;
+ uint32_t sum2 = 0;
+ int index;
+
+ for (index = 0; index < data_len; ++index )
+ {
+ sum1 += data[index];
+ sum2 += sum1;
+ }
+
+ return ((0xFF & sum2) << 8) | (0xFF & sum1);
+}
+
+#define HD8122_PACK_HEAD 0xD9F1
+char *nmea_param[]={
+ "GGA",
+ "GLL",
+ "GSA",
+ "GRS",
+ "GSV",
+ "RMC",
+ "VTG",
+ "ZDA",
+ "GST"
+};
+int lynq_gnss_setting_statement_type(uint32 h_gnss, char *statement_type,int state)
+{
+ int i;
+ uint8 data[3];
+ data[0] = 0xF0;
+ for (i = 0;i < sizeof(nmea_param)/sizeof(nmea_param[0]);i++)
+ {
+ if(!strncmp(statement_type,nmea_param[i],3))
+ {
+ data[1] = (uint8)i;
+ break;
+ }
+ }
+ if(i > 8)
+ {
+ if(!strncmp(statement_type,"TXT",3))
+ {
+ data[1] = 0X20;
+ }
+ else if(!strncmp(statement_type,"DTM",3))
+ {
+ data[1] = 0X0A;
+ }
+ else
+ {
+ ALOGE("statement_type error\n");
+ return -1;
+ }
+ }
+ data[2] = state;
+ uint8 buff[1024];
+ memset(buff, 0, sizeof(buff));
+ uint8 *data_ptr = buff;
+ data_ptr += uint16_2_byte(HD8122_PACK_HEAD, data_ptr, false);
+ *data_ptr++ = 0x06;
+ *data_ptr++ = 0x01;
+ data_ptr += uint16_2_byte((uint16)3, data_ptr, false);
+
+ memcpy(data_ptr, data, 3);
+ data_ptr += 3;
+
+ data_ptr += uint16_2_byte(fletcher16(buff + 2, 4 + 3), data_ptr, false);
+ int len = data_ptr - buff;
+ int ret =0;
+ int fd = open(MBTK_GNSS_DEV, O_RDWR | O_NOCTTY | O_NDELAY);
+ if(fd < 0) {
+ ALOGE("open error\n");
+ return -1;
+ }
+ ret = write(fd, buff, len);
+ if(ret < 0)
+ {
+ ALOGE(" cmd send faild");
+ close(fd);
+ return -1;
+ }
+ usleep(1000);
+ close(fd);
+ return 0;
+}
+
static short int from_hex(char a)
{
if (a >= 'A' && a <= 'F')
@@ -1376,7 +1477,6 @@
return 0;
}
-
int lynq_gnss_client_init(uint32 *ph_gnss)
{
int ret;
@@ -2035,6 +2135,9 @@
return 0;
}
+
+
+
#ifdef __cplusplus
}
#endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
index 9ad0b0c..d9cd05a 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
@@ -597,6 +597,300 @@
return state;
}
+int switch_nw_deny_reason_data(int net_reject_reason)
+{
+#if 0
+below is from <SC-VV601-3A ZX297520V3Vƽ̨ATÃüÁîÊÖ²á > ¸½Â¼ C +CEER ·µ»Ø´íÎóÔÒòÁбí
+GPRS/EPS Mobility Management ÀàÐÍ´íÎóÔÒò£º
+¼õÈ¥ 100µÃµ½ net_reject_reason
+ 103 Illegal Ms
+ 106 Illegal Me
+ 107 Gprs Services Not Allowed
+ 108 Gprs and Non-Gprs Services Not Allowed
+ 109 UE identity cannot be derived by the network
+ 110 UE implicitly detached
+ 111 Plmn Not Allowed
+ 112 Location area not allowed
+ 113 Roaming not allowed in this location area
+ 114 GPRS services not allowed in the PLMN
+ 115 No suitable cells in routing area
+ 116 Authentication Reject
+ 117 Authentication Failure
+ 118 IMEI Not Accepted
+ 119 Imsi Paging
+ 120 MT detach, Reattach Required
+ 121 User Deactived
+ 122 Congestion
+ 123 ESM failure
+ 124 No PDP context activated
+ 125 Not Authorized For This Csg
+ 126 Attach Lower Layer Failure Or Release
+ 127 T3410 Time Out
+ 128 Requested service option not authorized in this PLMN
+ 129 Active Default Eps Bear Reject
+ 130 Authentication Mac Failure
+ 131 Authentication Sync Failure
+ 132 Authentication None Eps parameter
+ 133 Reattach not required and no cause
+ 134 Get Ue Information Failure
+ 135 T3310 Time Out
+ 136 Authentication Unacceptable
+ 137 Attach Establish Reject
+ 148 Unspecified GPRS error
+ 149 Normal Fail Continuously Five Times
+ 172 Semantically incorrect message
+ 173 Invalid mandatory information
+ 174 Message type non-existent or not implemented
+ 175 Information element non-existent or not implemented
+ 176 Protocol error, unspecified
+ 177 Message type not compatible with the protocol state
+ 178 Conditional IE error
+ 179 Message not compatible with the protocol state
+ 180 retry upon entry into a new cell
+ 181 UE security capabilities mismatch
+ 182 Security mode rejected, unspecified
+#endif
+
+ int reason = 0;
+ switch (net_reject_reason)
+ {
+ case 3://3 - Illegal MS
+ reason=E_QSER_NW_ILLEGAL_MS_DENY_REASON;/*2*/
+ break;
+ case 6:// 6 - Illegal ME
+ reason=E_QSER_NW_ILLEGAL_ME_DENY_REASON;/*5*/
+ break;
+ case 7://7 == GPRS services not allowed
+ case 8://8 == GPRS services and non-GPRS services not allowed
+ case 14://14 == GPRS services not allowed in this PLMN
+ reason = E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON; /*=16*/
+ break;
+ case 9://9 == MS identity cannot be derived by the network
+ reason = E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON;/*=18*/
+ break;
+ case 15://15 - No Suitable Cells in this Location Area
+ reason = E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON;/*=9*/
+ break;
+ case 16://16 Authentication Reject
+ case 17://17 Authentication Failure
+ case 30://30 Authentication Mac Failure
+ case 31://31 Authentication Sync Failure
+ case 32://32 Authentication None Eps parameter
+ case 36://36 Authentication Unacceptable
+ case 81://UE security capabilities mismatch
+ case 82://Security mode rejected, unspecified
+ reason=E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON;/*14*/
+ break;
+ case 18://18 IMEI Not Accepted
+ reason=E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON;/*4*/
+ break;
+ case 22://22 - Congestion
+ reason=E_QSER_NW_CONGESTION_DENY_REASON;/*13*/
+ break;
+ case 25://25 - Not Authorized for this CSG
+ reason=E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON;/*15*/
+ break;
+ case 21://21 - User Deactived
+ case 28://28 - Requested service option not authorized in this PLMN
+ reason=E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON;/*17*/
+ break;
+ case 72://72 - Semantically incorrect message
+ reason=E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON;/*19*/
+ break;
+ case 73://73 - Invalid mandatory information
+ reason=E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON;/*20*/
+ break;
+ case 74://74 - Message type non-existent or not implemented
+ reason=E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON;/*21*/
+ break;
+ case 75:// 75 - Information element non-existent or not implemented
+ reason=E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON;/*22*/ /**< Message type not compatible with the protocol state. */
+ case 76: //76 Protocol error, unspecified
+ reason=E_QSER_NW_PROTOCOL_ERROR_DENY_REASON;/*25*/
+ break;
+ case 77:// 77 - Message type not compatible with protocol state.
+ reason=E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON;/*22*/ /**< Message type not compatible with the protocol state. */
+ break;
+ case 78://100 - Conditional IE error
+ reason=E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON;/*23*/
+ break;
+ case 79://101 - Message not compatible with protocol state
+ reason=E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON;/*24*/
+ break;
+ }
+ return reason;
+}
+
+int switch_nw_deny_reason_voice(int net_reject_reason)
+{
+#if 0
+ below is from <SC-VV601-3A ZX297520V3Vƽ̨ATÃüÁîÊÖ²á > ¸½Â¼ C +CEER ·µ»Ø´íÎóÔÒòÁбí
+ CS Mobility Management ÀàÐÍ´íÎóÔÒò£º
+
+ 2 IMSI unknown in HLR
+ 3 Illegal MS
+ 4 IMSI unknown in VLR
+ 5 IMEI not accepted
+ 6 Illegal ME
+ 11 PLMN not allowed
+ 12 Location Area not allowed
+ 13 Roaming not allowed in this location area
+ 15 No Suitable Cells In Location Area
+ 16 MSC temporarily not reachable
+ 17 Network Failure
+ 18 Retry InTo New Cell
+ 19 Default Reject Cause
+ 20 MAC failure
+ 21 Synch failure
+ 22 Congestion
+ 23 GSM authentication unacceptable
+ 24 Authentication Reject
+ 25 Not authorized for this CSG
+ 30 Cm Service Abortion
+ 32 Service option not supported
+ 33 Requested service option not subscribed
+ 34 Service option temporarily out of order
+ 38 Call cannot be identified
+ 39 Extended service request procedure, CS service temporarily not
+ available
+ 40 RRC Connection Establish Cell Reselection
+ 41 RRC Connection Establish Failure
+ 42 Random Acess Failure
+ 43 LowLayer Failure
+ 44 GRR Abort Indication
+ 45 Paging Pending
+ 46 RRC Connection Release Preemptive
+ 47 RRC Connection Release Congestion
+ 48 RRC Connection Release Reestablish Reject
+ 49 RRC Connection Release Direct Signal Reestablish
+ 50 RRC Connection Release User Inactive
+ 51 Combined EPS attach or TAU successful for EPS only, CS domain
+ not available
+ 52 MM normal fail or network fail continuously 4 times, need search
+ PLMN
+ 53 MT detach, and the detach type is IMSI detach
+ 95 Semantically incorrect message
+ 96 Invalid mandatory information
+ 97 Message type non-existent or not implemented
+ 98 Message type not compatible with protocol state
+ 99 Information element non-existent or not implemented
+ 100 Conditional IE error
+ 101 Message not compatible with protocol state
+ 111 Protocol error, Unspecified
+ 120 Unspecified Failure
+
+below is E_QSER_NW_ macro definition
+ E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON = 1, /**< IMSI unknown in HLR. */
+ E_QSER_NW_ILLEGAL_MS_DENY_REASON = 2, /**< Illegal MS. */
+ E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON = 3, /**< IMSI unknown in VLR. */
+ E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON = 4, /**< IMEI not accepted. */
+ E_QSER_NW_ILLEGAL_ME_DENY_REASON = 5, /**< Illegal ME. */
+ E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON = 6, /**< PLMN not allowed. */
+ E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON = 7, /**< Location area not allowed. */
+ E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON = 8, /**< Roaming not allowed in this location area. */
+ E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON = 9, /**< No suitable cells in location area. */
+ E_QSER_NW_NETWORK_FAILURE_DENY_REASON = 10, /**< Network failure. */
+ E_QSER_NW_MAC_FAILURE_DENY_REASON = 11, /**< MAC failure. */
+ E_QSER_NW_SYNCH_FAILURE_DENY_REASON = 12, /**< Sync failure. */
+ E_QSER_NW_CONGESTION_DENY_REASON = 13, /**< Congestion. */
+ E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON = 14, /**< GSM authentication unacceptable. */
+ E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON = 15, /**< Not authorized in this CSG. */
+ E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON = 16, /**< Service option not supported. */
+ E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON = 17, /**< Requested service option not subscribed. */
+ E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON = 18, /**< Call cannot be identified. */
+ E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON = 19, /**< Semantically incorrect message. */
+ E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON = 20, /**< Invalid mandatory information. */
+ E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON = 21, /**< Message type non-existent or not implemented. */
+ E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON = 22, /**< Message type not compatible with the protocol state. */
+ E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON = 23, /**< Conditional IE error. */
+ E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON = 24, /**< Message not compatible with the protocol state. */
+ E_QSER_NW_PROTOCOL_ERROR_DENY_REASON = 25, /**< Unspecified protocol error. */
+#endif
+ int reason = 0;
+ switch (net_reject_reason)
+ {
+ case 2://2 - IMSI unknown in HLR
+ reason=E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON;/*1*/
+ break;
+ case 3://3 - Illegal MS
+ reason=E_QSER_NW_ILLEGAL_MS_DENY_REASON;/*2*/
+ break;
+ case 4://4 IMSI unknown in VLR
+ reason=E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON;/*3*/
+ break;
+ case 5://" 5 - IMEI not accepted
+ reason=E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON;/*4*/
+ break;
+ case 6:// 6 - Illegal ME
+ reason=E_QSER_NW_ILLEGAL_ME_DENY_REASON;/*5*/
+ break;
+ case 7://" 7 - Roaming not allowed
+ case 11://11 - PLMN not allowed"
+ reason=E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON;/*6*/
+ break;
+ case 12://12 - Location area not allowed"
+ reason=E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON;/*7*/
+ break;
+ case 13://13 - Roaming not allowed in this Location Area"
+ reason=E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON;/*8*/
+ break;
+ case 8://" 8 - No Suitable Cells in this Location Area
+ case 15://15 - No Suitable Cells in this Location Area"
+ reason=E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON;/*9*/
+ break;
+ case 9://" 9 - Network failure
+ case 17://17 - Network Failure"
+ reason=E_QSER_NW_NETWORK_FAILURE_DENY_REASON;/*10*/
+ break;
+ case 20://20 - MAC Failure
+ reason=E_QSER_NW_MAC_FAILURE_DENY_REASON;/*11*/
+ break;
+ case 21://21 - Sync Failure
+ reason=E_QSER_NW_SYNCH_FAILURE_DENY_REASON;/*12*/
+ break;
+ case 22://22 - Congestion
+ reason=E_QSER_NW_CONGESTION_DENY_REASON;/*13*/
+ break;
+ case 23:// 23 - GSM Authentication unacceptable
+ reason=E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON;/*14*/
+ break;
+ case 25://25 - Not Authorized for this CSG
+ reason=E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON;/*15*/
+ break;
+ case 32://32 - Service option not supported
+ reason=E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON;/*16*/
+ break;
+ case 33://33 - Requested service option not subscribed
+ reason=E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON;/*17*/
+ break;
+ case 38://38 - Call cannot be identified
+ reason=E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON;/*18*/
+ break;
+ case 95://95 - Semantically incorrect message
+ reason=E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON;/*19*/
+ break;
+ case 96://96 - Invalid mandatory information
+ reason=E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON;/*20*/
+ break;
+ case 97://97 - Message type non-existent or not implemented
+ reason=E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON;/*21*/
+ break;
+ case 98:// 98 - Message type not compatible with protocol state.
+ reason=E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON;/*22*/ /**< Message type not compatible with the protocol state. */
+ break;
+ case 100://100 - Conditional IE error
+ reason=E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON;/*23*/
+ break;
+ case 101://101 - Message not compatible with protocol state
+ reason=E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON;/*24*/
+ break;
+ case 111:
+ reason=E_QSER_NW_PROTOCOL_ERROR_DENY_REASON;/*25*/
+ break;
+ }
+ return reason;
+}
+
int qser_romaing_state_qurey(int regState)
{
if (regState == 5)
@@ -699,6 +993,7 @@
pt_info->voice_registration.radio_tech = qser_radio_tech_qurey(netType);
pt_info->voice_registration.roaming = qser_romaing_state_qurey(regState);
pt_info->voice_registration.registration_state = switch_nw_regstate(regState);
+ pt_info->voice_registration.deny_reason = switch_nw_deny_reason_voice(netreject);
if(is_have_serve_cell(pt_info->voice_registration.registration_state))
{
@@ -723,6 +1018,7 @@
pt_info->data_registration.radio_tech = qser_radio_tech_qurey(netType);
pt_info->data_registration.roaming = qser_romaing_state_qurey(regState);
pt_info->data_registration.registration_state = switch_nw_regstate(regState);
+ pt_info->data_registration.deny_reason = switch_nw_deny_reason_data(netreject);
if(is_have_serve_cell(pt_info->data_registration.registration_state))
{
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-adc.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-adc.c
index 830630d..f79c485 100644
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-adc.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-adc.c
@@ -17,6 +17,9 @@
//#include <linux/wakelock.h>
#include <linux/pm_wakeup.h>
+u32 adc_query_count = 3;
+EXPORT_SYMBOL(adc_query_count);
+
#define ZX234290_VBAT_ADC_COMPENDATE_VALUE 50
typedef enum adc_channel
{
@@ -352,7 +355,7 @@
**************************************************************************/
uint get_battery_voltage(void)
{
- int counter = 3;
+ int counter = adc_query_count;
int index=0;
int tmpValue=0,totalValue=0;
uint avgValue;
@@ -381,7 +384,7 @@
**************************************************************************/
uint get_adc1_voltage(void)
{
- int counter = 3;
+ int counter = adc_query_count;
int index=0;
int tmpValue=0,totalValue=0;
uint avgValue;
@@ -411,7 +414,7 @@
//extern struct wake_lock adc_wake_lock;
uint get_adc2_voltage(void)
{
- int counter = 3;
+ int counter = adc_query_count;
int index=0;
int tmpValue=0,totalValue=0;
uint avgValue;
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-core.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-core.c
index 6da76d2..172c551 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-core.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-core.c
@@ -30,6 +30,7 @@
#include <dma_cfg.h>
#include <linux/reboot.h>
+extern u32 adc_query_count;
#define USER_RST_TO_NORMAL 1
@@ -536,6 +537,23 @@
DEFINE_SIMPLE_ATTRIBUTE(fops_adc_ro, debugfs_adc_get, NULL, "%llumV\n");
+static int debugfs_adc_count_set(void *data, u64 val)
+{
+ if (val > 0 && val <= 3) {
+ adc_query_count = (u32)val;
+ return 0;
+ }
+ return -EINVAL;
+}
+
+static int debugfs_adc_count_get(void *data, u64 *val)
+{
+ *val = adc_query_count;
+ return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(fops_adc_count, debugfs_adc_count_get, debugfs_adc_count_set, "%llu\n");
+
static struct dentry *g_pmu_root;
extern u32 int_irq_times;
@@ -579,6 +597,18 @@
dev_err(zx234290->dev, "debugfs_create_dir err=%d\n", IS_ERR(node));
goto err;
}
+ // Add node to set ADC query count
+ node = debugfs_create_file("set_adc_count", S_IRUGO | S_IWUGO, root, NULL, &fops_adc_count);
+ if (!node){
+ dev_err(zx234290->dev, "debugfs_create_dir err=%d\n", IS_ERR(node));
+ goto err;
+ }
+ // Add node to get ADC query count
+ node = debugfs_create_file("get_adc_count", S_IRUGO, root, NULL, &fops_adc_count);
+ if (!node){
+ dev_err(zx234290->dev, "debugfs_create_dir err=%d\n", IS_ERR(node));
+ goto err;
+ }
//print u32
debugfs_create_u32("irq_cnt", S_IRUGO, root, &int_irq_times);
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/net/core/skbuff.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/net/core/skbuff.c
index ccc996d..630f806 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/net/core/skbuff.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/net/core/skbuff.c
@@ -621,9 +621,9 @@
panic("");
}else{
if(skb->capHead){
+ v7_dma_map_area(skb->head, skb->end - skb->head + sizeof(struct skb_shared_info), DMA_FROM_DEVICE);
if(skb->isToap)
return;
- v7_dma_map_area(skb->head, skb->end - skb->head + sizeof(struct skb_shared_info), DMA_FROM_DEVICE);
write_free_apbuf(skb->capHead);
skb->capHead = NULL;
}else{
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/binder/liblog/logd_write.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/binder/liblog/logd_write.c
index 8e86270..8483024 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/binder/liblog/logd_write.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/binder/liblog/logd_write.c
@@ -54,6 +54,10 @@
#include "fake_log_device.h"
#endif
+/*cz.li add on 2024/7/8 for control RLOGD start*/
+int sys_log_levle = 1;
+int print_log_level = 1;
+/*cz.li add on 2024/7/8 for control RLOGD end*/
//??¨¨??¨¤o??¨´¡Á?¨º¡À??
long long int get_time_us()
{
@@ -158,11 +162,11 @@
break;
}
}
-
- if (prio >= ANDROID_LOG_DEBUG && ANDROID_LOG_ERROR >= prio) {
+/*cz.li add on 2024/7/8 for control RLOGD start*/
+ if (prio >= ANDROID_LOG_DEBUG && ANDROID_LOG_ERROR >= prio && prio >= print_log_level) {
put_to_console(mod, fmt, arg);
}
-
+/*cz.li add on 2024/7/8 for control RLOGD end*/
return ret;
}
@@ -440,7 +444,39 @@
return LOG_NAME[log_id];
}
#endif
-int sys_log_levle = 4;
+/*cz.li add on 2025/1/3 for control log_level start*/
+int log_level(char *level_name)
+{
+ char nv_level[10];
+ char buffer[32];
+ char cmd[128];
+ int *level = NULL;
+ sprintf(cmd, "nv show | grep %s",level_name);
+ FILE *output = popen(cmd, "r");
+ while (fgets(buffer, sizeof(buffer), output) != NULL)
+ {
+ char *equal_sign = strchr(buffer, '=');
+ strncpy(nv_level,equal_sign + 1,1);
+ }
+ pclose(output);
+ nv_level[sizeof(nv_level)-1] = '\0';
+ if (strcmp(level_name,"syslog_level") == 0)
+ level = &sys_log_levle;
+ else if (strcmp(level_name,"print_level") == 0)
+ level = &print_log_level;
+ *level = atoi(nv_level);
+ if(*level == SLOG_DEBUG)
+ *level = ANDROID_LOG_DEBUG;
+ else if(*level == SLOG_NORMAL)
+ *level = ANDROID_LOG_INFO;
+ else if(*level == SLOG_ERR)
+ *level = ANDROID_LOG_ERROR;
+ else if(*level== SLOG_OFF)
+ *level = ANDROID_LOG_SILENT;
+ else
+ *level = ANDROID_LOG_INFO;
+}
+/*cz.li add on 2025/1/3 for control log_level end*/
static int __write_to_log_init(log_id_t log_id, struct iovec *vec, size_t nr)
{
#ifdef HAVE_PTHREADS
@@ -467,36 +503,8 @@
pthread_mutex_unlock(&log_init_lock);
#endif
/*cz.li add on 2024/7/8 for control RLOGD start*/
- char nv_syslog_level[10];
- char buffer[32];
- FILE *output = popen("nv show | grep syslog_level", "r");
- while (fgets(buffer, sizeof(buffer), output) != NULL)
- {
- char *equal_sign = strchr(buffer, '=');
- strncpy(nv_syslog_level,equal_sign + 1,1);
- }
- pclose(output);
- sys_log_levle = atoi(nv_syslog_level);
- if(sys_log_levle == SLOG_DEBUG)
- {
- sys_log_levle = ANDROID_LOG_DEBUG;
- }
- else if(sys_log_levle == SLOG_NORMAL)
- {
- sys_log_levle = ANDROID_LOG_INFO;
- }
- else if(sys_log_levle == SLOG_ERR)
- {
- sys_log_levle = ANDROID_LOG_ERROR;
- }
- else if(sys_log_levle == SLOG_OFF)
- {
- sys_log_levle = ANDROID_LOG_SILENT;
- }
- else
- {
- sys_log_levle = ANDROID_LOG_INFO;
- }
+ log_level("syslog_level");
+ log_level("print_level");
/*cz.li add on 2024/7/8 for control RLOGD end*/
return write_to_log(log_id, vec, nr);
}
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_cc.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_cc.c
index a81b511..430fed6 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_cc.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_cc.c
@@ -1022,7 +1022,11 @@
if (err < 0) {
assert(0);
}
-
+
+ //q.huang add ng-ecall code 20250407 start
+ s_ecallMsdData.call_id = id;
+ //q.huang add ng-ecall code 20250407 end
+
if (6 == stat) {
cc_voice_stop_ring_back();
}
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
index b7a262d..ecbd0ec 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
@@ -1293,7 +1293,20 @@
5 - 5GS Session Management
*/
if (3 == type[count]) {
- switch (info[count]) {
+ //LYNQ_HUANG_QING_AT_20250421_ZXW_TASK_1355_CR_202504112CA2ADB1_MODIFY_BEGIN
+ if(info[count]==124)
+ {
+ info[count] = 40;
+ asprintf(&responseStr[4], "%d", info[count]);
+ }
+ else if(info[count]>100)
+ {
+ info[count] -= 100;
+ asprintf(&responseStr[4], "%d", info[count]);
+ }
+ }
+ /*
+ switch (info[count]) {
case 107:
case 108:
case 109:
@@ -1308,10 +1321,12 @@
break;
default:
break;
- }
- } else if (4 == type[count] && 16 == info[count]) {
+ }
+ }
+ else if (4 == type[count] && 16 == info[count]) {
asprintf(&responseStr[4], "%d", info[count]);
- }
+ }*/
+ //LYNQ_HUANG_QING_AT_20250421_ZXW_TASK_1355_CR_202504112CA2ADB1_MODIFY_END
}
}
diff --git a/update_version.sh b/update_version.sh
index 91522ca..2861b1d 100755
--- a/update_version.sh
+++ b/update_version.sh
@@ -1,8 +1,8 @@
#!/bin/bash
#export LYNQ_VERSION="T106_lynq_version_ap_build_sh"
-LYNQ_AP_VERSION="T106EL-M44-A-PL-P56U11.AP.19.01"
-LYNQ_CAP_INSIDE_VERSION="CAP.19.01"
-LYNQ_CAP_VERSION="CAP.19.01"
+LYNQ_AP_VERSION="T106-MXX-PLXXXX-P56U11.AP.19.04"
+LYNQ_CAP_INSIDE_VERSION="CAP.19.04"
+LYNQ_CAP_VERSION="CAP.19.04"
COMMIT_ID="$(git rev-parse HEAD)"
LYNQ_SW_INSIDE_VERSION="LYNQ_CONFIG_VERSION = \"${LYNQ_AP_VERSION}_${LYNQ_CAP_INSIDE_VERSION}\""