summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGustavo F. Padovan <padovan@profusion.mobi>2010-12-03 16:52:55 -0200
committerDenis Kenzior <denkenz@gmail.com>2010-12-07 12:16:20 -0600
commit5862e614fd3eb2741752b3dee75a236a8b7f111f (patch)
tree87422deb071551fbfb4008d90a2f8acd8a3fa315 /src
parentab53869a8a00cadb464d3eaca4974b0ed92d8068 (diff)
downloadofono-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.c20
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);