From 9e8a0fda9fb63e7db824e5d86fd3b99d52974327 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 22 Mar 2010 15:05:45 -0700 Subject: option/hso: ensure unsolicited messages get turned off on disable --- plugins/mm-modem-option-utils.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'plugins/mm-modem-option-utils.c') 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); } -- cgit v1.2.3-70-g09d2