zte: handle access technology changes
This commit is contained in:
@@ -52,6 +52,39 @@ mm_modem_zte_new (const char *device,
|
|||||||
NULL));
|
NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
zte_access_tech_changed (MMSerialPort *port,
|
||||||
|
GMatchInfo *info,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
MMModemGsmAccessTech act = MM_MODEM_GSM_ACCESS_TECH_UNKNOWN;
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
str = g_match_info_fetch (info, 1);
|
||||||
|
if (str) {
|
||||||
|
/* Better technologies are listed first since modem sometimes says
|
||||||
|
* stuff like "GPRS/EDGE" and that should be handled as EDGE.
|
||||||
|
*/
|
||||||
|
if (strstr (str, "HSPA"))
|
||||||
|
act = MM_MODEM_GSM_ACCESS_TECH_HSPA;
|
||||||
|
else if (strstr (str, "HSUPA"))
|
||||||
|
act = MM_MODEM_GSM_ACCESS_TECH_HSUPA;
|
||||||
|
else if (strstr (str, "HSDPA"))
|
||||||
|
act = MM_MODEM_GSM_ACCESS_TECH_HSDPA;
|
||||||
|
else if (strstr (str, "UMTS"))
|
||||||
|
act = MM_MODEM_GSM_ACCESS_TECH_UMTS;
|
||||||
|
else if (strstr (str, "EDGE"))
|
||||||
|
act = MM_MODEM_GSM_ACCESS_TECH_EDGE;
|
||||||
|
else if (strstr (str, "GPRS"))
|
||||||
|
act = MM_MODEM_GSM_ACCESS_TECH_GPRS;
|
||||||
|
else if (strstr (str, "GSM"))
|
||||||
|
act = MM_MODEM_GSM_ACCESS_TECH_GSM;
|
||||||
|
}
|
||||||
|
g_free (str);
|
||||||
|
|
||||||
|
mm_generic_gsm_update_access_technology (MM_GENERIC_GSM (user_data), act);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Modem class override functions */
|
/* Modem class override functions */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@@ -223,8 +256,8 @@ grab_port (MMModem *modem,
|
|||||||
g_regex_unref (regex);
|
g_regex_unref (regex);
|
||||||
|
|
||||||
/* Current network and service domain */
|
/* Current network and service domain */
|
||||||
regex = g_regex_new ("\\r\\n\\+ZPASR: (.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
|
regex = g_regex_new ("\\r\\n\\+ZPASR:\\s*(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
|
||||||
mm_serial_port_add_unsolicited_msg_handler (MM_SERIAL_PORT (port), regex, NULL, NULL, NULL);
|
mm_serial_port_add_unsolicited_msg_handler (MM_SERIAL_PORT (port), regex, zte_access_tech_changed, modem, NULL);
|
||||||
g_regex_unref (regex);
|
g_regex_unref (regex);
|
||||||
|
|
||||||
/* SIM request to Build Main Menu */
|
/* SIM request to Build Main Menu */
|
||||||
|
Reference in New Issue
Block a user