diff options
author | Dan Williams <dcbw@redhat.com> | 2010-03-22 15:05:45 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-03-22 15:05:45 -0700 |
commit | 9e8a0fda9fb63e7db824e5d86fd3b99d52974327 (patch) | |
tree | fb076e34d2f8725a14d81d5eececd9884aae42d9 /plugins/mm-modem-option-utils.c | |
parent | 7a5ba2e0990753b3e41a9fc3a95f743dec4f7160 (diff) |
option/hso: ensure unsolicited messages get turned off on disable
Diffstat (limited to 'plugins/mm-modem-option-utils.c')
-rw-r--r-- | plugins/mm-modem-option-utils.c | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/plugins/mm-modem-option-utils.c b/plugins/mm-modem-option-utils.c index 25ce5a70..66946357 100644 --- a/plugins/mm-modem-option-utils.c +++ b/plugins/mm-modem-option-utils.c @@ -333,16 +333,37 @@ option_register_unsolicted_handlers (MMGenericGsm *modem, MMAtSerialPort *port) } static void -option_change_unsolicited_messages (MMGenericGsm *modem, gboolean enabled) +unsolicited_msg_done (MMAtSerialPort *port, + GString *response, + GError *error, + gpointer user_data) { + MMCallbackInfo *info = user_data; + + if (info) + mm_callback_info_chain_complete_one (info); +} + +static void +option_change_unsolicited_messages (MMGenericGsm *modem, + gboolean enabled, + MMModemFn callback, + gpointer user_data) +{ + MMCallbackInfo *info = NULL; MMAtSerialPort *primary; + if (callback) { + info = mm_callback_info_new (MM_MODEM (modem), callback, user_data); + mm_callback_info_chain_start (info, 4); + } + primary = mm_generic_gsm_get_at_port (modem, MM_PORT_TYPE_PRIMARY); g_assert (primary); - mm_at_serial_port_queue_command (primary, enabled ? "_OSSYS=1" : "_OSSYS=0", 3, NULL, NULL); - mm_at_serial_port_queue_command (primary, enabled ? "_OCTI=1" : "_OCTI=0", 3, NULL, NULL); - mm_at_serial_port_queue_command (primary, enabled ? "_OUWCTI=1" : "_OUWCTI=0", 3, NULL, NULL); - mm_at_serial_port_queue_command (primary, enabled ? "_OSQI=1" : "_OSQI=0", 3, NULL, NULL); + mm_at_serial_port_queue_command (primary, enabled ? "_OSSYS=1" : "_OSSYS=0", 3, unsolicited_msg_done, info); + mm_at_serial_port_queue_command (primary, enabled ? "_OCTI=1" : "_OCTI=0", 3, unsolicited_msg_done, info); + mm_at_serial_port_queue_command (primary, enabled ? "_OUWCTI=1" : "_OUWCTI=0", 3, unsolicited_msg_done, info); + mm_at_serial_port_queue_command (primary, enabled ? "_OSQI=1" : "_OSQI=0", 3, unsolicited_msg_done, info); } |