summaryrefslogtreecommitdiffstats
path: root/hcid
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2005-05-14 10:43:22 +0000
committerMarcel Holtmann <marcel@holtmann.org>2005-05-14 10:43:22 +0000
commitcb25df80c6bd65cea3ec869fa210b3feb2c78049 (patch)
treeac75c06c963d62f57d74583f3e7f9aa0d8defd8f /hcid
parentdbcb5d496a5adbf895cee6c705522cc0778e1445 (diff)
Support D-Bus version 0.23 and 0.33
Diffstat (limited to 'hcid')
-rw-r--r--hcid/dbus.c35
1 files changed, 27 insertions, 8 deletions
diff --git a/hcid/dbus.c b/hcid/dbus.c
index 4d12bf11..683cf6fb 100644
--- a/hcid/dbus.c
+++ b/hcid/dbus.c
@@ -72,7 +72,11 @@ static void reply_handler_function(DBusPendingCall *call, void *user_data)
size_t len;
char *pin;
+#ifdef HAVE_DBUS_PENDING_CALL_STEAL_REPLY
+ message = dbus_pending_call_steal_reply(call);
+#else
message = dbus_pending_call_get_reply(call);
+#endif
if (dbus_message_is_error(message, WRONG_ARGS_ERROR))
goto error;
@@ -83,7 +87,12 @@ static void reply_handler_function(DBusPendingCall *call, void *user_data)
if (type != DBUS_TYPE_STRING)
goto error;
+#ifdef HAVE_DBUS_MESSAGE_ITER_GET_BASIC
+ dbus_message_iter_get_basic(&iter, &pin);
+#else
pin = dbus_message_iter_get_string(&iter);
+#endif
+
len = strlen(pin);
memset(&pr, 0, sizeof(pr));
@@ -93,11 +102,13 @@ static void reply_handler_function(DBusPendingCall *call, void *user_data)
hci_send_cmd(req->dev, OGF_LINK_CTL, OCF_PIN_CODE_REPLY,
PIN_CODE_REPLY_CP_SIZE, &pr);
+ dbus_message_unref(message);
+
return;
error:
- hci_send_cmd(req->dev, OGF_LINK_CTL, OCF_PIN_CODE_NEG_REPLY,
- 6, &req->bda);
+ hci_send_cmd(req->dev, OGF_LINK_CTL,
+ OCF_PIN_CODE_NEG_REPLY, 6, &req->bda);
}
@@ -109,7 +120,9 @@ static void free_pin_req(void *req)
void hcid_dbus_request_pin(int dev, struct hci_conn_info *ci)
{
DBusMessage *message;
+#ifndef HAVE_DBUS_MESSAGE_APPEND_ARGS
DBusMessageIter iter;
+#endif
DBusPendingCall *pending = NULL;
struct pin_request *req;
@@ -124,14 +137,20 @@ void hcid_dbus_request_pin(int dev, struct hci_conn_info *ci)
req->dev = dev;
bacpy(&req->bda, &ci->bdaddr);
+#ifdef HAVE_DBUS_MESSAGE_APPEND_ARGS
+ dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &ci->out,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE,
+ &ci->bdaddr, sizeof(bdaddr_t), DBUS_TYPE_INVALID);
+#else
dbus_message_append_iter_init(message, &iter);
dbus_message_iter_append_boolean(&iter, ci->out);
dbus_message_iter_append_byte_array(&iter,
(unsigned char *) &ci->bdaddr, sizeof(ci->bdaddr));
+#endif
if (dbus_connection_send_with_reply(connection, message,
- &pending, TIMEOUT) == FALSE) {
+ &pending, TIMEOUT) == FALSE) {
syslog(LOG_ERR, "D-BUS send failed");
goto failed;
}
@@ -139,16 +158,16 @@ void hcid_dbus_request_pin(int dev, struct hci_conn_info *ci)
dbus_pending_call_set_notify(pending, reply_handler_function,
req, free_pin_req);
- dbus_connection_flush (connection);
+ dbus_connection_flush(connection);
- dbus_message_unref (message);
+ dbus_message_unref(message);
return;
failed:
- dbus_message_unref (message);
- hci_send_cmd(dev, OGF_LINK_CTL, OCF_PIN_CODE_NEG_REPLY,
- 6, &ci->bdaddr);
+ dbus_message_unref(message);
+ hci_send_cmd(dev, OGF_LINK_CTL,
+ OCF_PIN_CODE_NEG_REPLY, 6, &ci->bdaddr);
}
gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data)