From 5862e614fd3eb2741752b3dee75a236a8b7f111f Mon Sep 17 00:00:00 2001 From: "Gustavo F. Padovan" Date: Fri, 3 Dec 2010 16:52:55 -0200 Subject: [PATCH] Add ofono_modem_reset() Some modems can screw up everything and then we will need to do a silent reset of the modem. This patch take the modem back to the OFFLINE state. --- src/modem.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/modem.c b/src/modem.c index ae427b33..2f9387c1 100644 --- a/src/modem.c +++ b/src/modem.c @@ -1616,6 +1616,26 @@ void ofono_modem_remove(struct ofono_modem *modem) g_free(modem); } +void ofono_modem_reset(struct ofono_modem *modem) +{ + int err; + + DBG("%p", modem); + + if (modem->pending) { + DBusMessage *reply = __ofono_error_failed(modem->pending); + __ofono_dbus_pending_reply(&modem->pending, reply); + } + + ofono_modem_set_powered(modem, FALSE); + + err = set_powered(modem, TRUE); + if (err == -EINPROGRESS) + return; + + modem_change_state(modem, MODEM_STATE_PRE_SIM); +} + int ofono_modem_driver_register(const struct ofono_modem_driver *d) { DBG("driver: %p, name: %s", d, d->name);