Merge "[Feature][T106]version update to T106CN-ZS03.V2.01.01.02P50U04.AP.08.01_CAP.08.01"
diff --git a/ap/app/zte_comm/at_ctl/src/atconfig/ps_normal.c b/ap/app/zte_comm/at_ctl/src/atconfig/ps_normal.c
index a814119..dec4edf 100755
--- a/ap/app/zte_comm/at_ctl/src/atconfig/ps_normal.c
+++ b/ap/app/zte_comm/at_ctl/src/atconfig/ps_normal.c
@@ -117,6 +117,14 @@
     void *p[5] = {&timeinfo.time_zone, &timeinfo.sav_time, temp1, temp2, timeinfo.univer_time};

     int time_zone = 0;

 

+    //>>>sj.zhang add @2023-08-10 for systime NITZ sync enable/disenable.

+    if(0 != system("uci get lynq_uci.lynq_sync_time.lynq_modem_sync_time_enable | grep -E \'^1$\'"))

+    {

+        at_print(AT_ERR,"zmmi_auto_act: nitz disenabled. \n");

+        return AT_END;

+    }

+    //>>>sj.zhang add @2023-08-10 end.

+

 #ifndef USE_CAP_SUPPORT

     sc_cfg_get("sntp_time_set_mode", mode, sizeof(mode));

     if (strcmp(mode, "manual") == 0)

diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/squashfs_dm-verity.sh b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/squashfs_dm-verity.sh
index f7ff653..9e504f7 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/squashfs_dm-verity.sh
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/squashfs_dm-verity.sh
@@ -4,18 +4,17 @@
 WORK_DIR=$2
 OUT_FILE=$3
 PRIV_KEY=$4
-SignImage=$5
 
 VERITY_DIR=$WORK_DIR/verity
 
-rm -rf $VERITY_DIR  $OUT_FILE  $OUT_FILE.pad
+rm -rf $VERITY_DIR/raw_table $VERITY_DIR/hash_tree $VERITY_DIR/sign
 mkdir -p  $VERITY_DIR
 
 # 1.pad
 let size="$(stat -c%s $IN_FILE)" pad="128*1024" offset="0"  pad="(pad - ((size + offset) % pad)) % pad"  newsize='size + pad'
 echo $size $newsize
 dd  if=$IN_FILE   of=$OUT_FILE  bs=$newsize count=1  conv=sync
-#cp -v $OUT_FILE   $OUT_FILE.pad
+cp -v $OUT_FILE   $OUT_FILE.pad
 
 # 2. gen raw_table and hash_tree
 veritysetup format $OUT_FILE $VERITY_DIR/hash_tree > $VERITY_DIR/raw_table
@@ -25,16 +24,14 @@
 fi
 
 # 3. gen signature of raw_table
-#openssl dgst -sha256 -binary -sign $PRIV_KEY $VERITY_DIR/raw_table > $VERITY_DIR/sign
-$SignImage -i  $VERITY_DIR/raw_table -o $VERITY_DIR/raw_table.signed  -k $PRIV_KEY
+openssl dgst -sha256 -binary -sign $PRIV_KEY $VERITY_DIR/raw_table > $VERITY_DIR/sign
 if [ $? -ne 0 ]; then
 	echo "generate squashfs dm-verity sign error!"
 	exit 1
 fi
-dd if=$VERITY_DIR/raw_table.signed  of=$VERITY_DIR/sign bs=640 count=1 status=none
 
 # 4. padding sign, raw_table and hash_tree to input file
-$WORK_DIR/zxic_generate_squashfs_verity $OUT_FILE $VERITY_DIR/sign $VERITY_DIR/raw_table $VERITY_DIR/hash_tree
+$WORK_DIR/generate_squashfs_verity $OUT_FILE $VERITY_DIR/sign $VERITY_DIR/raw_table $VERITY_DIR/hash_tree
 if [ $? -ne 0 ]; then
 	echo "generate squashfs dm-verity error!"
 	exit 1
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 dabfb0e..8ef97ca 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
@@ -20,6 +20,7 @@
 int (*qser_nw_get_operator_name_p)(nw_client_handle_type    h_nw, QSER_NW_OPERATOR_NAME_INFO_T    *pt_info );

 int (*qser_nw_get_reg_status_p)(nw_client_handle_type  h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info);

 int (*qser_nw_add_rx_msg_handler_p)(nw_client_handle_type  h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr,void* contextPtr);

+int (*qser_nw_get_signal_strength_p)(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info);

 

 int getFunc()

 {

@@ -37,6 +38,7 @@
     qser_nw_set_config_p = (int (*)(nw_client_handle_type  h_nw, QSER_NW_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_set_config");

     qser_nw_get_operator_name_p = (int (*)(nw_client_handle_type  h_nw, QSER_NW_OPERATOR_NAME_INFO_T  *pt_info ))dlsym(handle_network,"qser_nw_get_operator_name");

     qser_nw_get_reg_status_p = (int (*)(nw_client_handle_type  h_nw, QSER_NW_REG_STATUS_INFO_T  *pt_info))dlsym(handle_network,"qser_nw_get_reg_status");

+    qser_nw_get_signal_strength_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_signal_strength");

     qser_nw_add_rx_msg_handler_p = (int (*)(nw_client_handle_type  h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr,void* contextPtr))dlsym(handle_network,"qser_nw_add_rx_msg_handler");

         

     if(qser_nw_client_deinit_p==NULL || qser_nw_client_init_p==NULL || qser_nw_set_config_p ==NULL ||

@@ -74,8 +76,9 @@
     {1,     "qser_nw_set_config"},      

     {2,     "qser_nw_get_operator_name"},

     {3,     "qser_nw_get_reg_status"},        

-    {4,     "qser_nw_client_deinit"},    

-    {5,     "qser_nw_add_rx_msg_handler"},

+    {4,     "qser_nw_add_rx_msg_handler"},     

+    {5,     "qser_nw_get_signal_strength"},

+    {6,     "qser_nw_client_deinit"},  

     {-1,    "quit"}

 };

 

@@ -311,131 +314,172 @@
         }

         switch(cmdIdx)

         {

-        case 0://"qser_nw_client_init"

-        {

-            

-            ret = qser_nw_client_init_p(&h_nw);

-            printf("qser_nw_client_init ret = %d\n", ret);

-            break;

-        }

-        case 1://"qser_nw_set_config"

-        {

-            QSER_NW_CONFIG_INFO_T     t_info = {0};

-            

-            int mask = 0;

-            printf("please input decimal format number,  whose hex format is (TDSCDMA | LTE | EVDO | CDMA | WCDMA | GSM) : \n");

-            scanf("%d", &mask);

-            t_info.preferred_nw_mode = mask;

-            

-            ret = qser_nw_set_config_p(h_nw, &t_info);

-            printf("qser_nw_set_config ret = %d\n", ret);

-            break;

-        }            

-        case 2://"qser_nw_get_operator_name"

-        {

-            QSER_NW_OPERATOR_NAME_INFO_T  t_info;

-            ret = qser_nw_get_operator_name_p(h_nw, &t_info);

-            printf("qser_nw_get_operator_name ret = %d, long_eons=%s, short_eons=%s, mcc=%s, mnc=%s\n", ret,

-                    t_info.long_eons, t_info.short_eons, t_info.mcc, t_info.mnc);

-            break;

-        }       

-        case 3://"qser_nw_get_reg_status"

-        {

-            QSER_NW_REG_STATUS_INFO_T         t_info;

-

-            memset(&t_info, 0, sizeof(QSER_NW_REG_STATUS_INFO_T));

-            ret = qser_nw_get_reg_status_p(h_nw, &t_info);

-            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", 

-                    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);

-            }

-            if(t_info.data_registration_valid)

-            {

-                printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%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);

-            }

-            if(t_info.voice_registration_details_3gpp_valid)

-            {

-                printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n", 

-                    tech_domain[t_info.voice_registration_details_3gpp.tech_domain], 

-                    radio_tech[t_info.voice_registration_details_3gpp.radio_tech],

-                    t_info.voice_registration_details_3gpp.mcc,

-                    t_info.voice_registration_details_3gpp.mnc,

-                    t_info.voice_registration_details_3gpp.roaming,

-                    t_info.voice_registration_details_3gpp.forbidden,                    

-                    t_info.voice_registration_details_3gpp.cid,

-                    t_info.voice_registration_details_3gpp.lac,

-                    t_info.voice_registration_details_3gpp.psc,

-                    t_info.voice_registration_details_3gpp.tac);

-            }

-            if(t_info.data_registration_details_3gpp_valid)

-            {

-                printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n", 

-                    tech_domain[t_info.data_registration_details_3gpp.tech_domain], 

-                    radio_tech[t_info.data_registration_details_3gpp.radio_tech],

-                    t_info.data_registration_details_3gpp.mcc,

-                    t_info.data_registration_details_3gpp.mnc,

-                    t_info.data_registration_details_3gpp.roaming,

-                    t_info.data_registration_details_3gpp.forbidden,                    

-                    t_info.data_registration_details_3gpp.cid,

-                    t_info.data_registration_details_3gpp.lac,

-                    t_info.data_registration_details_3gpp.psc,

-                    t_info.data_registration_details_3gpp.tac);

-            }

-            

-            if(t_info.voice_registration_details_3gpp2_valid)

-            {

-                printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n", 

-                    tech_domain[t_info.voice_registration_details_3gpp2.tech_domain], 

-                    radio_tech[t_info.voice_registration_details_3gpp2.radio_tech],

-                    t_info.voice_registration_details_3gpp2.mcc,

-                    t_info.voice_registration_details_3gpp2.mnc,

-                    t_info.voice_registration_details_3gpp2.roaming,

-                    t_info.voice_registration_details_3gpp2.forbidden,                    

-                    t_info.voice_registration_details_3gpp2.sid,

-                    t_info.voice_registration_details_3gpp2.nid,

-                    t_info.voice_registration_details_3gpp2.bsid);

-            }

-            

-            if(t_info.data_registration_details_3gpp2_valid)

-            {

-                printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n", 

-                    tech_domain[t_info.data_registration_details_3gpp2.tech_domain], 

-                    radio_tech[t_info.data_registration_details_3gpp2.radio_tech],

-                    t_info.data_registration_details_3gpp2.mcc,

-                    t_info.data_registration_details_3gpp2.mnc,

-                    t_info.data_registration_details_3gpp2.roaming,

-                    t_info.data_registration_details_3gpp2.forbidden,                    

-                    t_info.data_registration_details_3gpp2.sid,

-                    t_info.data_registration_details_3gpp2.nid,

-                    t_info.data_registration_details_3gpp2.bsid);

-            }

+             case 0://"qser_nw_client_init"

+             {

+                 

+                 ret = qser_nw_client_init_p(&h_nw);

+                 printf("qser_nw_client_init ret = %d\n", ret);

+                 break;

+             }

+             case 1://"qser_nw_set_config"

+             {

+                 QSER_NW_CONFIG_INFO_T     t_info = {0};

+                 

+                 int mask = 0;

+                 printf("please input decimal format number,  whose hex format is (TDSCDMA | LTE | EVDO | CDMA | WCDMA | GSM) : \n");

+                 scanf("%d", &mask);

+                 t_info.preferred_nw_mode = mask;

+                 

+                 ret = qser_nw_set_config_p(h_nw, &t_info);

+                 printf("qser_nw_set_config ret = %d\n", ret);

+                 break;

+             }            

+             case 2://"qser_nw_get_operator_name"

+             {

+                 QSER_NW_OPERATOR_NAME_INFO_T  t_info;

+                 ret = qser_nw_get_operator_name_p(h_nw, &t_info);

+                 printf("qser_nw_get_operator_name ret = %d, long_eons=%s, short_eons=%s, mcc=%s, mnc=%s\n", ret,

+                         t_info.long_eons, t_info.short_eons, t_info.mcc, t_info.mnc);

+                 break;

+             }       

+             case 3://"qser_nw_get_reg_status"

+             {

+                 QSER_NW_REG_STATUS_INFO_T         t_info;

+     

+                 memset(&t_info, 0, sizeof(QSER_NW_REG_STATUS_INFO_T));

+                 ret = qser_nw_get_reg_status_p(h_nw, &t_info);

+                 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", 

+                         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);

+                 }

+                 if(t_info.data_registration_valid)

+                 {

+                     printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%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);

+                 }

+                 if(t_info.voice_registration_details_3gpp_valid)

+                 {

+                     printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n", 

+                         tech_domain[t_info.voice_registration_details_3gpp.tech_domain], 

+                         radio_tech[t_info.voice_registration_details_3gpp.radio_tech],

+                         t_info.voice_registration_details_3gpp.mcc,

+                         t_info.voice_registration_details_3gpp.mnc,

+                         t_info.voice_registration_details_3gpp.roaming,

+                         t_info.voice_registration_details_3gpp.forbidden,                    

+                         t_info.voice_registration_details_3gpp.cid,

+                         t_info.voice_registration_details_3gpp.lac,

+                         t_info.voice_registration_details_3gpp.psc,

+                         t_info.voice_registration_details_3gpp.tac);

+                 }

+                 if(t_info.data_registration_details_3gpp_valid)

+                 {

+                     printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n", 

+                         tech_domain[t_info.data_registration_details_3gpp.tech_domain], 

+                         radio_tech[t_info.data_registration_details_3gpp.radio_tech],

+                         t_info.data_registration_details_3gpp.mcc,

+                         t_info.data_registration_details_3gpp.mnc,

+                         t_info.data_registration_details_3gpp.roaming,

+                         t_info.data_registration_details_3gpp.forbidden,                    

+                         t_info.data_registration_details_3gpp.cid,

+                         t_info.data_registration_details_3gpp.lac,

+                         t_info.data_registration_details_3gpp.psc,

+                         t_info.data_registration_details_3gpp.tac);

+                 }

+                 

+                 if(t_info.voice_registration_details_3gpp2_valid)

+                 {

+                     printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n", 

+                         tech_domain[t_info.voice_registration_details_3gpp2.tech_domain], 

+                         radio_tech[t_info.voice_registration_details_3gpp2.radio_tech],

+                         t_info.voice_registration_details_3gpp2.mcc,

+                         t_info.voice_registration_details_3gpp2.mnc,

+                         t_info.voice_registration_details_3gpp2.roaming,

+                         t_info.voice_registration_details_3gpp2.forbidden,                    

+                         t_info.voice_registration_details_3gpp2.sid,

+                         t_info.voice_registration_details_3gpp2.nid,

+                         t_info.voice_registration_details_3gpp2.bsid);

+                 }

+                 

+                 if(t_info.data_registration_details_3gpp2_valid)

+                 {

+                     printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n", 

+                         tech_domain[t_info.data_registration_details_3gpp2.tech_domain], 

+                         radio_tech[t_info.data_registration_details_3gpp2.radio_tech],

+                         t_info.data_registration_details_3gpp2.mcc,

+                         t_info.data_registration_details_3gpp2.mnc,

+                         t_info.data_registration_details_3gpp2.roaming,

+                         t_info.data_registration_details_3gpp2.forbidden,                    

+                         t_info.data_registration_details_3gpp2.sid,

+                         t_info.data_registration_details_3gpp2.nid,

+                         t_info.data_registration_details_3gpp2.bsid);

+                 }

+                             

+                 break;

+             }                 

+             case 6://"qser_nw_client_deinit"

+             {

+                 ret = qser_nw_client_deinit_p(h_nw);

+                 printf("qser_nw_client_deinit ret = %d\n", ret);

+                 break;

+             }       

+             case 4 :

+             {

+                ret = qser_nw_add_rx_msg_handler_p(h_nw, nw_event_ind_handler, NULL);  

+                printf("qser_nw_add_rx_msg_handler, ret=%d\n", ret);

+                break;

+             }

+              case 5 :

+             {

+                QSER_NW_SIGNAL_STRENGTH_INFO_T t_info;

+                ret = qser_nw_get_signal_strength_p(h_nw, &t_info);  

+                printf("qser_nw_get_signal_strength, ret=%d\n", ret);

+                if(ret==0)

+                {                       

+                    printf("qser_solicited_signal_strength gsm_sig_info_valid = %d\n"

+                               "                               gsm_sig_info.rssi = %d\n"

+                               "                               wcdma     _sig_info_valid = %d\n" 

+                               "                               wcdma_sig_info.rssi = %d\n"

+                               "                               wcdma_sig_info.ecio = %d\n"

+                               "                               tdscdma_sig_info_valid = %d\n"

+                               "                               lte_sig_info_valid = %d\n"

+                               "                               lte_sig_info.rssi = %d\n"

+                               "                               lte_sig_info.rsrp = %d\n"

+                               "                               lte_sig_info.rsrq = %d\n"

+                               "                               lte_sig_info.snr = %d\n"

+                               "                               cdma_sig_info_valid = %d\n"

+                               "                               hdr_sig_info_valid = %d\n"

+                               "                               nr_sig_info_valid = %d\n"

+                               "                               nr_sig_info.ssRsrp = %d\n"

+                               "                               nr_sig_info.ssRsrq = %d\n"

+                               "                               nr_sig_info.ssSinr = %d\n"

+                               "                               nr_sig_info.csiRsrp = %d\n"

+                               "                               nr_sig_info.csiRsrq = %d\n"

+                               "                               nr_sig_info.csiSinr = %d\n",

+                              t_info.gsm_sig_info_valid, t_info.gsm_sig_info.rssi,

+                              t_info.wcdma_sig_info_valid, t_info.wcdma_sig_info.rssi,  t_info.wcdma_sig_info.ecio,

+                              t_info.tdscdma_sig_info_valid,

+                              t_info.lte_sig_info_valid, t_info.lte_sig_info.rssi, t_info.lte_sig_info.rsrp, t_info.lte_sig_info.rsrq, t_info.lte_sig_info.snr,

+                              t_info.cdma_sig_info_valid, 

+                              t_info.hdr_sig_info_valid, 

+                              t_info.nr_sig_info_valid, t_info.nr_sig_info.ssRsrp, t_info.nr_sig_info.ssRsrq, t_info.nr_sig_info.ssSinr,

+                              t_info.nr_sig_info.csiRsrp, t_info.nr_sig_info.csiRsrq, t_info.nr_sig_info.csiSinr);

                         

-            break;

-        }                 

-        case 4://"qser_nw_client_deinit"

-        {

-            ret = qser_nw_client_deinit_p(h_nw);

-            printf("qser_nw_client_deinit ret = %d\n", ret);

-            break;

-        }       

-        case 5 :

-        {

-           ret = qser_nw_add_rx_msg_handler_p(h_nw, nw_event_ind_handler, NULL);  

-           printf("qser_nw_add_rx_msg_handler, ret=%d\n", ret);

-           break;

-        }

-        

-        default:

-            show_group_help(&t_nw_test);

+                }

+                break;

+             }        

+            

+             default:

+             {

+                 show_group_help(&t_nw_test);

+             }

         }

     }

     return 0;

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
index 2a5ff52..04b2ad0 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
@@ -344,7 +344,14 @@
     {
         return E_INPUT_ERROR;
     }
-    ret = delete_lock(fd);
+    ret = qser_wakelock_unlock(fd);
+    if(ret)
+    {
+        LYINFLOG("unlock is fail\n");
+        return ret;
+    }
+
+    ret = delete_lock(fd);    
     return ret;
 }
 
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 d1114fc..b5b2f6c 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
@@ -1008,8 +1008,9 @@
     if (ret < 0)
     {
         *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
+        return *err;
     }
-    return RESULT_OK;
+    return ret;
 }
 int qser_data_call_info_get(char profile_idx,qser_data_call_ip_family_e ip_family,qser_data_call_info_s *info,qser_data_call_error_e *err)
 {