[Bugfix][T800][task-view-324] add
wcdma_signalstrength lte_signalstrength in signalStrength_t

    Only Configure: No
    Affected branch: unknown
    Affected module: network
    Is it affected on both ZXIC and MTK: MTK
    Self-test: yes
    Doc Update: no

Change-Id: I82d6bc06a73292e0831d3aaa152a85ea2b098068
diff --git a/LYNQ_PUBLIC/IC_src/mtk/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/network/RpNwController.cpp b/LYNQ_PUBLIC/IC_src/mtk/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/network/RpNwController.cpp
index c4fddf2..4c37289 100755
--- a/LYNQ_PUBLIC/IC_src/mtk/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/network/RpNwController.cpp
+++ b/LYNQ_PUBLIC/IC_src/mtk/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/network/RpNwController.cpp
@@ -348,6 +348,12 @@
 {
     RIL_SignalStrength_v14 p_cur;
     memset(&p_cur, 0, sizeof(p_cur));
+    /*hq add for API-1299 20240325 begin*/
+     p_cur.WCDMA_SignalStrength.signalStrength = -1;
+     p_cur.LTE_SignalStrength.signalStrength = -1;
+     p_cur.GW_SignalStrength.signalStrength = -1;    
+     /*hq add for API-1299 20240325 end*/
+    
     mipc_nw_signal_type_const_enum type = mipc_nw_signal_ind_get_signal_type(result_ptr,mipc_nw_signal_type_const_NONE);
 
     RFX_LOG_D(RFX_LOG_TAG,"mipc_signal_strength_ind_to_parcel type =%d\n", type);
@@ -483,6 +489,12 @@
 {
     RIL_SignalStrength_v14 p_cur;
     memset(&p_cur, 0, sizeof(p_cur));
+    /*hq add for API-1299 20240325 begin*/
+    p_cur.WCDMA_SignalStrength.signalStrength = -1;
+    p_cur.LTE_SignalStrength.signalStrength = -1;
+    p_cur.GW_SignalStrength.signalStrength = -1;    
+    /*hq add for API-1299 20240325 end*/
+    
     mipc_nw_signal_type_const_enum type = mipc_nw_set_signal_cnf_get_signal_type(result_ptr,mipc_nw_signal_type_const_NONE);
 
     RFX_LOG_D(RFX_LOG_TAG,"mipc_signal_strength_cnf_to_parcel type =%d\n", type);
diff --git a/LYNQ_PUBLIC/common_src/framework/lynq-ril-service/src/ril.cpp b/LYNQ_PUBLIC/common_src/framework/lynq-ril-service/src/ril.cpp
index bf24c67..90a842a 100755
--- a/LYNQ_PUBLIC/common_src/framework/lynq-ril-service/src/ril.cpp
+++ b/LYNQ_PUBLIC/common_src/framework/lynq-ril-service/src/ril.cpp
@@ -2624,7 +2624,7 @@
                 str[i] = (char)(c + n%90);  //encode
             }
             else
-            {  //After encoding, the space beyond the end reaches ‘z’, and the cycle starts from the beginning.
+            {  //After encoding, the space beyond the end reaches 'z', and the cycle starts from the beginning.
                 str[i] = (char)(c + n%90 - 90);//encode
             }
         }
@@ -2654,7 +2654,7 @@
             }
             else
             {
-                //After decoding, there are over spaces until ‘z’, and the lowercase letters are processed into printable information by looping
+                //After decoding, there are over spaces until ''z', and the lowercase letters are processed into printable information by looping
                 str[i] = (char)(c - n%90 + 90); //decode
             }
         }
@@ -2998,12 +2998,19 @@
         p.writeInt32(p_cur->WCDMA_SignalStrength.rscp);
         p.writeInt32(p_cur->WCDMA_SignalStrength.ecno);
 #ifdef TELEMATIC_5G_SUPPORT
-        p.writeInt32(p_cur->NR_SignalStrength.ssRsrp);
-        p.writeInt32(p_cur->NR_SignalStrength.ssRsrq);
-        p.writeInt32(p_cur->NR_SignalStrength.ssSinr);
-        p.writeInt32(p_cur->NR_SignalStrength.csiRsrp);
-        p.writeInt32(p_cur->NR_SignalStrength.csiRsrq);
-        p.writeInt32(p_cur->NR_SignalStrength.csiSinr);
+        if(responselen >= sizeof (RIL_SignalStrength_v14))
+        {
+            p.writeInt32(p_cur->NR_SignalStrength.ssRsrp);
+            p.writeInt32(p_cur->NR_SignalStrength.ssRsrq);
+            p.writeInt32(p_cur->NR_SignalStrength.ssSinr);
+            p.writeInt32(p_cur->NR_SignalStrength.csiRsrp);
+            p.writeInt32(p_cur->NR_SignalStrength.csiRsrq);
+            p.writeInt32(p_cur->NR_SignalStrength.csiSinr);
+        }
+        else
+        {
+            memset(&(p_cur->NR_SignalStrength), 0, sizeof(p_cur->NR_SignalStrength));
+        }
 #endif
         startResponse;
 
diff --git a/LYNQ_PUBLIC/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h b/LYNQ_PUBLIC/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
index 00c5669..ced745b 100755
--- a/LYNQ_PUBLIC/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
+++ b/LYNQ_PUBLIC/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
@@ -11,6 +11,7 @@
     int gw_sig_valid; /*1 valid,1 invalid*/

     int rssi;         /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */

     int wcdma_sig_valid;/*1 valid,0 invalid*/

+    int wcdma_signalstrength;/* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */

     int rscp;        /* The Received Signal Code Power in dBm multipled by -1.

                       * Range : 25 to 120

                       * INT_MAX: 0x7FFFFFFF denotes invalid value.

@@ -19,6 +20,7 @@
                       * by -10.  Example: If the actual Ec/Io is -12.5 dB, then this response value

                       * will be 125.*/

     int lte_sig_valid;/*1 valid,0 invalid*/

+    int lte_signalstrength; /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */                     

     int rsrp;        /* The current Reference Signal Receive Power in dBm multipled by -1.

                       * Range: 44 to 140 dBm

                       * INT_MAX: 0x7FFFFFFF denotes invalid value.

diff --git a/LYNQ_PUBLIC/common_src/lib/liblynq-network/lynq_network.cpp b/LYNQ_PUBLIC/common_src/lib/liblynq-network/lynq_network.cpp
index 311a360..f5c592e 100755
--- a/LYNQ_PUBLIC/common_src/lib/liblynq-network/lynq_network.cpp
+++ b/LYNQ_PUBLIC/common_src/lib/liblynq-network/lynq_network.cpp
@@ -18,6 +18,7 @@
 

 #define LYNQ_RESP_STRING_MAX_NUM 128

 #define LYNQ_TYPE_BUF 10

+#define LYNQ_URC_MSG_HEAD_ELEMENT_NUM 3

 #define USER_LOG_TAG "LYNQ_NETWORK"

 

 /*in CR AUTO00210807 MTK confirm set network selection mode max time is 14min 30s, first set 5 min 10s*/

@@ -1024,6 +1025,23 @@
     return RESULT_OK;   

 }

 

+int is_rssi_valid(int rssi)

+{

+    if(rssi < 99 && rssi >=0)

+    {

+        return true;

+    }

+    return false;

+}

+

+int is_nr_ss_rsrp_valid(int ss_rsrp)

+{

+    if(ss_rsrp > 0 && ss_rsrp < 255)

+    {

+        return  true;

+    }

+    return false;

+}

 int lynq_solicited_signal_strength(signalStrength_t *solSigStren)

 {

     if(g_module_init_flag != MODULE_RUNNING)

@@ -1043,15 +1061,13 @@
     {

         LYERRLOG("%s call lynq_send_common_request failure, ret is %d",__func__,ret);

         return ret;  

-    }            

-    

-    int sum = 0;

-    int LTE_signalstrength = 0;

-    int WCDMA_signalstrength = 0;

+    }               

+

+

     int none = 0;

 

     p->readInt32(&solSigStren->rssi);

-    if((solSigStren->rssi!=99)&&(solSigStren->rssi!=0))

+    if(is_rssi_valid(solSigStren->rssi))

     {

         solSigStren->gw_sig_valid = 1;

     }else{

@@ -1065,13 +1081,14 @@
     p->readInt32(&none);

     p->readInt32(&none);

     p->readInt32(&none);

-    p->readInt32(&LTE_signalstrength);

+    p->readInt32(&solSigStren->lte_signalstrength);

+

     // p->readInt32(&solSigStren->signalStrength.LTE_SignalStrength.signalStrength);

     p->readInt32(&solSigStren->rsrp);

     p->readInt32(&solSigStren->rsrq);

     p->readInt32(&solSigStren->rssnr);

-    LYINFLOG("LTE_signalstrength:%d",LTE_signalstrength);

-    if((LTE_signalstrength!=99)&&(LTE_signalstrength!=0))

+    LYINFLOG("LTE_signalstrength:%d",solSigStren->lte_signalstrength);

+    if(is_rssi_valid(solSigStren->lte_signalstrength))

     {

         solSigStren->lte_sig_valid = 1;

     }else{

@@ -1083,12 +1100,12 @@
     p->readInt32(&none);

     p->readInt32(&none);

     p->readInt32(&none);

-    p->readInt32(&WCDMA_signalstrength);

+    p->readInt32(&solSigStren->wcdma_signalstrength);

     p->readInt32(&none);

     p->readInt32(&solSigStren->rscp);

     p->readInt32(&solSigStren->ecno);

-    LYINFLOG("WCDMA_signalstrength:%d",WCDMA_signalstrength);

-    if((WCDMA_signalstrength!=99)&&(WCDMA_signalstrength!=0))

+    LYINFLOG("WCDMA_signalstrength:%d",solSigStren->wcdma_signalstrength);

+    if(is_rssi_valid(solSigStren->wcdma_signalstrength))

     {

         solSigStren->wcdma_sig_valid = 1;

     }else{

@@ -1096,18 +1113,18 @@
     }

     /*bug fix*/

     p->readInt32(&solSigStren->ssRsrp);

-    p->readInt32(&solSigStren->ssRsrq);

-    p->readInt32(&solSigStren->ssSinr);

-    p->readInt32(&solSigStren->csiRsrp);

-    p->readInt32(&solSigStren->csiRsrq);

-    p->readInt32(&solSigStren->csiSinr);

-    sum = (solSigStren->ssRsrp) + (solSigStren->ssRsrq) + (solSigStren->ssSinr) + (solSigStren->csiRsrp)+\

-    (solSigStren->csiRsrq) + (solSigStren->csiSinr);

-    if(sum != 0)

+    if(is_nr_ss_rsrp_valid(solSigStren->ssRsrp))

     {

         solSigStren->nr_sig_valid = 1;

-    }else{

+        p->readInt32(&solSigStren->ssRsrq);

+        p->readInt32(&solSigStren->ssSinr);

+        p->readInt32(&solSigStren->csiRsrp);

+        p->readInt32(&solSigStren->csiRsrq);

+        p->readInt32(&solSigStren->csiSinr);

+    }

+    else{

         LYERRLOG("None of NR signal info");

+        solSigStren->nr_sig_valid = 0;

     }        

 

     LYINFLOG("%s suc",__func__);  

@@ -1168,9 +1185,11 @@
             LYDBGLOG("get state update to signal info");

             solSigStren->gw_sig_valid = s_network_urc_solSigStren.gw_sig_valid;

             solSigStren->rssi = s_network_urc_solSigStren.rssi;

+            solSigStren->wcdma_signalstrength = s_network_urc_solSigStren.wcdma_signalstrength;

             solSigStren->wcdma_sig_valid = s_network_urc_solSigStren.wcdma_sig_valid;

             solSigStren->rscp = s_network_urc_solSigStren.rscp;

             solSigStren->ecno = s_network_urc_solSigStren.ecno;

+            solSigStren->lte_signalstrength = s_network_urc_solSigStren.lte_signalstrength;

             solSigStren->lte_sig_valid = s_network_urc_solSigStren.lte_sig_valid;

             solSigStren->rsrp = s_network_urc_solSigStren.rsrp;

             solSigStren->rsrq = s_network_urc_solSigStren.rsrq;

@@ -1331,8 +1350,6 @@
     int resp_type; 

     int none = 0;

     int NR_sum = 0;

-    int urc_LTE_signalstrength = 0;

-    int urc_WCDMA_signalstrength = 0;

 

     int size=p->dataSize();

     p->readInt32(&resp_type);

@@ -1362,16 +1379,13 @@
         case RIL_UNSOL_SIGNAL_STRENGTH:

         {

             p->readInt32(&s_network_urc_solSigStren.rssi);

-            if((s_network_urc_solSigStren.rssi!=99)&&(s_network_urc_solSigStren.rssi!=0))

+            if(is_rssi_valid(s_network_urc_solSigStren.rssi))

             {

                 s_network_urc_solSigStren.gw_sig_valid = 1;

+                LYINFLOG("urc_GSM_signalstrength:%d",s_network_urc_solSigStren.rssi);

             }else{

                 s_network_urc_solSigStren.gw_sig_valid = 0;

             }

-            if(s_network_urc_solSigStren.gw_sig_valid == 1)

-            {

-                LYINFLOG("urc_GSM_signalstrength:%d",s_network_urc_solSigStren.rssi);

-            }

             p->readInt32(&none);

             p->readInt32(&none);

             p->readInt32(&none);

@@ -1379,60 +1393,59 @@
             p->readInt32(&none);

             p->readInt32(&none);

             p->readInt32(&none);

-            p->readInt32(&urc_LTE_signalstrength);

-            // p.readInt32(&solSigStren->signalStrength.LTE_SignalStrength.signalStrength);

+            p->readInt32(&s_network_urc_solSigStren.lte_signalstrength);

             p->readInt32(&s_network_urc_solSigStren.rsrp);

             p->readInt32(&s_network_urc_solSigStren.rsrq);

             p->readInt32(&s_network_urc_solSigStren.rssnr);

-            if((urc_LTE_signalstrength!=99)&&(urc_LTE_signalstrength!=0))

+            if(is_rssi_valid(s_network_urc_solSigStren.lte_signalstrength))

             {

                 s_network_urc_solSigStren.lte_sig_valid = 1;

+                LYINFLOG("urc_LTE_signalstrength:%d",s_network_urc_solSigStren.lte_signalstrength);

             }else{

                 s_network_urc_solSigStren.lte_sig_valid = 0;

             }

-            if(s_network_urc_solSigStren.lte_sig_valid == 1)

-            {

-                LYINFLOG("urc_LTE_signalstrength:%d",urc_LTE_signalstrength);

-            }

+           

             p->readInt32(&none);

             p->readInt32(&none);

             p->readInt32(&none);

             p->readInt32(&none);

             p->readInt32(&none);

-            p->readInt32(&urc_WCDMA_signalstrength);

+            p->readInt32(&s_network_urc_solSigStren.wcdma_signalstrength);

             p->readInt32(&none);

             p->readInt32(&s_network_urc_solSigStren.rscp);

             p->readInt32(&s_network_urc_solSigStren.ecno);

-            if((urc_WCDMA_signalstrength!=99)&&(urc_WCDMA_signalstrength!=0))

+            if(is_rssi_valid(s_network_urc_solSigStren.wcdma_signalstrength))

             {

                 s_network_urc_solSigStren.wcdma_sig_valid = 1;

+                LYINFLOG("urc_WCDMA_signalstrength:%d",s_network_urc_solSigStren.wcdma_signalstrength);    

             }else{

                 s_network_urc_solSigStren.wcdma_sig_valid = 0;

             }

-            if(s_network_urc_solSigStren.wcdma_sig_valid == 1)

+

+            if(size >= sizeof(RIL_SignalStrength_v14)+sizeof(int)*LYNQ_URC_MSG_HEAD_ELEMENT_NUM)

             {

-                LYINFLOG("urc_WCDMA_signalstrength:%d",urc_WCDMA_signalstrength);

+                p->readInt32(&s_network_urc_solSigStren.ssRsrp);

+                if(is_nr_ss_rsrp_valid(s_network_urc_solSigStren.ssRsrp))

+                {

+                    s_network_urc_solSigStren.nr_sig_valid = 1;

+                    p->readInt32(&s_network_urc_solSigStren.ssRsrq);

+                    p->readInt32(&s_network_urc_solSigStren.ssSinr);

+                    p->readInt32(&s_network_urc_solSigStren.csiRsrp);

+                    p->readInt32(&s_network_urc_solSigStren.csiRsrq);

+                    p->readInt32(&s_network_urc_solSigStren.csiSinr);

+                    LYINFLOG("[NR signal]ssRsrp is %d , ssRsrq is %d , ssSinr is %d , csiRsrp is %d , csiRsrq is %d , csiSinr is %d",\

+                            s_network_urc_solSigStren.ssRsrp,s_network_urc_solSigStren.ssRsrq,s_network_urc_solSigStren.ssSinr, \

+                            s_network_urc_solSigStren.csiRsrp,s_network_urc_solSigStren.csiRsrq,s_network_urc_solSigStren.csiSinr);

+                }

+                else

+                {

+                    s_network_urc_solSigStren.nr_sig_valid = 0;

+                }    

             }

-            p->readInt32(&s_network_urc_solSigStren.ssRsrp);

-            p->readInt32(&s_network_urc_solSigStren.ssRsrq);

-            p->readInt32(&s_network_urc_solSigStren.ssSinr);

-            p->readInt32(&s_network_urc_solSigStren.csiRsrp);

-            p->readInt32(&s_network_urc_solSigStren.csiRsrq);

-            p->readInt32(&s_network_urc_solSigStren.csiSinr);

-            NR_sum = (s_network_urc_solSigStren.ssRsrp) + (s_network_urc_solSigStren.ssRsrq) + (s_network_urc_solSigStren.ssSinr) + (s_network_urc_solSigStren.csiRsrp)+\

-            (s_network_urc_solSigStren.csiRsrq) + (s_network_urc_solSigStren.csiSinr);

-            if(NR_sum != 0)

+            else

             {

-                s_network_urc_solSigStren.nr_sig_valid = 1;

-            }else{

-                s_network_urc_solSigStren.nr_sig_valid = 0;

+                 s_network_urc_solSigStren.nr_sig_valid = 0;

             }

-            if(s_network_urc_solSigStren.nr_sig_valid == 1)

-            {

-                LYINFLOG("[NR signal]ssRsrp is %d , ssRsrq is %d , ssSinr is %d , csiRsrp is %d , csiRsrq is %d , csiSinr is %d",\

-                s_network_urc_solSigStren.ssRsrp,s_network_urc_solSigStren.ssRsrq,s_network_urc_solSigStren.ssSinr, \

-                s_network_urc_solSigStren.csiRsrp,s_network_urc_solSigStren.csiRsrq,s_network_urc_solSigStren.csiSinr);

-            }             

             send_urc_signal_changes();

             break;

         }