diff options
author | Dan Williams <dcbw@redhat.com> | 2009-12-02 14:43:09 -0800 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2009-12-02 14:43:09 -0800 |
commit | 5bdabaabec5ecb64986036bf783196eeee3756e7 (patch) | |
tree | c875f5dabc4572b44f9fac60a78de4c01590eb48 /plugins/mm-modem-hso.c | |
parent | 872fe9bf6bb0555f7e4df85fc06314a013404428 (diff) |
gsm: implement enable/connecting/disconnecting state handling
And consolidate generic port enable code in one place since pretty
much every modem needs that.
Diffstat (limited to 'plugins/mm-modem-hso.c')
-rw-r--r-- | plugins/mm-modem-hso.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/plugins/mm-modem-hso.c b/plugins/mm-modem-hso.c index a2e3b408..f1295e24 100644 --- a/plugins/mm-modem-hso.c +++ b/plugins/mm-modem-hso.c @@ -288,33 +288,30 @@ mm_hso_modem_authenticate (MMModemHso *self, /*****************************************************************************/ static void -generic_done (MMModem *modem, GError *error, gpointer user_data) +enable_done (MMModem *modem, GError *error, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; - if (error) - info->error = g_error_copy (error); - mm_callback_info_schedule (info); + mm_generic_gsm_enable_complete (MM_GENERIC_GSM (modem), error, info); } static void parent_enable_done (MMModem *modem, GError *error, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; + MMGenericGsm *self = MM_GENERIC_GSM (modem); if (error) { - info->error = g_error_copy (error); - mm_callback_info_schedule (info); - } else { - /* HSO needs manual PIN checking */ - mm_generic_gsm_check_pin (MM_GENERIC_GSM (modem), generic_done, info); + mm_generic_gsm_enable_complete (self, error, info); + return; } + + /* HSO needs manual PIN checking */ + mm_generic_gsm_check_pin (self, enable_done, info); } static void -enable (MMModem *modem, - MMModemFn callback, - gpointer user_data) +enable (MMModem *modem, MMModemFn callback, gpointer user_data) { MMModem *parent_modem_iface; MMCallbackInfo *info; @@ -325,6 +322,16 @@ enable (MMModem *modem, } static void +parent_disable_done (MMModem *modem, 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 disable_done (MMModem *modem, GError *error, gpointer user_data) @@ -334,7 +341,7 @@ disable_done (MMModem *modem, /* Do the normal disable stuff */ parent_modem_iface = g_type_interface_peek_parent (MM_MODEM_GET_INTERFACE (info->modem)); - parent_modem_iface->disable (info->modem, generic_done, info); + parent_modem_iface->disable (info->modem, parent_disable_done, info); } static void |