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))
|
error))
|
||||||
return NULL;
|
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)
|
if (operator_name)
|
||||||
mm_dbg ("loaded Operator Name: %s", operator_name);
|
mm_dbg ("loaded Operator Name: %s", operator_name);
|
||||||
return operator_name;
|
return operator_name;
|
||||||
|
@@ -3472,7 +3472,9 @@ modem_3gpp_load_operator_code_finish (MMIfaceModem3gpp *self,
|
|||||||
error))
|
error))
|
||||||
return NULL;
|
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;
|
return operator_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3513,7 +3515,7 @@ modem_3gpp_load_operator_name_finish (MMIfaceModem3gpp *self,
|
|||||||
error))
|
error))
|
||||||
return NULL;
|
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)
|
if (operator_name)
|
||||||
mm_dbg ("loaded Operator Name: %s", operator_name);
|
mm_dbg ("loaded Operator Name: %s", operator_name);
|
||||||
return operator_name;
|
return operator_name;
|
||||||
|
@@ -3123,8 +3123,8 @@ mm_string_to_access_tech (const gchar *string)
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
mm_3gpp_normalize_operator_name (gchar **operator,
|
mm_3gpp_normalize_operator (gchar **operator,
|
||||||
MMModemCharset cur_charset)
|
MMModemCharset cur_charset)
|
||||||
{
|
{
|
||||||
g_assert (operator);
|
g_assert (operator);
|
||||||
|
|
||||||
|
@@ -294,8 +294,8 @@ gchar *mm_3gpp_facility_to_acronym (MMModem3gppFacility facility);
|
|||||||
|
|
||||||
MMModemAccessTechnology mm_string_to_access_tech (const gchar *string);
|
MMModemAccessTechnology mm_string_to_access_tech (const gchar *string);
|
||||||
|
|
||||||
void mm_3gpp_normalize_operator_name (gchar **operator,
|
void mm_3gpp_normalize_operator (gchar **operator,
|
||||||
MMModemCharset cur_charset);
|
MMModemCharset cur_charset);
|
||||||
|
|
||||||
gboolean mm_3gpp_parse_operator_id (const gchar *operator_id,
|
gboolean mm_3gpp_parse_operator_id (const gchar *operator_id,
|
||||||
guint16 *mcc,
|
guint16 *mcc,
|
||||||
|
@@ -876,13 +876,18 @@ typedef struct {
|
|||||||
static const NormalizeOperatorTest normalize_operator_tests[] = {
|
static const NormalizeOperatorTest normalize_operator_tests[] = {
|
||||||
/* charset unknown */
|
/* charset unknown */
|
||||||
{ "Verizon", MM_MODEM_CHARSET_UNKNOWN, "Verizon" },
|
{ "Verizon", MM_MODEM_CHARSET_UNKNOWN, "Verizon" },
|
||||||
|
{ "311480", MM_MODEM_CHARSET_UNKNOWN, "311480" },
|
||||||
/* charset configured as IRA (ASCII) */
|
/* charset configured as IRA (ASCII) */
|
||||||
{ "Verizon", MM_MODEM_CHARSET_IRA, "Verizon" },
|
{ "Verizon", MM_MODEM_CHARSET_IRA, "Verizon" },
|
||||||
|
{ "311480", MM_MODEM_CHARSET_IRA, "311480" },
|
||||||
/* charset configured as GSM7 */
|
/* charset configured as GSM7 */
|
||||||
{ "Verizon", MM_MODEM_CHARSET_GSM, "Verizon" },
|
{ "Verizon", MM_MODEM_CHARSET_GSM, "Verizon" },
|
||||||
|
{ "311480", MM_MODEM_CHARSET_GSM, "311480" },
|
||||||
/* charset configured as UCS2 */
|
/* charset configured as UCS2 */
|
||||||
{ "0056006500720069007A006F006E", MM_MODEM_CHARSET_UCS2, "Verizon" },
|
{ "0056006500720069007A006F006E", MM_MODEM_CHARSET_UCS2, "Verizon" },
|
||||||
|
{ "003300310031003400380030", MM_MODEM_CHARSET_UCS2, "311480" },
|
||||||
{ "Verizon", MM_MODEM_CHARSET_UCS2, "Verizon" },
|
{ "Verizon", MM_MODEM_CHARSET_UCS2, "Verizon" },
|
||||||
|
{ "311480", MM_MODEM_CHARSET_UCS2, "311480" },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -891,7 +896,7 @@ common_test_normalize_operator (const NormalizeOperatorTest *t)
|
|||||||
gchar *str;
|
gchar *str;
|
||||||
|
|
||||||
str = g_strdup (t->input);
|
str = g_strdup (t->input);
|
||||||
mm_3gpp_normalize_operator_name (&str, t->charset);
|
mm_3gpp_normalize_operator (&str, t->charset);
|
||||||
if (!t->normalized)
|
if (!t->normalized)
|
||||||
g_assert (!str);
|
g_assert (!str);
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user