From ec41b23f528dc5b65ea405f1edda3bffd802f372 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 9 Aug 2006 20:10:50 +0000 Subject: Add GetRemoteClass method --- hcid/dbus-adapter.c | 33 +++++++++++++++++++++++---------- hcid/dbus-api.txt | 8 ++++++++ hcid/dbus-test | 3 ++- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index 01cd3886..382eaa5a 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -204,7 +204,7 @@ static int check_address(const char *addr) static struct bonding_request_info *bonding_request_new(bdaddr_t *peer) { struct bonding_request_info *bonding; - + bonding = malloc(sizeof(*bonding)); if (!bonding) @@ -1194,9 +1194,7 @@ static int get_remote_class(DBusConnection *conn, DBusMessage *msg, void *data, return 0; } -static DBusHandlerResult handle_dev_get_remote_major_class_req(DBusConnection *conn, - DBusMessage *msg, - void *data) +static DBusHandlerResult handle_dev_get_remote_major_class_req(DBusConnection *conn, DBusMessage *msg, void *data) { DBusMessage *reply; const char *major_class; @@ -1217,9 +1215,7 @@ static DBusHandlerResult handle_dev_get_remote_major_class_req(DBusConnection *c return send_reply_and_unref(conn, reply); } -static DBusHandlerResult handle_dev_get_remote_minor_class_req(DBusConnection *conn, - DBusMessage *msg, - void *data) +static DBusHandlerResult handle_dev_get_remote_minor_class_req(DBusConnection *conn, DBusMessage *msg, void *data) { DBusMessage *reply; const char *major_class; @@ -1245,9 +1241,7 @@ static void append_class_string(const char *class, DBusMessageIter *iter) dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &class); } -static DBusHandlerResult handle_dev_get_remote_service_cls_req(DBusConnection *conn, - DBusMessage *msg, - void *data) +static DBusHandlerResult handle_dev_get_remote_service_cls_req(DBusConnection *conn, DBusMessage *msg, void *data) { DBusMessage *reply; DBusMessageIter iter, array_iter; @@ -1276,6 +1270,24 @@ static DBusHandlerResult handle_dev_get_remote_service_cls_req(DBusConnection *c return send_reply_and_unref(conn, reply); } +static DBusHandlerResult handle_dev_get_remote_class_req(DBusConnection *conn, DBusMessage *msg, void *data) +{ + DBusMessage *reply; + uint32_t class; + + if (get_remote_class(conn, msg, data, &class) < 0) + return DBUS_HANDLER_RESULT_HANDLED; + + reply = dbus_message_new_method_return(msg); + if (!reply) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + + dbus_message_append_args(reply, DBUS_TYPE_UINT32, &class, + DBUS_TYPE_INVALID); + + return send_reply_and_unref(conn, reply); +} + static DBusHandlerResult handle_dev_get_remote_name_req(DBusConnection *conn, DBusMessage *msg, void *data) { char filename[PATH_MAX + 1]; @@ -2333,6 +2345,7 @@ static struct service_data dev_services[] = { { "GetRemoteMajorClass", handle_dev_get_remote_major_class_req }, { "GetRemoteMinorClass", handle_dev_get_remote_minor_class_req }, { "GetRemoteServiceClasses", handle_dev_get_remote_service_cls_req }, + { "GetRemoteClass", handle_dev_get_remote_class_req }, { "GetRemoteName", handle_dev_get_remote_name_req }, { "GetRemoteAlias", handle_dev_get_remote_alias_req }, { "SetRemoteAlias", handle_dev_set_remote_alias_req }, diff --git a/hcid/dbus-api.txt b/hcid/dbus-api.txt index 3e28ad7a..2fdd045e 100644 --- a/hcid/dbus-api.txt +++ b/hcid/dbus-api.txt @@ -461,6 +461,14 @@ Methods string GetAddress() Possible errors: org.bluez.Error.InvalidArguments org.bluez.Error.NotAvailable + uint32 GetRemoteClass(string address) + + Get the remote major, minor, and service classes + encoded as 32 bit integer. + + Possible errors: org.bluez.Error.InvalidArguments + org.bluez.Error.NotAvailable + string GetRemoteName(string address) Get adapter name for a remote device. This request diff --git a/hcid/dbus-test b/hcid/dbus-test index 7e8429f1..83988896 100755 --- a/hcid/dbus-test +++ b/hcid/dbus-test @@ -35,10 +35,11 @@ dev_cmds = [ "GetAddress", "GetRemoteRevision", "GetRemoteManufacturer", "GetRemoteCompany", - "GetRemoteName", "GetRemoteMajorClass", "GetRemoteMinorClass", "GetRemoteServiceClasses", + "GetRemoteClass", + "GetRemoteName", "GetRemoteAlias", "SetRemoteAlias", "ClearRemoteAlias", -- cgit