diff options
author | Gustavo F. Padovan <padovan@profusion.mobi> | 2011-09-28 18:24:12 -0300 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-09-29 10:49:47 -0500 |
commit | d4da014f6fce615ff8a801db38c524e580787f04 (patch) | |
tree | 227d0f1a5c2c4f9157baff2322c03383f4de1ee0 /plugins | |
parent | 019f0c92653a6547c9b07fecddab0ce87ed9736f (diff) | |
download | ofono-d4da014f6fce615ff8a801db38c524e580787f04.tar.bz2 |
sap: enable SAP modem, when BlueZ replies
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/sap.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/plugins/sap.c b/plugins/sap.c index 28b07e7a..850ed2fc 100644 --- a/plugins/sap.c +++ b/plugins/sap.c @@ -127,6 +127,7 @@ static void sap_connect_reply(DBusPendingCall *call, gpointer user_data) struct sap_data *data = ofono_modem_get_data(modem); DBusError derr; DBusMessage *reply; + int fd, err; DBG(""); @@ -138,16 +139,29 @@ static void sap_connect_reply(DBusPendingCall *call, gpointer user_data) goto done; dbus_error_init(&derr); - if (!dbus_set_error_from_message(&derr, reply)) + if (dbus_set_error_from_message(&derr, reply)) { + + DBG("Connect reply: %s", derr.message); + + dbus_error_free(&derr); goto done; + } - DBG("Connect reply: %s", derr.message); + if (!dbus_message_get_args(reply, NULL, DBUS_TYPE_UNIX_FD, &fd, + DBUS_TYPE_INVALID)) + goto done; - ofono_modem_set_powered(modem, FALSE); + data->hw_modem = sap_hw_modem; + data->sap_driver = sap_hw_driver; - dbus_error_free(&derr); + err = data->sap_driver->enable(data->hw_modem, modem, fd); + if (err == -EINPROGRESS) { + dbus_message_unref(reply); + return; + } done: + ofono_modem_set_powered(modem, FALSE); dbus_message_unref(reply); } |