diff options
author | Alexander Sack <asac@jwsdot.com> | 2008-11-28 23:51:26 +0100 |
---|---|---|
committer | Alexander Sack <asac@jwsdot.com> | 2008-12-05 12:41:46 +0100 |
commit | 1673c6c998ccca73097c7d032b14ff15883d053b (patch) | |
tree | 31221e0f8f49120b75b1f04306b27836def4c33f /src/mm-generic-gsm.c | |
parent | c44079b3126825564ec13923ccb6e09e85ca3162 (diff) |
Implement SendPuk feature
* introspection/mm-modem-gsm-card.xml: add SendPuk method
Gsm.Card interface
* src/mm-generic-gsm.c (send_puk_done, send_puk):
- implement generic SendPuk with +CPIN="<puk>,<pin>"
* src/mm-modem-gsm-card.h,
src/mm-modem-gsm-card.c (mm_modem_gsm_card_send_pin,
impl_gsm_modem_send_pin): implement SendPuk glue.
Diffstat (limited to 'src/mm-generic-gsm.c')
-rw-r--r-- | src/mm-generic-gsm.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index 2f0be962..538e594d 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -284,6 +284,35 @@ get_card_info (MMModemGsmCard *modem, } static void +send_puk_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 +send_puk (MMModemGsmCard *modem, + const char *puk, + const char *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 ("+CPIN=\"%s\",\"%s\"", puk, pin); + mm_serial_queue_command (MM_SERIAL (modem), command, 3, send_puk_done, info); + g_free (command); +} + +static void send_pin_done (MMSerial *serial, GString *response, GError *error, @@ -1061,6 +1090,7 @@ modem_gsm_card_init (MMModemGsmCard *class) class->get_imsi = get_imsi; class->get_info = get_card_info; class->send_pin = send_pin; + class->send_puk = send_puk; class->enable_pin = enable_pin; class->change_pin = change_pin; } |