Merge "[Bugfix][CODEC] Disable soft ramp, optimize playback 44.1k noise issue"
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 9439af1..6cbb1ea 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
@@ -465,6 +465,9 @@
 wifi_11n_cap_5g=1
 WirelessMode_5g=6
 Channel_5g=0
+# zw.wang [wifi] If the 5G hotspot is enabled, the country code cannot be obtained by calling qser_wifi_ap_channel_get on 20240829 start
+CountryCode_5g=CN
+# zw.wang [wifi] If the 5G hotspot is enabled, the country code cannot be obtained by calling qser_wifi_ap_channel_get on 20240829 end
 MAX_Access_num_5g=32
 m_MAX_Access_num_5g=0
 ACL_mode_5g=0
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ecall/eCall.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ecall/eCall.cpp
index dd0b7ff..fa901f9 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ecall/eCall.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ecall/eCall.cpp
@@ -424,8 +424,7 @@
     }
     else if(sig.sival_int == redial_sig_value) {
         redial_tag = REDIAL_EXPIRES;
-        RequestInfo* pRI = creatRILInfoAndInit(RIL_REQUEST_ECALL_RESET_IVS, UDP,RIL_SOCKET_ID(fast_ecall_socket_id));
-        resetIVS(0, NULL, RIL_SOCKET_ID(fast_ecall_socket_id), pRI);
+        resetEcallIVSandAudio(UDP, RIL_SOCKET_ID(fast_ecall_socket_id));      
         fast_argc = 0;
         fast_argv.clear();
      
@@ -632,7 +631,7 @@
         stop_ecall_timer(sRedialTimer, redial_sig_value);
 		
         redial_tag = REDIAL_SUCCESS;
-        resetEcallIVSandAudio(RSPD, soc_id);
+        resetEcallIVSandAudio(RSPD, RIL_SOCKET_ID(fast_ecall_socket_id));
         saveEcallRecord(p_cur->ind);
 
         act_fecall_socid = soc_id;
@@ -724,8 +723,7 @@
             stop_ecall_timer(sT6,sT6_sig_value);
             stop_ecall_timer(sT7,sT7_sig_value);
             ecall_test_sub_recover();
-            RequestInfo* pRI = creatRILInfoAndInit(RIL_REQUEST_ECALL_RESET_IVS, UDP, soc_id);
-            resetIVS(0, NULL, soc_id, pRI);
+            resetEcallIVSandAudio(UDP, soc_id);                 
             redialFastEcall(soc_id);
         }
         else {   /* redial_tag == REDIAL_SUCCESS || redial_tag == REDIAL_EXPIRES */
@@ -1012,7 +1010,7 @@
 //RIL_REQUEST_ECALL_RESET_IVS
 int resetIVS(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI) {
   android::Parcel p;
-
+/*
   if (getSpeechStatus() == SPEECH_OFF) {
     if (get_audio_path() == 0) {
       setSpeechAndStatus(1);
@@ -1020,7 +1018,7 @@
       setSpeechAndStatus(2);
     }
   }
-
+*/
   //paramter none
   pRI->pCI->dispatchFunction(p, pRI);
   return 0;
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-autosuspend/lynq-autosuspend.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-autosuspend/lynq-autosuspend.cpp
index 09160b7..5dc3fe5 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-autosuspend/lynq-autosuspend.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-autosuspend/lynq-autosuspend.cpp
@@ -88,7 +88,7 @@
 }
 static int Close(int fd)
 {
-    if (Close(fd) == -1)
+    if (close(fd) == -1)
     {
         LYINFLOG("Close error\n");
         return -1;
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call_ecall.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call_ecall.cpp
index d25675a..23a3b45 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call_ecall.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call_ecall.cpp
@@ -52,7 +52,7 @@
 static LYNQ_ECall_Indication s_IncomingEcallIndication;

 int s_IncomingEcallId=INVALID_ID;

 LYNQ_ECall_Variant s_EcallVariant=LYNQ_ECALL_VAR_NONE;

-int s_ecall_whether_preempt=0;

+int s_ecall_whether_preempt=0x02;

 

 void sendSignalIncomingECallEvent()

 {

@@ -180,7 +180,7 @@
     {

         return true;

     }

-    else if(old_variant==LYNQ_ECALL_DAILING_STATE_NONE)

+    else if(old_variant==LYNQ_ECALL_TYPE_TEST)

     {

         return true;

     }        

@@ -235,6 +235,10 @@
             ret=lynq_clear_current_call();

             LYERRLOG("ecall clear conflict call, relase current normal call ret is %d",ret);                         

         }

+    else 

+    {

+            LYINFLOG("ecall clear conflict call, exits conflict normal call, let lower platform release them");

+    }

         return RESULT_OK;          

     }

 

@@ -449,7 +453,7 @@
 

     if(handle==NULL || ((*handle) >= LYNQ_CALL_MAX) || msd_length > MSD_MAX_LENGTH || msd_length <= 0 || msd_data ==NULL)

     {

-        LYERRLOG("lynq_set_msd handle is NULL or *handle %d is greater or equeal to %d or msd_length %d is greater than %d or msd_data %s is NULL, parameter error",*handle,LYNQ_CALL_MAX,msd_length,MSD_MAX_LENGTH, msd_data);

+        LYERRLOG("lynq_set_msd handle is NULL or handle %d is null or msd_length %d is greater than %d or msd_data %s is NULL, parameter error", handle, msd_length,MSD_MAX_LENGTH, msd_data);

         return LYNQ_E_PARAMETER_ANONALY;

     }    

 

@@ -479,7 +483,7 @@
     }

     if(enable<0)

     {

-       if(enable >-200)

+       if(enable >-300)

        {

            goto set_ivs_end;

 //         lynq_set_common_request(RIL_REQUEST_ECALL_SET_IVS,1,"%d",enable);

@@ -490,7 +494,7 @@
        } 

        else

        {

-           s_ecall_whether_preempt= ((-200-enable) & 0x11);           

+           s_ecall_whether_preempt= ((-300-enable) & 0x11);           

        }

        return RESULT_OK;   

     }

@@ -602,12 +606,15 @@
            {

                LYINFLOG("ecall is dialing, recv suc indication");

                s_module_is_ecall_dial = LYNQ_ECALL_DAILING_STATE_NONE;

-               if(ecallId >0 && find_call_id_with_call_id(ecallId)==INVALID_ID)

+               if(ecallId >0)

                {

-                     LYINFLOG("add ecall in loacl list");

-                     s_ecallId = ecallId;

-                     addAddr("ecall",s_ecallId);               

-               } 

+                   if(find_call_id_with_call_id(ecallId)==INVALID_ID)

+                   {

+                        LYINFLOG("add ecall in loacl list");                             	 

+                        addAddr("ecall",ecallId);               

+                   }	

+                   s_ecallId = ecallId; //API-871 ecall id maybe exists in local list as noraml call to be replaced

+               }     	       	   

                send_signal_to_wait_call_state=true;                             

            }        

            else if(ecallId >0 && (find_call_id_with_call_id(ecallId)==INVALID_ID) &&  (s_EcallVariant != LYNQ_ECALL_CALLBACK))

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
index 657d8c0..5209dd7 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
@@ -290,7 +290,7 @@
 
 int qser_voice_set_msd(int callid, const unsigned char *msd_data, int msd_length)
 {           
-    return lynq_set_msd(callid, msd_data, msd_length);
+    return lynq_set_msd(&callid, msd_data, msd_length);
 }
 
 void *ecall_thread_recv(void *context)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sim/lynq_sim.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-sim/lynq_sim.cpp
index d3a0891..1bfcb38 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sim/lynq_sim.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sim/lynq_sim.cpp
@@ -475,6 +475,7 @@
     *qser_state = p_info->applications[0].app_state;
 
     free(p_info);
+    delete p;
     return res;
 }
 #else
@@ -495,6 +496,7 @@
         return res;
     }
     p->readInt32(card_status);
+    delete p;
     return res;
 }
 #endif
@@ -516,6 +518,7 @@
     char * test = lynqStrdupReadString(*p);
     memcpy(buf, test, strlen(test));
     free(test);
+    delete p;
     return res;
 }
 
@@ -539,6 +542,7 @@
     char * test = lynqStrdupReadString(*p);
     memcpy(buf, test, strlen(test));
     free(test);
+    delete p;
     return res;
 }
 
@@ -555,6 +559,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 
@@ -574,6 +579,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 #else
@@ -592,6 +598,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 #endif
@@ -610,6 +617,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 
@@ -638,6 +646,7 @@
         }
         free(test);
     }
+    delete p;
     return res;
 }
 
@@ -655,6 +664,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 
@@ -680,6 +690,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 
@@ -703,6 +714,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 
@@ -784,6 +796,8 @@
     }
     char * test = lynqStrdupReadString(*p);
     memcpy(buf, test, strlen(test));
+    free(test);
+    delete p;
     return res;
 }
 
@@ -811,6 +825,7 @@
         num = parse_param(test, argv, buf);
         return num;
     }
+    delete p;
     return res;
 }
 #endif
@@ -835,6 +850,7 @@
     char * test = lynqStrdupReadString(*p);
     memcpy(buf, test, strlen(test));
     free(test);
+    delete p;
     return res;
 }
 
@@ -885,6 +901,7 @@
             free(resp[i]);
         }
     }
+    delete p;
     return i==2? 0:-1;
 
 }
@@ -943,6 +960,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 
@@ -972,6 +990,7 @@
     {
         RLOGD("function %s execute success\n", __FUNCTION__);
     }
+    delete p;
     return res;
 }
 #endif
@@ -997,6 +1016,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
+    delete p;
     return res;
 }
 
@@ -1086,6 +1106,7 @@
     char * test = lynqStrdupReadString(*p);
     memcpy(simResponse, test, strlen(test));
     free(test);
+    delete p;
     return res;
 }
 
@@ -1125,7 +1146,7 @@
         RLOGD("function %s execute error", __FUNCTION__);
         return res;
     }
-
+    delete p;
     return res;
 
 }
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
index c6ae463..65c7e3c 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
@@ -916,6 +916,174 @@
 
 /* yu.dong@20240627 [T106BUG-615]CODEC 8311 using voice_demo to set codec volume has no effect end */
 
+//l.yang modify for bug id T106BUG-337 2023/11/9 start
+#elif defined _USE_CODEC_TI3104
+
+static struct audio_para_conf init_default_para[] = {  //¿¿¿¿¿¿¿
+
+};
+
+static struct audio_para_conf  common_out_para_audio[] = {  //¿¿¿¿¿¿
+    //{"DAC Soft Mute Control", {"0"}},
+};
+
+
+static struct audio_para_conf  common_in_para_audio[] = {  //¿¿¿¿¿¿
+	//{"Mic Gain Control", {"0"}},
+};
+
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //¿¿¿Hp¿¿¿¿
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+};
+
+static struct audio_para_conf  spk_outpath_para_audio[] = { //¿¿¿Spk¿¿¿¿
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+};
+
+static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //¿¿¿Mic1lp_Mic1lm¿¿¿¿
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+};
+
+static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//¿¿¿Mic1rp¿¿¿¿
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+};
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¿¿¿Hp¿¿¿¿Mic1lp_Mic1lm¿¿¿¿
+	//in
+	//#0x2d b6 pga mute
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+
+	//out
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+
+	//voice
+	#ifndef USE_CAP_SUPPORT
+	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
+	#endif
+};
+
+static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //¿¿¿Hp¿¿¿¿ Mic1rp¿¿¿¿
+	//in
+	//#0x2d b6 pga mute
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+
+	//out
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+
+	//voice
+	#ifndef USE_CAP_SUPPORT
+	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
+	#endif
+};
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¿¿¿Spk¿¿¿¿Mic1lp_Mic1lm¿¿¿¿
+	//in
+	//#0x2d b6 pga mute
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+
+	//out
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+	//voice
+
+	#ifndef USE_CAP_SUPPORT
+	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+	#endif
+};
+
+static struct audio_para_conf output_dac_vol = {
+   {"PCM Playback Volume", {"110","110"}},
+};
+
+static struct audio_para_conf input_adc_vol = {
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+};
+
+static struct audio_para_conf dac_mute = {
+	"Line Playback Switch", {"0","0"}
+};
+
+static struct audio_para_conf adc_mute = {
+    "MicBias VG", {"0"}
+};
+
+static struct audio_para_conf spk_path_onoff[] = {
+	{"Mono Mixer PCM Playback Switch", {"0"}},
+};
+
+static struct audio_para_conf rcv_path_onoff[] = {
+	{"Mono Mixer PCM Playback Switch", {"0"}},
+};
+
+static struct audio_para_conf earp_path_onoff[] = {
+	{"Speaker Mixer PCM Playback Switch", {"0"}},
+};
+
+static int output_vol_conversion(int vol)
+{
+	return 120;
+}
+
+static int input_vol_conversion(int vol)
+{
+	return 100;
+}
+//l.yang modify for bug id T106BUG-337 2023/11/9 end
+
 #elif defined _USE_CODEC_ES8374
 
 
@@ -1976,7 +2144,7 @@
 }
 
 
-#if (defined _USE_CODEC_TI3100)||(defined _USE_CODEC_AK4940)||(defined _USE_CODEC_NAU8810)||(defined _USE_CODEC_ES8311)
+#if (defined _USE_CODEC_TI3100)||(defined _USE_CODEC_AK4940)||(defined _USE_CODEC_NAU8810)||(defined _USE_CODEC_ES8311)||(defined _USE_CODEC_TI3104)
 /*
 int mix_set_input_vol(struct mixer *mixer, int volume)
 {
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/wlan_proxy/wlan_proxy.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/wlan_proxy/wlan_proxy.c
index 7d16fde..498e319 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/wlan_proxy/wlan_proxy.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/wlan_proxy/wlan_proxy.c
@@ -964,8 +964,10 @@
 	sc_cfg_get("MAX_Access_num_5g", s_max_sta_num, sizeof(s_max_sta_num));
 	p_param->max_sta_num = atoi(s_max_sta_num);
 
-	sc_cfg_get("CountryCode_5g", p_param->countrycode, sizeof(p_param->countrycode));
-	
+	// zw.wang [wifi] If the 5G hotspot is enabled, the country code cannot be obtained by calling qser_wifi_ap_channel_get on 20240830 start
+	sc_cfg_get("CountryCode", p_param->countrycode, sizeof(p_param->countrycode));
+	// zw.wang [wifi] If the 5G hotspot is enabled, the country code cannot be obtained by calling qser_wifi_ap_channel_get on 20240830 start
+
 	sc_cfg_get("ACL_mode_5g", s_acl_rule, sizeof(s_acl_rule));
 	p_param->acl_rule = atoi(s_acl_rule);
 	if (p_param->acl_rule == 1) {
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/libsctel/wifi/sc_wifi.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/libsctel/wifi/sc_wifi.c
index e27c426..5de753a 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/libsctel/wifi/sc_wifi.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/libsctel/wifi/sc_wifi.c
@@ -612,6 +612,9 @@
 	}

 

 	sc_ipc_terminate_loop();

+	//zw.wang If the customer switches the WIFI repeatedly, the WiFi will be stuck, and the AT can not be used on 20240821 on start

+	scwifi_ctx.have_init = 0;

+	//zw.wang If the customer switches the WIFI repeatedly, the WiFi will be stuck, and the AT can not be used on 20240821 on end

 	SCLOGI("wifi uninit suc!\n");

 	return 0;

 }

@@ -832,13 +835,14 @@
 		SCLOGE("sc_wifi_ap_ssid_set ssid too long:%s\n", ssid);

 		return SC_ERR_BADPARAM;

 	}

-	

+#if 0 //[wifi] The hotspot whose ssid is Chinese or special characters cannot be connected on 20240830

 	for (i = 0; i < strlen(ssid); i++) {

 		if (strchr("`$&*\\[];:\'\"<>,",ssid[i]) || !isprint(ssid[i])) {

 			SCLOGE("sc_wifi_ap_ssid_set invalid ssid:%s\n", ssid);

 			return SC_ERR_BADPARAM;

 		}

 	}

+#endif

 	req_data.idx = idx;

 	snprintf(req_data.ssid, sizeof(req_data.ssid), "%s", ssid);

 

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 34d4d1b..b8c31ce 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
@@ -139,6 +139,7 @@
 		break;

 

 	case 6:

+	case 8://add by hq for bug 107 at 20240822

 		sprintf(state, "%d", RADIO_TECH_HSPA);

 		break;

 	/*LTE*/

@@ -460,8 +461,8 @@
 	char* pZeminfo;

 	T_zEM_EmInfo_Ind* pEmInfo_Ind = NULL;

 

-	char smcc[16] = {0};

-	char smnc[16] = {0};

+	char smcc[4] = {0};//modify by hq for bug 107 at 20240811

+	char smnc[4] = {0};//modify by hq for bug 107 at 20240811

 

 	pZeminfo = alloca(strlen(at_paras) / 2);

 	hexStr2ByteArr(at_paras, pZeminfo);

@@ -484,10 +485,11 @@
 		ci[0].registered = 1;

 		ci[0].timeStamp = curTime;

 

-		sprintf(smcc, "%d%d%d", pNasInfo->tPlmnId.bMCC1, pNasInfo->tPlmnId.bMCC2, pNasInfo->tPlmnId.bMCC3);

+		

+		snprintf(smcc, 4, "%x%x%x", pNasInfo->tPlmnId.bMCC1, pNasInfo->tPlmnId.bMCC2, pNasInfo->tPlmnId.bMCC3); //modify by hq for bug 107 at 20240811

 		smcc[3] = '\0';

-		sprintf(smnc, "%d%d", pNasInfo->tPlmnId.bMNC1, pNasInfo->tPlmnId.bMNC2);

-		smnc[2] = '\0';

+		snprintf(smnc, 3, "%x%x", pNasInfo->tPlmnId.bMNC1, pNasInfo->tPlmnId.bMNC2); //modify by hq for bug 107 at 20240811

+		smnc[2] = '\0';		

 		plte->cellIdentityLte.mcc = atoi(smcc);

 		plte->cellIdentityLte.mnc = atoi(smnc);

 		plte->cellIdentityLte.ci = tScellInfo->dwCellId; //Ð¡ÇøID

@@ -518,6 +520,10 @@
 		plte->signalStrengthLte.rssnr = getRssnr();

 		plte->signalStrengthLte.cqi = 0x7FFFFFFF;

 		plte->signalStrengthLte.timingAdvance = 0x7FFFFFFF;

+		RLOGD("parseCellInfo lte mcc:%d, mnc:%d, ci:%d, pci:%d, tac:%d, earfcn:%d, signalStrength:%d, rsrp:%d, rsrq:%d, rssnr:%d", 

+            plte->cellIdentityLte.mcc, plte->cellIdentityLte.mnc, plte->cellIdentityLte.ci,plte->cellIdentityLte.pci, plte->cellIdentityLte.tac, plte->cellIdentityLte.earfcn, 

+            plte->signalStrengthLte.signalStrength, plte->signalStrengthLte.rsrp, plte->signalStrengthLte.rsrq,plte->signalStrengthLte.rssnr); //add by hq for bug 107 at 20240811

+			  

 	} else if (pEmInfo_Ind->bRatType == 4) {

 		RIL_CellInfoGsm     *gsm = &ci[0].CellInfo.gsm;

 		T_zEm_Gsm_EmInfo_Ind   *tGsmEmInfo = &pEmInfo_Ind->uEmInfo.tGsmEmInfo;

@@ -529,9 +535,10 @@
 		ci[0].registered = 1;

 		ci[0].timeStamp = curTime;

 

-		snprintf(smcc, 3, "%d%d%d", tNasInfo->tPlmn.bMCC1, tNasInfo->tPlmn.bMCC2, tNasInfo->tPlmn.bMCC3);

+		

+		snprintf(smcc, 4, "%x%x%x", tNasInfo->tPlmn.bMCC1, tNasInfo->tPlmn.bMCC2, tNasInfo->tPlmn.bMCC3);//modify by hq for bug 107 at 20240822

 		smcc[3] = '\0';

-		snprintf(smnc, 2, "%d%d", tNasInfo->tPlmn.bMNC1, tNasInfo->tPlmn.bMNC2);

+		snprintf(smnc, 3, "%x%x", tNasInfo->tPlmn.bMNC1, tNasInfo->tPlmn.bMNC2);//modify by hq for bug 107 at 20240822

 		smnc[2] = '\0';

 		gsm->cellIdentityGsm.mcc = atoi(smcc);

 		gsm->cellIdentityGsm.mnc = atoi(smnc);

@@ -549,6 +556,9 @@
 		}

 		gsm->signalStrengthGsm.bitErrorRate = 99;

 		gsm->signalStrengthGsm.timingAdvance = 0x7FFFFFFF;

+		RLOGD("parseCellInfo gsm mcc:%d, mnc:%d, lac:%d, cid:%d, signalStrength:%d", 

+               gsm->cellIdentityGsm.mcc, gsm->cellIdentityGsm.mnc, gsm->cellIdentityGsm.lac,gsm->cellIdentityGsm.cid, 

+               gsm->signalStrengthGsm.signalStrength);//add by hq for bug 107 at 20240822

 	} else if (pEmInfo_Ind->bRatType == 2) {

 		RIL_CellInfoWcdma     *pwcdma = &ci[0].CellInfo.wcdma;

 		T_zEm_W_EmInfo_Ind   *twcdmaEmInfo = &pEmInfo_Ind->uEmInfo.tWEmInfo;

@@ -562,9 +572,9 @@
 		//RLOGD("parseCellInfo wcdma bMCC1:%d, bMCC2:%d, bMCC3:%d", pNasInfo->tPlmn.bMCC1, pNasInfo->tPlmn.bMCC2, pNasInfo->tPlmn.bMCC3);

 		//RLOGD("parseCellInfo wcdma bMNC1:%d, bMNC2:%d", pNasInfo->tPlmn.bMNC1, pNasInfo->tPlmn.bMNC2);

 

-		snprintf(smcc, 4, "%d%d%d", pNasInfo->tPlmn.bMCC1, pNasInfo->tPlmn.bMCC2, pNasInfo->tPlmn.bMCC3);

+		snprintf(smcc, 4, "%x%x%x", pNasInfo->tPlmn.bMCC1, pNasInfo->tPlmn.bMCC2, pNasInfo->tPlmn.bMCC3);	//modify by hq for bug 107 at 20240822

 		smcc[3] = '\0';

-		snprintf(smnc, 3, "%d%d", pNasInfo->tPlmn.bMNC1, pNasInfo->tPlmn.bMNC2);

+		snprintf(smnc, 3, "%x%x", pNasInfo->tPlmn.bMNC1, pNasInfo->tPlmn.bMNC2);	//modify by hq for bug 107 at 20240822

 		smnc[2] = '\0';

 

 		//RLOGD("parseCellInfo wcdma smcc:%s, smnc:%s", smcc, smnc);

@@ -604,7 +614,9 @@
 			pwcdma->signalStrengthWcdma.bitErrorRate = twcdmaEmInfo->uWcellMeasInfo.tNotDchInfo.tFddSCellReselInfo.tScellInfo.bEcNo;

 		}

 

-		//RLOGD("parseCellInfo wcdma psc: %d, signalStrength:%d, bitErrorRate:%d", pwcdma->cellIdentityWcdma.psc, pwcdma->signalStrengthWcdma.signalStrength, pwcdma->signalStrengthWcdma.bitErrorRate);

+		RLOGD("parseCellInfo wcdma mcc:%d, mnc:%d, lac:%d, cid:%d, psc: %d, signalStrength:%d, bitErrorRate:%d", 

+		       pwcdma->cellIdentityWcdma.mcc, pwcdma->cellIdentityWcdma.mnc, pwcdma->cellIdentityWcdma.lac, pwcdma->cellIdentityWcdma.cid, pwcdma->cellIdentityWcdma.psc, 

+		       pwcdma->signalStrengthWcdma.signalStrength, pwcdma->signalStrengthWcdma.bitErrorRate);//add by hq for bug 107 at 20240822

 	} else if (pEmInfo_Ind->bRatType == 1) {

 		ci[0].cellInfoType = RIL_CELL_INFO_TYPE_TD_SCDMA;

 		ci[0].registered = 1;

diff --git a/update_version.sh b/update_version.sh
index 66b844d..15ae96f 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="T106-V2.01.01.02P56U06.AP.15.12"
-LYNQ_CAP_INSIDE_VERSION="CAP.15.12"
-LYNQ_CAP_VERSION="CAP.15.12"
+LYNQ_AP_VERSION="T106-V2.01.01.02P56U06.AP.15.13"
+LYNQ_CAP_INSIDE_VERSION="CAP.15.13"
+LYNQ_CAP_VERSION="CAP.15.13"
 COMMIT_ID="$(git rev-parse HEAD)"
 
 LYNQ_SW_INSIDE_VERSION="LYNQ_CONFIG_VERSION = \"${LYNQ_AP_VERSION}_${LYNQ_CAP_INSIDE_VERSION}\""