Merge "    [Bugfix][T106BUG-278]fix sms send format 3 error"
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
index 85278a4..b6c04c8 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
+++ b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
@@ -292,7 +292,8 @@
 	dropbear \
 	e2fsprogs \
 	iptables \
-	dnsmasq \
+	curl \
+	dnsmasq \	
 	dhcp6 \
 	radvd \
 	iproute2 \
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-sms-demo/files/lynq-qser-sms-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-sms-demo/files/lynq-qser-sms-demo.cpp
index 6707bc2..ba29e2d 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-sms-demo/files/lynq-qser-sms-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-sms-demo/files/lynq-qser-sms-demo.cpp
@@ -125,6 +125,7 @@
     }

     sleep(1);

     QSER_sms_service_center_cfg_t set_sca_cfg;

+    memset(set_sca_cfg.service_center_addr, 0, sizeof(set_sca_cfg.service_center_addr));

     strncpy(set_sca_cfg.service_center_addr, "+8613800230500", 14);//smsc ÊǸù¾Ý²»Í¬ÔËÓªÉÌ£¬²»Í¬¿¨À´ÅäÖõÄ

     qser_sms_setsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg))dlsym(dlHandle_sms,"qser_sms_setsmscenteraddress");

     if(NULL != qser_sms_setsmscenteraddress)

diff --git a/cap/zx297520v3/sources/meta-zxic/recipes-core/dropbear/dropbear.inc b/cap/zx297520v3/sources/meta-zxic/recipes-core/dropbear/dropbear.inc
index e70e030..76d89cc 100755
--- a/cap/zx297520v3/sources/meta-zxic/recipes-core/dropbear/dropbear.inc
+++ b/cap/zx297520v3/sources/meta-zxic/recipes-core/dropbear/dropbear.inc
@@ -14,8 +14,10 @@
 
 DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
 
+#l.yang modify for feature  id ZXW-174 2023/10/28 start 
 SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \
            file://0001-urandom-xauth-changes-to-options.h.patch \
+           file://0100-zxic-modify-DEFAULT_PATH.patch \
            file://init \
            file://dropbearkey.service \
            file://dropbear@.service \
@@ -23,6 +25,7 @@
            file://dropbear.default \
            ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
            ${@bb.utils.contains('PACKAGECONFIG', 'disable-weak-ciphers', 'file://dropbear-disable-weak-ciphers.patch', '', d)} "
+#l.yang modify for feature  id ZXW-174 2023/10/28 end
 
 PAM_SRC_URI = "file://0005-dropbear-enable-pam.patch \
                file://0006-dropbear-configuration-file.patch \
diff --git a/cap/zx297520v3/sources/meta-zxic/recipes-core/dropbear/dropbear/0100-zxic-modify-DEFAULT_PATH.patch b/cap/zx297520v3/sources/meta-zxic/recipes-core/dropbear/dropbear/0100-zxic-modify-DEFAULT_PATH.patch
new file mode 100755
index 0000000..a1f45a2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic/recipes-core/dropbear/dropbear/0100-zxic-modify-DEFAULT_PATH.patch
@@ -0,0 +1,25 @@
+From 49bfddc165f9e7ec7fe0d8189e7ed430b5284315 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?=E5=91=A8=E5=9B=BD=E5=9D=A1=200318000136?=
+ <zhou.guopo@sanechips.com.cn>
+Date: Thu, 26 Oct 2023 16:04:55 +0800
+Subject: [PATCH] modify DEFAULT_PATH
+
+---
+ default_options.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/default_options.h b/default_options.h
+index 7ff1394..6831c6d 100644
+--- a/default_options.h
++++ b/default_options.h
+@@ -309,6 +309,6 @@ be overridden at runtime with -I. 0 disables idle timeouts */
+ #define DEFAULT_IDLE_TIMEOUT 0
+ 
+ /* The default path. This will often get replaced by the shell */
+-#define DEFAULT_PATH "/usr/bin:/bin"
++#define DEFAULT_PATH "/sbin:/usr/sbin:/usr/bin:/bin"
+ 
+ #endif /* DROPBEAR_DEFAULT_OPTIONS_H_ */
+-- 
+2.17.1
+
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/data/data.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/data/data.cpp
index fbeaefe..71bc7f1 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/data/data.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/data/data.cpp
@@ -999,7 +999,7 @@
     writeStringToParcel(p,password);
     writeStringToParcel(p,authtype);
     writeStringToParcel(p,pdp_type);//protocol == (ZXW)pdp_type
-    if(strcmp(apn, "default") == 0)
+    if(strcmp(apntype, "iot_default") == 0 || strcmp(apntype, "default") == 0)
     {
         writeStringToParcel(p, normal_pdp);//((const char **)data)[7] set "2",use normal_pdp datacall
         RLOGD("setupDataCallargc:It is normal pdp data call");
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_common.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_common.cpp
index 8989350..b476b01 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_common.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_common.cpp
@@ -40,6 +40,7 @@
     {-1, "", "", "", -1, -1, -1, ""}, \
     {-1, "", "", "", -1, -1, -1, ""}, \
     {-1, "", "", "", -1, -1, -1, ""}, \
+    {-1, "", "", "", -1, -1, -1, ""}, \
     {-1, "", "", "", -1, -1, -1, ""},
 };
 #endif
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_common.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_common.h
index ff3dd2b..6d207d3 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_common.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_common.h
@@ -40,7 +40,7 @@
 #define LYNQ_APNTPYE_LEN_MAX 50
 #define LYNQ_IFNAME_LEN_MAX 10
 #define LYNQ_ADDRESS_LEN_MAX 100
-#define LYNQ_APN_CHANNEL_MAX 7//max is 7
+#define LYNQ_APN_CHANNEL_MAX 8//max is 8
 #define LYNQ_AT_LEN_MAX 20
 #define LYNQ_EVENT_WAIT_TIME_MAX 25 //m
 
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
index 76f99b3..9cbb684 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -4142,7 +4142,29 @@
         errorOffset = p.dataPosition();
 
         p.writeInt32 (e);
-
+        #ifdef MOBILETEK_TARGET_PLATFORM_T106
+        //xf.li@20231102 add for t106 data start
+        if(response == NULL && pRI->pCI->requestNumber == RIL_REQUEST_SETUP_DATA_CALL)
+        {
+            for(int j = 0; j < LYNQ_APN_CHANNEL_MAX; j++)
+            {
+                if(lynq_apn_cid_table[j].used == 1 && lynq_apn_cid_table[j].dialing == 1)
+                {
+                    //delete
+                    bzero(lynq_apn_cid_table[j].apn,LYNQ_APN_LEN_MAX);
+                    bzero(lynq_apn_cid_table[j].apntype,LYNQ_APNTPYE_LEN_MAX);
+                    bzero(lynq_apn_cid_table[j].ifaceName,LYNQ_IFNAME_LEN_MAX);
+                    bzero(lynq_apn_cid_table[j].address,LYNQ_ADDRESS_LEN_MAX);
+                    lynq_apn_cid_table[j].cid = -1;
+                    lynq_apn_cid_table[j].used = -1;
+                    lynq_apn_cid_table[j].status = -1;
+                    lynq_apn_cid_table[j].dialing = -1;
+                    break;
+                }
+            }
+        }
+        //xf.li@20231102 add for t106 data start
+        #endif
         if (response != NULL) {
             // there is a response payload, no matter success or not.
             ret = pRI->pCI->responseFunction(p, response, responselen);
@@ -5579,6 +5601,7 @@
         {        
             char* tmp[2] = {"RIL_REQUEST_RADIO_POWER", "1"};
             setRadioPower(2,tmp, (RIL_SOCKET_ID) (id), info);
+            break;
         }
         default:
             RLOGE("don't support  %d in init", id);
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 49363ad..e7bda42 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -964,7 +964,7 @@
     //xf.li@20230610 add for T106 data start
     #ifdef MOBILETEK_TARGET_PLATFORM_T106
     LYINFLOG("[%s][%d] call lynq_setup_data_call_sp",__FUNCTION__,__LINE__);
-    error = lynq_setup_data_call_sp_t106(handle,"default","iot_default",NULL,NULL,NULL,NULL,NULL);
+    error = lynq_setup_data_call_sp_t106(handle,"default","default",NULL,NULL,NULL,NULL,NULL);
     return error;
     #else
     //xf.li@20230610 add for T106 data end
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
index dc996f4..1f49fe6 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
@@ -628,10 +628,10 @@
     apn->profile_idx = (unsigned char)atoi(xmlGetProp(modify_node, "profile_idx"));
     apn->pdp_type = (qser_apn_pdp_type_e)atoi(xmlGetProp(modify_node, "pdp_type"));
     apn->auth_proto = (qser_apn_auth_proto_e)atoi(xmlGetProp(modify_node, "auth_proto"));
-    strcpy(apn->apn_name,(char *)xmlGetProp(modify_node, "apn_name"));
-    strcpy(apn->username,(char *)xmlGetProp(modify_node, "username"));
-    strcpy(apn->password,(char *)xmlGetProp(modify_node, "password"));
-    strcpy(apn->apn_type,(char *)xmlGetProp(modify_node, "apn_type"));
+    strncpy(apn->apn_name,(char *)xmlGetProp(modify_node, "apn_name"), QSER_APN_NAME_SIZE);
+    strncpy(apn->username,(char *)xmlGetProp(modify_node, "username"), QSER_APN_USERNAME_SIZE);
+    strncpy(apn->password,(char *)xmlGetProp(modify_node, "password"), QSER_APN_PASSWORD_SIZE);
+    strncpy(apn->apn_type,(char *)xmlGetProp(modify_node, "apn_type"), QSER_APN_NAME_SIZE);
     xmlSaveFormatFileEnc(data_xml_path, pdoc, "UTF-8", 1);
     xmlFreeDoc(pdoc);
     return RESULT_OK;
@@ -679,10 +679,10 @@
         apn_list->apn[node_num].profile_idx = (unsigned char)atoi(temp);
         apn_list->apn[node_num].pdp_type = (qser_apn_pdp_type_e)atoi(xmlGetProp(modify_node, "pdp_type"));
         apn_list->apn[node_num].auth_proto = (qser_apn_auth_proto_e)atoi(xmlGetProp(modify_node, "auth_proto"));
-        strcpy(apn_list->apn[node_num].apn_name,(char *)xmlGetProp(modify_node, "apn_name"));
-        strcpy(apn_list->apn[node_num].username,(char *)xmlGetProp(modify_node, "username"));
-        strcpy(apn_list->apn[node_num].password,(char *)xmlGetProp(modify_node, "password"));
-        strcpy(apn_list->apn[node_num].apn_type,(char *)xmlGetProp(modify_node, "apn_type"));
+        strncpy(apn_list->apn[node_num].apn_name,(char *)xmlGetProp(modify_node, "apn_name"), QSER_APN_NAME_SIZE);
+        strncpy(apn_list->apn[node_num].username,(char *)xmlGetProp(modify_node, "username"), QSER_APN_USERNAME_SIZE);
+        strncpy(apn_list->apn[node_num].password,(char *)xmlGetProp(modify_node, "password"), QSER_APN_PASSWORD_SIZE);
+        strncpy(apn_list->apn[node_num].apn_type,(char *)xmlGetProp(modify_node, "apn_type"), QSER_APN_NAME_SIZE);
         node_num ++;
         modify_node = modify_node->next;
     }
@@ -1082,6 +1082,7 @@
         LYERRLOG("apn_xml_modify error");
         return ret;
     }
+#ifndef MOBILETEK_TARGET_PLATFORM_T106
     int apn_id = 0;
     char tmp_id[12];
     char *outinfo = NULL;
@@ -1098,7 +1099,8 @@
     LYINFLOG("[output]:%s",outinfo);
     free(outinfo);
     outinfo = NULL;
-    return RESULT_OK;
+#endif
+    return ret;
 }
 
 int qser_apn_get(unsigned char profile_idx, qser_apn_info_s *apn)
@@ -1132,6 +1134,7 @@
         LYERRLOG("apn_xml_add error");
         return ret;
     }
+#ifndef MOBILETEK_TARGET_PLATFORM_T106
     int apn_id = 0;
     char tmp_id[12];
     char *outinfo = NULL;
@@ -1147,7 +1150,8 @@
     LYINFLOG("[output]:%s",outinfo);
     free(outinfo);
     outinfo = NULL;
-    return RESULT_OK;
+#endif
+    return ret;
 }
 
 int qser_apn_del(unsigned char profile_idx)
@@ -1164,6 +1168,7 @@
         LYERRLOG("apn_xml_delete error");
         return ret;
     }
+#ifndef MOBILETEK_TARGET_PLATFORM_T106
     int apn_id = 0;
     char tmp_id[12];
     char *outinfo = NULL;
@@ -1176,6 +1181,7 @@
     LYINFLOG("[output]:%s",outinfo);
     free(outinfo);
     outinfo = NULL;
+#endif
     return ret;
 }
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq_qser_data_apn.xml b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq_qser_data_apn.xml
old mode 100644
new mode 100755
index ddc89a9..c9c8304
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq_qser_data_apn.xml
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq_qser_data_apn.xml
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <lynq_qser_data_apn>
-  <apn profile_idx="0" pdp_type="3" auth_proto="0" apn_name="default" username="NULL" password="NULL" apn_type="iot_default"/></lynq_qser_data_apn>
+  <apn profile_idx="0" pdp_type="3" auth_proto="0" apn_name="default" username="NULL" password="NULL" apn_type="default"/></lynq_qser_data_apn>
diff --git a/cap/zx297520v3/src/lynq/packages/apps/Mobiletek_Tester_RDIT/sim.h b/cap/zx297520v3/src/lynq/packages/apps/Mobiletek_Tester_RDIT/sim.h
index ce6a254..3788742 100755
--- a/cap/zx297520v3/src/lynq/packages/apps/Mobiletek_Tester_RDIT/sim.h
+++ b/cap/zx297520v3/src/lynq/packages/apps/Mobiletek_Tester_RDIT/sim.h
@@ -18,6 +18,8 @@
 int deinit_sim(int argc, char *argv[], int sp_test);
 int get_version(int argc, char *argv[], int sp_test);
 int reset_modem(int argc, char *argv[], int sp_test);
+int get_msisdn(int argc, char *argv[], int sp_test);
+//int reset_simcard(int argc, char *argv[], int sp_test);
 
 //QSER SIM
 int qser_init_sim(int argc, char *argv[], int sp_test);