diff options
author | Tambet Ingo <tambet@gmail.com> | 2008-09-01 18:51:48 +0300 |
---|---|---|
committer | Tambet Ingo <tambet@gmail.com> | 2008-09-01 18:51:48 +0300 |
commit | ebd99af6a0b463e3e681bded03e39e7ea6b0afcc (patch) | |
tree | 73460e7936679b9a3ec7f65094dd54b7c54c2f39 | |
parent | c56d5a257b35a8f1072a250df68437cf4ec50bf9 (diff) |
Disable the HSO modem in addition to just closing the device on Enable(False).
-rw-r--r-- | plugins/mm-modem-hso.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/plugins/mm-modem-hso.c b/plugins/mm-modem-hso.c index ca00a634..6e6b3ee8 100644 --- a/plugins/mm-modem-hso.c +++ b/plugins/mm-modem-hso.c @@ -287,6 +287,41 @@ mm_hso_modem_get_ip4_config (MMModemHso *self, /*****************************************************************************/ static void +modem_enable_done (MMModem *modem, GError *error, gpointer user_data) +{ + MMCallbackInfo *info = (MMCallbackInfo *) user_data; + MMModem *parent_modem_iface; + + parent_modem_iface = g_type_interface_peek_parent (MM_MODEM_GET_INTERFACE (modem)); + parent_modem_iface->enable (modem, + GPOINTER_TO_INT (mm_callback_info_get_data (info, "enable")), + (MMModemFn) mm_callback_info_get_data (info, "callback"), + mm_callback_info_get_data (info, "user-data")); +} + +static void +enable (MMModem *modem, + gboolean enable, + MMModemFn callback, + gpointer user_data) +{ + MMCallbackInfo *info; + + info = mm_callback_info_new (modem, modem_enable_done, NULL); + info->user_data = info; + mm_callback_info_set_data (info, "enable", GINT_TO_POINTER (enable), NULL); + mm_callback_info_set_data (info, "callback", callback, NULL); + mm_callback_info_set_data (info, "user-data", user_data, NULL); + + if (enable) + mm_callback_info_schedule (info); + else + hso_enable (MM_MODEM_HSO (modem), FALSE, modem_enable_done, info); +} + +/*****************************************************************************/ + +static void impl_hso_auth_done (MMModem *modem, GError *error, gpointer user_data) @@ -337,6 +372,12 @@ mm_modem_hso_init (MMModemHso *self) { } +static void +modem_init (MMModem *modem_class) +{ + modem_class->enable = enable; +} + static GObject* constructor (GType type, guint n_construct_params, @@ -445,7 +486,12 @@ mm_modem_hso_get_type (void) (GInstanceInitFunc) mm_modem_hso_init, }; + static const GInterfaceInfo modem_iface_info = { + (GInterfaceInitFunc) modem_init + }; + modem_hso_type = g_type_register_static (MM_TYPE_GENERIC_GSM, "MMModemHso", &modem_hso_type_info, 0); + g_type_add_interface_static (modem_hso_type, MM_TYPE_MODEM, &modem_iface_info); } return modem_hso_type; |