From f1acf5aaec1d2ca79858a4e472b458f43a1caead Mon Sep 17 00:00:00 2001 From: Tambet Ingo Date: Tue, 16 Sep 2008 12:18:19 +0300 Subject: Disconnect modem if it's connected while disabling. --- src/mm-generic-gsm.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index eed0c83c..f12a5fdc 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -101,11 +101,18 @@ init_done (MMSerial *serial, } static void -flash_done (MMSerial *serial, gpointer user_data) +enable_flash_done (MMSerial *serial, gpointer user_data) { mm_serial_queue_command (serial, "Z E0 V1 X4 &C1 +CMEE=1", 3, init_done, user_data); } +static void +disable_flash_done (MMSerial *serial, gpointer user_data) +{ + mm_serial_close (serial); + mm_callback_info_schedule ((MMCallbackInfo *) user_data); +} + static void enable (MMModem *modem, gboolean enable, @@ -117,16 +124,19 @@ enable (MMModem *modem, info = mm_callback_info_new (modem, callback, user_data); if (!enable) { - mm_serial_close (MM_SERIAL (modem)); - mm_callback_info_schedule (info); - return; - } - - if (mm_serial_open (MM_SERIAL (modem), &info->error)) - mm_serial_flash (MM_SERIAL (modem), 100, flash_done, info); + if (mm_serial_is_connected (MM_SERIAL (modem))) + mm_serial_flash (MM_SERIAL (modem), 1000, disable_flash_done, info); + else { + mm_serial_close (MM_SERIAL (modem)); + mm_callback_info_schedule (info); + } + } else { + if (mm_serial_open (MM_SERIAL (modem), &info->error)) + mm_serial_flash (MM_SERIAL (modem), 100, enable_flash_done, info); - if (info->error) - mm_callback_info_schedule (info); + if (info->error) + mm_callback_info_schedule (info); + } } static void -- cgit v1.2.3-70-g09d2