summaryrefslogtreecommitdiffstats
path: root/plugins/sap.c
diff options
context:
space:
mode:
authorGustavo F. Padovan <padovan@profusion.mobi>2011-09-28 18:24:12 -0300
committerDenis Kenzior <denkenz@gmail.com>2011-09-29 10:49:47 -0500
commitd4da014f6fce615ff8a801db38c524e580787f04 (patch)
tree227d0f1a5c2c4f9157baff2322c03383f4de1ee0 /plugins/sap.c
parent019f0c92653a6547c9b07fecddab0ce87ed9736f (diff)
downloadofono-d4da014f6fce615ff8a801db38c524e580787f04.tar.bz2
sap: enable SAP modem, when BlueZ replies
Diffstat (limited to 'plugins/sap.c')
-rw-r--r--plugins/sap.c22
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);
}