Hi Sergey,

On 1/15/21 10:25 AM, Sergey Matyukevich wrote:
Gemalto modem reports raw measurements in dBm. Reported values may
include negative numbers. Meanwhile oFono follows ETSI TS 27.007,
so negative numbers do not really exist at the API level.

Modify gemalto netmon driver to report measurements according to
27.007. For this purpose re-scale from what Gemalto firmware
reports into something that 27.007 recommends.
---
  drivers/gemaltomodem/netmon.c | 52 ++++++++++++++++++++++++++++++++---
  1 file changed, 48 insertions(+), 4 deletions(-)


I went ahead and applied all three patches after making minor tweaks in this 
one:

+static int gemalto_rscp_scale(int value)
+{
+       if (value < -120)
+               return 0;
+
+       if (value > -24)
+               return 96;
+
+       return (value + 120);

The ()s weren't needed here..

+}
+
+static int gemalto_rsrp_scale(int value)
+{
+       if (value < -140)
+               return 0;
+
+       if (value > -43)
+               return 97;
+
+       return (value + 140);

here and ...

+}
+
+static int gemalto_rsrq_scale(int value)
+{
+       if (2 * value < -39)
+               return 0;
+
+       if (2 * value > -5)
+               return 34;
+
+       return (2 * value + 39);

here

+}
+
  static int gemalto_parse_smoni_gsm(GAtResultIter *iter,
                                        struct req_cb_data *cbd)
  {
@@ -273,13 +317,13 @@ static int gemalto_parse_smoni_umts(GAtResultIter *iter,
                case SMONI_UMTS_ECN0:
                        if (g_at_result_iter_next_unquoted_string(iter, &str)) {
                                if (sscanf(str, "%f", &fnumber) == 1)
-                                       cbd->t.umts.ecno = (int)fnumber;
+                                       cbd->t.umts.ecno = 
gemalto_ecno_scale((int)fnumber);

Also added a line break to better wrap to 80 char columns here...

                        }
                        break;
                case SMONI_UMTS_RSCP:
                        if (g_at_result_iter_next_unquoted_string(iter, &str)) {
                                if (sscanf(str, "%d", &number) == 1)
-                                       cbd->t.umts.rscp = number;
+                                       cbd->t.umts.rscp = 
gemalto_rscp_scale(number);

and here

                        }
                        break;
                case SMONI_UMTS_MCC:

Regards,
-Denis
_______________________________________________
ofono mailing list -- ofono@ofono.org
To unsubscribe send an email to ofono-le...@ofono.org

Reply via email to