Reduce the amount of power used to minimum when modem is disabled.

This commit is contained in:
Tambet Ingo
2008-09-18 12:33:25 +03:00
parent 36acdcb70e
commit 447bca91b0

View File

@@ -87,7 +87,7 @@ mm_generic_gsm_set_operator (MMGenericGsm *modem,
/*****************************************************************************/ /*****************************************************************************/
static void static void
init_done (MMSerial *serial, enable_done (MMSerial *serial,
GString *response, GString *response,
GError *error, GError *error,
gpointer user_data) gpointer user_data)
@@ -100,6 +100,21 @@ init_done (MMSerial *serial,
mm_callback_info_schedule (info); mm_callback_info_schedule (info);
} }
static void
init_done (MMSerial *serial,
GString *response,
GError *error,
gpointer user_data)
{
MMCallbackInfo *info = (MMCallbackInfo *) user_data;
if (error) {
info->error = g_error_copy (error);
mm_callback_info_schedule (info);
} else
mm_serial_queue_command (serial, "+CFUN=1", 5, enable_done, user_data);
}
static void static void
enable_flash_done (MMSerial *serial, gpointer user_data) enable_flash_done (MMSerial *serial, gpointer user_data)
{ {
@@ -107,12 +122,21 @@ enable_flash_done (MMSerial *serial, gpointer user_data)
} }
static void static void
disable_flash_done (MMSerial *serial, gpointer user_data) disable_done (MMSerial *serial,
GString *response,
GError *error,
gpointer user_data)
{ {
mm_serial_close (serial); mm_serial_close (serial);
mm_callback_info_schedule ((MMCallbackInfo *) user_data); mm_callback_info_schedule ((MMCallbackInfo *) user_data);
} }
static void
disable_flash_done (MMSerial *serial, gpointer user_data)
{
mm_serial_queue_command (serial, "+CFUN=0", 5, disable_done, user_data);
}
static void static void
enable (MMModem *modem, enable (MMModem *modem,
gboolean enable, gboolean enable,
@@ -126,10 +150,8 @@ enable (MMModem *modem,
if (!enable) { if (!enable) {
if (mm_serial_is_connected (MM_SERIAL (modem))) if (mm_serial_is_connected (MM_SERIAL (modem)))
mm_serial_flash (MM_SERIAL (modem), 1000, disable_flash_done, info); mm_serial_flash (MM_SERIAL (modem), 1000, disable_flash_done, info);
else { else
mm_serial_close (MM_SERIAL (modem)); disable_flash_done (MM_SERIAL (modem), info);
mm_callback_info_schedule (info);
}
} else { } else {
if (mm_serial_open (MM_SERIAL (modem), &info->error)) if (mm_serial_open (MM_SERIAL (modem), &info->error))
mm_serial_flash (MM_SERIAL (modem), 100, enable_flash_done, info); mm_serial_flash (MM_SERIAL (modem), 100, enable_flash_done, info);