diff options
-rw-r--r-- | plugins/mm-icera-utils.c | 33 | ||||
-rw-r--r-- | plugins/mm-icera-utils.h | 4 | ||||
-rw-r--r-- | plugins/mm-modem-zte.c | 13 |
3 files changed, 44 insertions, 6 deletions
diff --git a/plugins/mm-icera-utils.c b/plugins/mm-icera-utils.c index a3fa3172..4130f736 100644 --- a/plugins/mm-icera-utils.c +++ b/plugins/mm-icera-utils.c @@ -263,3 +263,36 @@ mm_icera_utils_get_access_technology (MMGenericGsm *modem, mm_at_serial_port_queue_command (port, "%NWSTATE=1", 3, get_nwstate_done, info); } +static void +icera_check_done (MMAtSerialPort *port, + GString *response, + GError *error, + gpointer user_data) +{ + MMCallbackInfo *info = user_data; + + info->error = mm_modem_check_removed (info->modem, error); + if (!info->error) + mm_callback_info_set_result (info, GUINT_TO_POINTER (TRUE), NULL); + mm_callback_info_schedule (info); +} + +void +mm_icera_utils_is_icera (MMGenericGsm *modem, + MMModemUIntFn callback, + gpointer user_data) +{ + MMAtSerialPort *port; + MMCallbackInfo *info; + + info = mm_callback_info_uint_new (MM_MODEM (modem), callback, user_data); + + port = mm_generic_gsm_get_best_at_port (modem, &info->error); + if (!port) { + mm_callback_info_schedule (info); + return; + } + + mm_at_serial_port_queue_command (port, "%IPSYS?", 5, icera_check_done, info); +} + diff --git a/plugins/mm-icera-utils.h b/plugins/mm-icera-utils.h index a0267b2f..131fe44b 100644 --- a/plugins/mm-icera-utils.h +++ b/plugins/mm-icera-utils.h @@ -41,5 +41,9 @@ void mm_icera_utils_get_access_technology (MMGenericGsm *modem, MMModemUIntFn callback, gpointer user_data); +void mm_icera_utils_is_icera (MMGenericGsm *modem, + MMModemUIntFn callback, + gpointer user_data); + #endif /* MM_ICERA_UTILS_H */ diff --git a/plugins/mm-modem-zte.c b/plugins/mm-modem-zte.c index 8b8b272c..62a38441 100644 --- a/plugins/mm-modem-zte.c +++ b/plugins/mm-modem-zte.c @@ -364,15 +364,15 @@ static void enable_flash_done (MMSerialPort *port, gpointer user_data); static void -icera_check_cb (MMAtSerialPort *port, - GString *response, +icera_check_cb (MMModem *modem, + guint32 result, GError *error, gpointer user_data) { if (!error) { MMModemZte *self = MM_MODEM_ZTE (user_data); - MM_MODEM_ZTE_GET_PRIVATE (self)->is_icera = TRUE; + MM_MODEM_ZTE_GET_PRIVATE (self)->is_icera = !!result; } } @@ -383,7 +383,8 @@ pre_init_done (MMAtSerialPort *port, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; - MMModemZtePrivate *priv = MM_MODEM_ZTE_GET_PRIVATE (info->modem); + MMModemZte *self = MM_MODEM_ZTE (info->modem); + MMModemZtePrivate *priv = MM_MODEM_ZTE_GET_PRIVATE (self); if (error) { /* Retry the init string one more time; the modem sometimes throws it away */ @@ -392,10 +393,10 @@ pre_init_done (MMAtSerialPort *port, priv->init_retried = TRUE; enable_flash_done (MM_SERIAL_PORT (port), NULL, user_data); } else - mm_generic_gsm_enable_complete (MM_GENERIC_GSM (info->modem), error, info); + mm_generic_gsm_enable_complete (MM_GENERIC_GSM (self), error, info); } else { /* Finish the initialization */ - mm_at_serial_port_queue_command (port, "%IPSYS?", 10, icera_check_cb, info->modem); + mm_icera_utils_is_icera (MM_GENERIC_GSM (self), icera_check_cb, self); mm_at_serial_port_queue_command (port, "Z E0 V1 X4 &C1 +CMEE=1;+CFUN=1;", 10, init_modem_done, info); } } |