summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2007-05-07 18:08:13 +0000
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2007-05-07 18:08:13 +0000
commit7026c4f01e50040d2539a6ca7f80cb533210e8dd (patch)
tree7824f2dfefdc9587d6a267665665bc7897410329
parent500a7637d7eae204fbb74a6602afa3f08a040d17 (diff)
serial: get the default adapter address
-rw-r--r--serial/manager.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/serial/manager.c b/serial/manager.c
index 30380d9d..36711c1a 100644
--- a/serial/manager.c
+++ b/serial/manager.c
@@ -32,6 +32,10 @@
#include <string.h>
#include <glib.h>
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
+#include <bluetooth/hci_lib.h>
+
#include "dbus.h"
#include "logging.h"
@@ -54,13 +58,23 @@ static DBusHandlerResult err_invalid_args(DBusConnection *conn,
SERIAL_ERROR_INTERFACE ".InvalidArguments", str));
}
+static DBusHandlerResult err_failed(DBusConnection *conn,
+ DBusMessage *msg, const char *str)
+{
+ return send_message_and_unref(conn,
+ dbus_message_new_error(msg,
+ SERIAL_ERROR_INTERFACE ".Failed", str));
+}
+
static DBusHandlerResult connect_service(DBusConnection *conn,
DBusMessage *msg, void *data)
{
DBusError derr;
+ bdaddr_t src;
const char *addr, *pattern;
char *endptr;
long val;
+ int dev_id;
/* FIXME: Check if it already exist or if there is pending connect */
@@ -74,6 +88,10 @@ static DBusHandlerResult connect_service(DBusConnection *conn,
return DBUS_HANDLER_RESULT_HANDLED;
}
+ dev_id = hci_get_route(NULL);
+ if ((dev_id < 0) || (hci_devba(dev_id, &src) < 0))
+ return err_failed(conn, msg, "Adapter not available");
+
/* UUID 128*/
if (strlen(pattern) == 36) {
char tmp[37];