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:
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user