broadband-modem: normalize also operator code

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@ln-systems.com>
This commit is contained in:
Aleksander Morgado
2017-03-25 21:39:45 +01:00
parent f824602bdd
commit fba49d8d00
5 changed files with 15 additions and 8 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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,

View File

@@ -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