diff options
author | Tambet Ingo <tambet@gmail.com> | 2008-09-16 12:18:19 +0300 |
---|---|---|
committer | Tambet Ingo <tambet@gmail.com> | 2008-09-16 13:10:37 +0300 |
commit | f1acf5aaec1d2ca79858a4e472b458f43a1caead (patch) | |
tree | 7fdf52edd016456541b55e9a54ba3a36c6eb3bca /src | |
parent | 8e1cabbefce757c071544d878f4a060a080ed25d (diff) |
Disconnect modem if it's connected while disabling.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-generic-gsm.c | 30 |
1 files changed, 20 insertions, 10 deletions
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,12 +101,19 @@ 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, MMModemFn callback, @@ -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 |