[PATCH] iface-modem-3gpp: use mm_3gpp_parse_operator_id() instead of custom code
Dan Williams
dcbw at redhat.com
Fri Mar 17 21:11:27 UTC 2017
---
src/mm-iface-modem-3gpp.c | 43 ++++++++-----------------------------------
1 file changed, 8 insertions(+), 35 deletions(-)
diff --git a/src/mm-iface-modem-3gpp.c b/src/mm-iface-modem-3gpp.c
index d38c4ca..8b93550 100644
--- a/src/mm-iface-modem-3gpp.c
+++ b/src/mm-iface-modem-3gpp.c
@@ -859,34 +859,6 @@ load_operator_name_ready (MMIfaceModem3gpp *self,
reload_current_registration_info_context_step (ctx);
}
-static gboolean
-parse_mcc_mnc (const gchar *mccmnc,
- guint *mcc_out,
- guint *mnc_out)
-{
- guint mccmnc_len;
- gchar mcc[4] = { 0, 0, 0, 0 };
- gchar mnc[4] = { 0, 0, 0, 0 };
-
- mccmnc_len = (mccmnc ? strlen (mccmnc) : 0);
- if (mccmnc_len != 5 &&
- mccmnc_len != 6) {
- mm_dbg ("Unexpected MCC/MNC string '%s'", mccmnc);
- return FALSE;
- }
-
- memcpy (mcc, mccmnc, 3);
- /* Not all modems report 6-digit MNCs */
- memcpy (mnc, mccmnc + 3, 2);
- if (mccmnc_len == 6)
- mnc[2] = mccmnc[5];
-
- *mcc_out = atoi (mcc);
- *mnc_out = atoi (mnc);
-
- return TRUE;
-}
-
static void
load_operator_code_ready (MMIfaceModem3gpp *self,
GAsyncResult *res,
@@ -894,24 +866,25 @@ load_operator_code_ready (MMIfaceModem3gpp *self,
{
GError *error = NULL;
gchar *str;
+ guint16 mcc = 0;
+ guint16 mnc = 0;
str = MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_operator_code_finish (self, res, &error);
if (error) {
mm_warn ("Couldn't load Operator Code: '%s'", error->message);
- g_error_free (error);
+ } else if (!mm_3gpp_parse_operator_id (str, &mcc, &mnc, &error)) {
+ mm_dbg ("Unexpected MCC/MNC string '%s': '%s'", str, error->message);
+ g_clear_pointer (&str, g_free);
}
+ g_clear_error (&error);
if (ctx->skeleton)
mm_gdbus_modem3gpp_set_operator_code (ctx->skeleton, str);
/* If we also implement the location interface, update the 3GPP location */
- if (str && MM_IS_IFACE_MODEM_LOCATION (self)) {
- guint mcc = 0;
- guint mnc = 0;
+ if (mcc && MM_IS_IFACE_MODEM_LOCATION (self))
+ mm_iface_modem_location_3gpp_update_mcc_mnc (MM_IFACE_MODEM_LOCATION (self), mcc, mnc);
- if (parse_mcc_mnc (str, &mcc, &mnc))
- mm_iface_modem_location_3gpp_update_mcc_mnc (MM_IFACE_MODEM_LOCATION (self), mcc, mnc);
- }
g_free (str);
ctx->operator_code_loaded = TRUE;
--
2.9.3
More information about the ModemManager-devel
mailing list