diff options
author | Gustavo F. Padovan <padovan@profusion.mobi> | 2010-12-03 16:52:55 -0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-12-07 12:16:20 -0600 |
commit | 5862e614fd3eb2741752b3dee75a236a8b7f111f (patch) | |
tree | 87422deb071551fbfb4008d90a2f8acd8a3fa315 /src | |
parent | ab53869a8a00cadb464d3eaca4974b0ed92d8068 (diff) | |
download | ofono-5862e614fd3eb2741752b3dee75a236a8b7f111f.tar.bz2 |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/modem.c | 20 |
1 files changed, 20 insertions, 0 deletions
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); |