diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-04-03 15:15:13 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-05-06 15:34:12 +0200 |
commit | 65b92dfba5131579be663f6b00140342d5b450e7 (patch) | |
tree | b01a3792ede392aeca30d3562ec1617b85b387cd /plugins/wavecom | |
parent | b7d423288a9fdf98bdc99426a7134e28aaf01471 (diff) |
wavecom: implement custom power down sequence
Diffstat (limited to 'plugins/wavecom')
-rw-r--r-- | plugins/wavecom/mm-broadband-modem-wavecom.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/plugins/wavecom/mm-broadband-modem-wavecom.c b/plugins/wavecom/mm-broadband-modem-wavecom.c index b8abcd22..e49c3e2d 100644 --- a/plugins/wavecom/mm-broadband-modem-wavecom.c +++ b/plugins/wavecom/mm-broadband-modem-wavecom.c @@ -27,9 +27,41 @@ #include "ModemManager.h" #include "mm-log.h" +#include "mm-iface-modem.h" +#include "mm-base-modem-at.h" #include "mm-broadband-modem-wavecom.h" -G_DEFINE_TYPE (MMBroadbandModemWavecom, mm_broadband_modem_wavecom, MM_TYPE_BROADBAND_MODEM); +static void iface_modem_init (MMIfaceModem *iface); + +G_DEFINE_TYPE_EXTENDED (MMBroadbandModemWavecom, mm_broadband_modem_wavecom, MM_TYPE_BROADBAND_MODEM, 0, + G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init)) + +/*****************************************************************************/ +/* Modem power down (Modem interface) */ + +static gboolean +modem_power_down_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + return !!mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error); +} + +static void +modem_power_down (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + /* Use AT+CFUN=4 for power down. It will stop the RF (IMSI detach), and + * keeps access to the SIM */ + mm_base_modem_at_command ( + MM_BASE_MODEM (self), + "+CFUN=4", + 3, + FALSE, + callback, + user_data); +} /*****************************************************************************/ @@ -55,6 +87,13 @@ mm_broadband_modem_wavecom_init (MMBroadbandModemWavecom *self) } static void +iface_modem_init (MMIfaceModem *iface) +{ + iface->modem_power_down = modem_power_down; + iface->modem_power_down_finish = modem_power_down_finish; +} + +static void mm_broadband_modem_wavecom_class_init (MMBroadbandModemWavecomClass *klass) { } |