diff options
| -rw-r--r-- | hcid/dbus-adapter.c | 33 | ||||
| -rw-r--r-- | hcid/dbus-api.txt | 8 | ||||
| -rwxr-xr-x | 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", | 
