diff options
author | Tambet Ingo <tambet@gmail.com> | 2008-09-15 17:08:46 +0300 |
---|---|---|
committer | Tambet Ingo <tambet@gmail.com> | 2008-09-15 17:08:46 +0300 |
commit | f570e1517dcf293583614d671b6dd7aae93f028f (patch) | |
tree | 27b2654a2a4ecb4c7d68ffd63e026097bb8fefc7 /src | |
parent | 1455c424c2a5b2fcb61163b2feb3a2aadc0bfad0 (diff) |
Implement PIN changing and enabling/disabling.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-generic-gsm.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index 5035e3d5..eed0c83c 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -275,6 +275,64 @@ send_pin (MMModemGsmCard *modem, g_free (command); } +static void +enable_pin_done (MMSerial *serial, + GString *response, + GError *error, + gpointer user_data) +{ + MMCallbackInfo *info = (MMCallbackInfo *) user_data; + + if (error) + info->error = g_error_copy (error); + mm_callback_info_schedule (info); +} + +static void +enable_pin (MMModemGsmCard *modem, + const char *pin, + gboolean enabled, + MMModemFn callback, + gpointer user_data) +{ + MMCallbackInfo *info; + char *command; + + info = mm_callback_info_new (MM_MODEM (modem), callback, user_data); + command = g_strdup_printf ("+CLCK=\"SC\",%d,\"%s\"", enabled ? 1 : 0, pin); + mm_serial_queue_command (MM_SERIAL (modem), command, 3, enable_pin_done, info); + g_free (command); +} + +static void +change_pin_done (MMSerial *serial, + GString *response, + GError *error, + gpointer user_data) +{ + MMCallbackInfo *info = (MMCallbackInfo *) user_data; + + if (error) + info->error = g_error_copy (error); + mm_callback_info_schedule (info); +} + +static void +change_pin (MMModemGsmCard *modem, + const char *old_pin, + const char *new_pin, + MMModemFn callback, + gpointer user_data) +{ + MMCallbackInfo *info; + char *command; + + info = mm_callback_info_new (MM_MODEM (modem), callback, user_data); + command = g_strdup_printf ("+CPWD=\"SC\",\"%s\",\"%s\"", old_pin, new_pin); + mm_serial_queue_command (MM_SERIAL (modem), command, 3, change_pin_done, info); + g_free (command); +} + static char * parse_operator (const char *reply) { @@ -962,6 +1020,8 @@ modem_gsm_card_init (MMModemGsmCard *class) class->get_imsi = get_imsi; class->get_info = get_card_info; class->send_pin = send_pin; + class->enable_pin = enable_pin; + class->change_pin = change_pin; } static void |