iface-modem-3gpp: use mm_3gpp_parse_operator_id() instead of custom code
This commit is contained in:
@@ -859,34 +859,6 @@ load_operator_name_ready (MMIfaceModem3gpp *self,
|
|||||||
reload_current_registration_info_context_step (ctx);
|
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
|
static void
|
||||||
load_operator_code_ready (MMIfaceModem3gpp *self,
|
load_operator_code_ready (MMIfaceModem3gpp *self,
|
||||||
GAsyncResult *res,
|
GAsyncResult *res,
|
||||||
@@ -894,24 +866,25 @@ load_operator_code_ready (MMIfaceModem3gpp *self,
|
|||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
gchar *str;
|
gchar *str;
|
||||||
|
guint16 mcc = 0;
|
||||||
|
guint16 mnc = 0;
|
||||||
|
|
||||||
str = MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_operator_code_finish (self, res, &error);
|
str = MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_operator_code_finish (self, res, &error);
|
||||||
if (error) {
|
if (error) {
|
||||||
mm_warn ("Couldn't load Operator Code: '%s'", error->message);
|
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)
|
if (ctx->skeleton)
|
||||||
mm_gdbus_modem3gpp_set_operator_code (ctx->skeleton, str);
|
mm_gdbus_modem3gpp_set_operator_code (ctx->skeleton, str);
|
||||||
|
|
||||||
/* If we also implement the location interface, update the 3GPP location */
|
/* If we also implement the location interface, update the 3GPP location */
|
||||||
if (str && MM_IS_IFACE_MODEM_LOCATION (self)) {
|
if (mcc && MM_IS_IFACE_MODEM_LOCATION (self))
|
||||||
guint mcc = 0;
|
|
||||||
guint mnc = 0;
|
|
||||||
|
|
||||||
if (parse_mcc_mnc (str, &mcc, &mnc))
|
|
||||||
mm_iface_modem_location_3gpp_update_mcc_mnc (MM_IFACE_MODEM_LOCATION (self), mcc, mnc);
|
mm_iface_modem_location_3gpp_update_mcc_mnc (MM_IFACE_MODEM_LOCATION (self), mcc, mnc);
|
||||||
}
|
|
||||||
g_free (str);
|
g_free (str);
|
||||||
|
|
||||||
ctx->operator_code_loaded = TRUE;
|
ctx->operator_code_loaded = TRUE;
|
||||||
|
Reference in New Issue
Block a user