Fix HSO modem plugin.

This commit is contained in:
Tambet Ingo
2008-12-01 12:04:08 +02:00
parent 929c1a8a54
commit 3d84a60ab1
4 changed files with 220 additions and 50 deletions

View File

@@ -85,6 +85,49 @@ mm_generic_gsm_set_operator (MMGenericGsm *modem,
priv->oper_name = g_strdup (name);
}
static void
pin_check_done (MMSerial *serial,
GString *response,
GError *error,
gpointer user_data)
{
MMCallbackInfo *info = (MMCallbackInfo *) user_data;
gboolean parsed = FALSE;
if (error)
info->error = g_error_copy (error);
else if (g_str_has_prefix (response->str, "+CPIN: ")) {
const char *str = response->str + 7;
if (g_str_has_prefix (str, "READY"))
parsed = TRUE;
else if (g_str_has_prefix (str, "SIM PIN"))
info->error = mm_mobile_error_for_code (MM_MOBILE_ERROR_SIM_PIN);
else if (g_str_has_prefix (str, "SIM PUK"))
info->error = mm_mobile_error_for_code (MM_MOBILE_ERROR_SIM_PUK);
/* FIXME: There's more exotic ones that are not handled right now */
}
if (!info->error && !parsed)
info->error = g_error_new (MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL,
"%s", "Could not parse PIN request results");
mm_callback_info_schedule (info);
}
void
mm_generic_gsm_check_pin (MMGenericGsm *modem,
MMModemFn callback,
gpointer user_data)
{
MMCallbackInfo *info;
g_return_if_fail (MM_IS_GENERIC_GSM (modem));
info = mm_callback_info_new (MM_MODEM (modem), callback, user_data);
mm_serial_queue_command (MM_SERIAL (modem), "+CPIN?", 3, pin_check_done, info);
}
/*****************************************************************************/
static void

View File

@@ -37,4 +37,8 @@ void mm_generic_gsm_set_operator (MMGenericGsm *modem,
const char *code,
const char *name);
void mm_generic_gsm_check_pin (MMGenericGsm *modem,
MMModemFn callback,
gpointer user_data);
#endif /* MM_GENERIC_GSM_H */