diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-23 17:32:51 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-23 18:56:23 +0200 |
commit | 3cdfa93c7376a10092cc771ff79430bc3e77fb75 (patch) | |
tree | 6b1eda6ba36f94abc5a5e97214d441aba8b6d791 | |
parent | 1fa82ebd403c6b696b607046ad370726a3db7272 (diff) |
mbm: implement custom modem factory reset
-rw-r--r-- | plugins/mbm/mm-broadband-modem-mbm.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/plugins/mbm/mm-broadband-modem-mbm.c b/plugins/mbm/mm-broadband-modem-mbm.c index 5094b943..41f21121 100644 --- a/plugins/mbm/mm-broadband-modem-mbm.c +++ b/plugins/mbm/mm-broadband-modem-mbm.c @@ -418,6 +418,52 @@ reset (MMIfaceModem *self, } /*****************************************************************************/ +/* Factory reset (Modem interface) */ + +static gboolean +factory_reset_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + /* Ignore errors */ + mm_base_modem_at_sequence_finish (MM_BASE_MODEM (self), res, NULL, NULL); + return TRUE; +} + +static const MMBaseModemAtCommand factory_reset_sequence[] = { + /* Init command */ + { "&F +CMEE=0", 3, FALSE, NULL }, + { "+COPS=0", 3, FALSE, NULL }, + { "+CR=0", 3, FALSE, NULL }, + { "+CRC=0", 3, FALSE, NULL }, + { "+CREG=0", 3, FALSE, NULL }, + { "+CMER=0", 3, FALSE, NULL }, + { "*EPEE=0", 3, FALSE, NULL }, + { "+CNMI=2, 0, 0, 0, 0", 3, FALSE, NULL }, + { "+CGREG=0", 3, FALSE, NULL }, + { "*EIAD=0", 3, FALSE, NULL }, + { "+CGSMS=3", 3, FALSE, NULL }, + { "+CSCA=\"\",129", 3, FALSE, NULL }, + { NULL } +}; + +static void +factory_reset (MMIfaceModem *self, + const gchar *code, + GAsyncReadyCallback callback, + gpointer user_data) +{ + mm_dbg ("Ignoring factory reset code: '%s'", code); + + mm_base_modem_at_sequence (MM_BASE_MODEM (self), + factory_reset_sequence, + NULL, /* response_processor_context */ + NULL, /* response_processor_context_free */ + callback, + user_data); +} + +/*****************************************************************************/ /* Setup/Cleanup unsolicited events (3GPP interface) */ static void @@ -867,6 +913,8 @@ iface_modem_init (MMIfaceModem *iface) iface->modem_power_up_finish = modem_power_up_finish; iface->reset = reset; iface->reset_finish = reset_finish; + iface->factory_reset = factory_reset; + iface->factory_reset_finish = factory_reset_finish; } static void |