[PATCH 2/2] broadband-modem: normalize also operator code

Aleksander Morgado aleksander at aleksander.es
Sat Mar 25 20:39:45 UTC 2017


The operator code (MCCMNC) may also be given encoded in the current
charset (e.g. UCS2).

Based on a patch from Colin Helliwell <colin.helliwell at ln-systems.com>
---
 plugins/altair/mm-broadband-modem-altair-lte.c | 2 +-
 src/mm-broadband-modem.c                       | 6 ++++--
 src/mm-modem-helpers.c                         | 4 ++--
 src/mm-modem-helpers.h                         | 4 ++--
 src/tests/test-modem-helpers.c                 | 7 ++++++-
 5 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/plugins/altair/mm-broadband-modem-altair-lte.c b/plugins/altair/mm-broadband-modem-altair-lte.c
index 1155a7a1..3cbc7ecb 100644
--- a/plugins/altair/mm-broadband-modem-altair-lte.c
+++ b/plugins/altair/mm-broadband-modem-altair-lte.c
@@ -1128,7 +1128,7 @@ modem_3gpp_load_operator_name_finish (MMIfaceModem3gpp *self,
                                            error))
         return NULL;
 
-    mm_3gpp_normalize_operator_name (&operator_name, MM_MODEM_CHARSET_UNKNOWN);
+    mm_3gpp_normalize_operator (&operator_name, MM_MODEM_CHARSET_UNKNOWN);
     if (operator_name)
         mm_dbg ("loaded Operator Name: %s", operator_name);
     return operator_name;
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 302fc3db..e98f8dc0 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -3472,7 +3472,9 @@ modem_3gpp_load_operator_code_finish (MMIfaceModem3gpp *self,
                                            error))
         return NULL;
 
-    mm_dbg ("loaded Operator Code: %s", operator_code);
+    mm_3gpp_normalize_operator (&operator_code, MM_BROADBAND_MODEM (self)->priv->modem_current_charset);
+    if (operator_code)
+        mm_dbg ("loaded Operator Code: %s", operator_code);
     return operator_code;
 }
 
@@ -3513,7 +3515,7 @@ modem_3gpp_load_operator_name_finish (MMIfaceModem3gpp *self,
                                            error))
         return NULL;
 
-    mm_3gpp_normalize_operator_name (&operator_name, MM_BROADBAND_MODEM (self)->priv->modem_current_charset);
+    mm_3gpp_normalize_operator (&operator_name, MM_BROADBAND_MODEM (self)->priv->modem_current_charset);
     if (operator_name)
         mm_dbg ("loaded Operator Name: %s", operator_name);
     return operator_name;
diff --git a/src/mm-modem-helpers.c b/src/mm-modem-helpers.c
index 9266a5a0..b4556176 100644
--- a/src/mm-modem-helpers.c
+++ b/src/mm-modem-helpers.c
@@ -3123,8 +3123,8 @@ mm_string_to_access_tech (const gchar *string)
 /*************************************************************************/
 
 void
-mm_3gpp_normalize_operator_name (gchar          **operator,
-                                 MMModemCharset   cur_charset)
+mm_3gpp_normalize_operator (gchar          **operator,
+                            MMModemCharset   cur_charset)
 {
     g_assert (operator);
 
diff --git a/src/mm-modem-helpers.h b/src/mm-modem-helpers.h
index 33af48b6..a74924e3 100644
--- a/src/mm-modem-helpers.h
+++ b/src/mm-modem-helpers.h
@@ -294,8 +294,8 @@ gchar *mm_3gpp_facility_to_acronym (MMModem3gppFacility facility);
 
 MMModemAccessTechnology mm_string_to_access_tech (const gchar *string);
 
-void mm_3gpp_normalize_operator_name (gchar          **operator,
-                                      MMModemCharset   cur_charset);
+void mm_3gpp_normalize_operator (gchar          **operator,
+                                 MMModemCharset   cur_charset);
 
 gboolean mm_3gpp_parse_operator_id (const gchar *operator_id,
                                     guint16 *mcc,
diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c
index 98f30f83..ae0eec99 100644
--- a/src/tests/test-modem-helpers.c
+++ b/src/tests/test-modem-helpers.c
@@ -876,13 +876,18 @@ typedef struct {
 static const NormalizeOperatorTest normalize_operator_tests[] = {
     /* charset unknown */
     { "Verizon", MM_MODEM_CHARSET_UNKNOWN, "Verizon" },
+    { "311480",  MM_MODEM_CHARSET_UNKNOWN, "311480"  },
     /* charset configured as IRA (ASCII) */
     { "Verizon", MM_MODEM_CHARSET_IRA, "Verizon" },
+    { "311480",  MM_MODEM_CHARSET_IRA, "311480"  },
     /* charset configured as GSM7 */
     { "Verizon", MM_MODEM_CHARSET_GSM, "Verizon" },
+    { "311480",  MM_MODEM_CHARSET_GSM, "311480"  },
     /* charset configured as UCS2 */
     { "0056006500720069007A006F006E", MM_MODEM_CHARSET_UCS2, "Verizon" },
+    { "003300310031003400380030",     MM_MODEM_CHARSET_UCS2, "311480"  },
     { "Verizon",                      MM_MODEM_CHARSET_UCS2, "Verizon" },
+    { "311480",                       MM_MODEM_CHARSET_UCS2, "311480"  },
 };
 
 static void
@@ -891,7 +896,7 @@ common_test_normalize_operator (const NormalizeOperatorTest *t)
     gchar *str;
 
     str = g_strdup (t->input);
-    mm_3gpp_normalize_operator_name (&str, t->charset);
+    mm_3gpp_normalize_operator (&str, t->charset);
     if (!t->normalized)
         g_assert (!str);
     else
-- 
2.12.0



More information about the ModemManager-devel mailing list