[Pkg-bluetooth-commits] r867 - in /packages/bluez/trunk/debian/patches: 001_agent_fixes.patch 001_test_agent_default_adapter.patch 002_a2dpsink_marginal.patch 002_test_agent_newapi.patch 006_a2dpsink_marginal.patch

filippo at users.alioth.debian.org filippo at users.alioth.debian.org
Wed Jul 1 10:33:01 UTC 2009


Author: filippo
Date: Wed Jul  1 10:33:00 2009
New Revision: 867

URL: http://svn.debian.org/wsvn/pkg-bluetooth/?sc=1&rev=867
Log:
new patches from git and merge agent fixes

Added:
    packages/bluez/trunk/debian/patches/001_agent_fixes.patch
    packages/bluez/trunk/debian/patches/002_a2dpsink_marginal.patch
Removed:
    packages/bluez/trunk/debian/patches/001_test_agent_default_adapter.patch
    packages/bluez/trunk/debian/patches/002_test_agent_newapi.patch
    packages/bluez/trunk/debian/patches/006_a2dpsink_marginal.patch

Added: packages/bluez/trunk/debian/patches/001_agent_fixes.patch
URL: http://svn.debian.org/wsvn/pkg-bluetooth/packages/bluez/trunk/debian/patches/001_agent_fixes.patch?rev=867&op=file
==============================================================================
--- packages/bluez/trunk/debian/patches/001_agent_fixes.patch (added)
+++ packages/bluez/trunk/debian/patches/001_agent_fixes.patch Wed Jul  1 10:33:00 2009
@@ -1,0 +1,328 @@
+diff --git a/test/agent.c b/test/agent.c
+index b256f52..cd3f6c5 100644
+--- a/test/agent.c
++++ b/test/agent.c
+@@ -70,20 +70,18 @@ static DBusHandlerResult agent_filter(DBusConnection *conn,
+ 	return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+ 
+-static DBusHandlerResult request_message(DBusConnection *conn,
++static DBusHandlerResult request_pincode_message(DBusConnection *conn,
+ 						DBusMessage *msg, void *data)
+ {
+ 	DBusMessage *reply;
+-	const char *path, *address;
+-	dbus_bool_t numeric;
++	const char *path;
+ 
+ 	if (!passkey)
+ 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ 
+ 	if (!dbus_message_get_args(msg, NULL,
+-			DBUS_TYPE_STRING, &path, DBUS_TYPE_STRING, &address,
+-			DBUS_TYPE_BOOLEAN, &numeric, DBUS_TYPE_INVALID)) {
+-		fprintf(stderr, "Invalid arguments for passkey Request method");
++			DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) {
++		fprintf(stderr, "Invalid arguments for RequestPinCode method");
+ 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ 	}
+ 
+@@ -99,7 +97,7 @@ static DBusHandlerResult request_message(DBusConnection *conn,
+ 		return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ 	}
+ 
+-	printf("Passkey request for device %s\n", address);
++	printf("Pincode request for device %s\n", path);
+ 
+ 	dbus_message_append_args(reply, DBUS_TYPE_STRING, &passkey,
+ 					DBUS_TYPE_INVALID);
+@@ -114,20 +112,63 @@ send:
+ 	return DBUS_HANDLER_RESULT_HANDLED;
+ }
+ 
+-static DBusHandlerResult cancel_message(DBusConnection *conn,
++static DBusHandlerResult request_passkey_message(DBusConnection *conn,
+ 						DBusMessage *msg, void *data)
+ {
+ 	DBusMessage *reply;
+-	const char *path, *address;
++	const char *path;
++	unsigned int int_passkey;
++
++	if (!passkey)
++		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
++
+ 
+ 	if (!dbus_message_get_args(msg, NULL,
+-			DBUS_TYPE_STRING, &path, DBUS_TYPE_STRING, &address,
+-							DBUS_TYPE_INVALID)) {
++			DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) {
++		fprintf(stderr, "Invalid arguments for RequestPasskey method");
++		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
++	}
++
++	if (do_reject) {
++		reply = dbus_message_new_error(msg,
++					"org.bluez.Error.Rejected", "");
++		goto send;
++	}
++
++	reply = dbus_message_new_method_return(msg);
++	if (!reply) {
++		fprintf(stderr, "Can't create reply message\n");
++		return DBUS_HANDLER_RESULT_NEED_MEMORY;
++	}
++
++	printf("Passkey request for device %s\n", path);
++
++	int_passkey = strtoul(passkey, NULL, 10);
++
++	dbus_message_append_args(reply, DBUS_TYPE_UINT32, &int_passkey,
++					DBUS_TYPE_INVALID);
++
++send:
++	dbus_connection_send(conn, reply, NULL);
++
++	dbus_connection_flush(conn);
++
++	dbus_message_unref(reply);
++
++	return DBUS_HANDLER_RESULT_HANDLED;
++}
++
++static DBusHandlerResult cancel_message(DBusConnection *conn,
++						DBusMessage *msg, void *data)
++{
++	DBusMessage *reply;
++
++	if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_INVALID)) {
+ 		fprintf(stderr, "Invalid arguments for passkey Confirm method");
+ 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ 	}
+ 
+-	printf("Request canceled for device %s\n", address);
++	printf("Request canceled\n");
+ 
+ 	reply = dbus_message_new_method_return(msg);
+ 	if (!reply) {
+@@ -174,11 +215,50 @@ static DBusHandlerResult release_message(DBusConnection *conn,
+ 	return DBUS_HANDLER_RESULT_HANDLED;
+ }
+ 
++static DBusHandlerResult authorize_message(DBusConnection *conn,
++						DBusMessage *msg, void *data)
++{
++	DBusMessage *reply;
++	const char *path, *uuid;
++
++	if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_OBJECT_PATH, &path,
++			DBUS_TYPE_STRING, &uuid, DBUS_TYPE_INVALID)) {
++		fprintf(stderr, "Invalid arguments for Authorize method");
++		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
++	}
++
++	if (do_reject) {
++		reply = dbus_message_new_error(msg,
++					"org.bluez.Error.Rejected", "");
++		goto send;
++	}
++
++	reply = dbus_message_new_method_return(msg);
++	if (!reply) {
++		fprintf(stderr, "Can't create reply message\n");
++		return DBUS_HANDLER_RESULT_NEED_MEMORY;
++	}
++
++	printf("Authorizing request for %s\n", path);
++
++send:
++	dbus_connection_send(conn, reply, NULL);
++
++	dbus_connection_flush(conn);
++
++	dbus_message_unref(reply);
++
++	return DBUS_HANDLER_RESULT_HANDLED;
++}
++
+ static DBusHandlerResult agent_message(DBusConnection *conn,
+ 						DBusMessage *msg, void *data)
+ {
+-	if (dbus_message_is_method_call(msg, "org.bluez.Agent", "Request"))
+-		return request_message(conn, msg, data);
++	if (dbus_message_is_method_call(msg, "org.bluez.Agent", "RequestPinCode"))
++		return request_pincode_message(conn, msg, data);
++
++	if (dbus_message_is_method_call(msg, "org.bluez.Agent", "RequestPasskey"))
++		return request_passkey_message(conn, msg, data);
+ 
+ 	if (dbus_message_is_method_call(msg, "org.bluez.Agent", "Cancel"))
+ 		return cancel_message(conn, msg, data);
+@@ -186,6 +266,9 @@ static DBusHandlerResult agent_message(DBusConnection *conn,
+ 	if (dbus_message_is_method_call(msg, "org.bluez.Agent", "Release"))
+ 		return release_message(conn, msg, data);
+ 
++	if (dbus_message_is_method_call(msg, "org.bluez.Agent", "Authorize"))
++		return authorize_message(conn, msg, data);
++
+ 	return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+ 
+@@ -279,11 +362,89 @@ static int unregister_agent(DBusConnection *conn, const char *device_path,
+ 	return 0;
+ }
+ 
+-static char *get_device(const char *device)
++static int create_paired_device(DBusConnection *conn, const char *device_path,
++						const char *agent_path,
++						const char *capabilities, const char *target)
++{
++	dbus_bool_t success;
++	DBusMessage *msg;
++
++	msg = dbus_message_new_method_call("org.bluez", device_path,
++					"org.bluez.Adapter", "CreatePairedDevice");
++	if (!msg) {
++		fprintf(stderr, "Can't allocate new method call\n");
++		return -1;
++	}
++
++	dbus_message_append_args(msg, DBUS_TYPE_STRING, &target,
++					DBUS_TYPE_OBJECT_PATH, &agent_path,
++					DBUS_TYPE_STRING, &capabilities,
++							DBUS_TYPE_INVALID);
++
++	success = dbus_connection_send(conn, msg, NULL);
++
++	dbus_message_unref(msg);
++
++	if (!success) {
++		fprintf(stderr, "Not enough memory for message send\n");
++		return -1;
++	}
++
++	dbus_connection_flush(conn);
++
++	return 0;
++}
++
++static char *get_device(DBusConnection *conn, const char *device)
+ {
+-	char *path;
++	DBusMessage *msg, *reply;
++	DBusError err;
++	const char *tmppath;
++	char *path, *default_path = "/org/bluez/hci0";
+ 
+-	path = strdup("/org/bluez/hci0");
++	if (device) {
++		path = strdup(device);
++		return path;
++	}
++
++	msg = dbus_message_new_method_call("org.bluez", "/",
++					"org.bluez.Manager", "DefaultAdapter");
++
++	if (!msg) {
++		fprintf(stderr, "Can't allocate new method call\n");
++		return default_path;
++	}
++
++	dbus_error_init(&err);
++
++	reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &err);
++
++	dbus_message_unref(msg);
++
++	if (!reply) {
++		fprintf(stderr, "Can't get default adapter, using default adapter\n");
++		if (dbus_error_is_set(&err)) {
++			fprintf(stderr, "%s\n", err.message);
++			dbus_error_free(&err);
++		}
++		return default_path;
++	}
++
++	if (!dbus_message_get_args(reply, &err,
++			DBUS_TYPE_OBJECT_PATH, &tmppath, DBUS_TYPE_INVALID)) {
++		fprintf(stderr, "Can't get reply arguments, using default adapter\n");
++		if (dbus_error_is_set(&err)) {
++			fprintf(stderr, "%s\n", err.message);
++			dbus_error_free(&err);
++		}
++		return default_path;
++	}
++
++	path = strdup(tmppath);
++
++	dbus_message_unref(reply);
++
++	dbus_connection_flush(conn);
+ 
+ 	return path;
+ }
+@@ -293,7 +454,7 @@ static void usage(void)
+ 	printf("Bluetooth agent ver %s\n\n", VERSION);
+ 
+ 	printf("Usage:\n"
+-		"\tagent [--device interface] [--path agent-path] <passkey>\n"
++		"\tagent [--device interface] [--path agent-path] <passkey> [<target_device>]\n"
+ 		"\n");
+ }
+ 
+@@ -312,7 +473,7 @@ int main(int argc, char *argv[])
+ 	struct sigaction sa;
+ 	DBusConnection *conn;
+ 	char match_string[128], default_path[128], *device_id = NULL;
+-	char *device_path = NULL, *agent_path = NULL;
++	char *device_path = NULL, *agent_path = NULL, *target = NULL;
+ 	int opt;
+ 
+ 	snprintf(default_path, sizeof(default_path),
+@@ -355,6 +516,9 @@ int main(int argc, char *argv[])
+ 
+ 	passkey = strdup(argv[0]);
+ 
++	if (argc > 1)
++		target = strdup(argv[1]);
++
+ 	if (!agent_path)
+ 		agent_path = strdup(default_path);
+ 
+@@ -365,11 +529,19 @@ int main(int argc, char *argv[])
+ 	}
+ 
+ 	if (!device_path)
+-		device_path = get_device(device_id);
++		device_path = get_device(conn, device_id);
+ 
+-	if (register_agent(conn, device_path, agent_path, capabilities) < 0) {
+-		dbus_connection_unref(conn);
+-		exit(1);
++	if (!target) {
++		if (register_agent(conn, device_path, agent_path, capabilities) < 0) {
++			dbus_connection_unref(conn);
++			exit(1);
++		}
++	} else {
++		if (create_paired_device(conn, device_path, agent_path,
++						capabilities, target) < 0) {
++			dbus_connection_unref(conn);
++			exit(1);
++		}
+ 	}
+ 
+ 	if (!dbus_connection_add_filter(conn, agent_filter, NULL, NULL))
+@@ -392,8 +564,10 @@ int main(int argc, char *argv[])
+ 			break;
+ 	}
+ 
+-	if (!__io_terminated)
+-		unregister_agent(conn, device_path, agent_path);
++	if (!__io_terminated) {
++		if (!target)
++			unregister_agent(conn, device_path, agent_path);
++	}
+ 
+ 	free(device_path);
+ 	free(agent_path);

Added: packages/bluez/trunk/debian/patches/002_a2dpsink_marginal.patch
URL: http://svn.debian.org/wsvn/pkg-bluetooth/packages/bluez/trunk/debian/patches/002_a2dpsink_marginal.patch?rev=867&op=file
==============================================================================
--- packages/bluez/trunk/debian/patches/002_a2dpsink_marginal.patch (added)
+++ packages/bluez/trunk/debian/patches/002_a2dpsink_marginal.patch Wed Jul  1 10:33:00 2009
@@ -1,0 +1,12 @@
+diff --git a/audio/gsta2dpsink.c b/audio/gsta2dpsink.c
+index b6df119..0753f38 100644
+--- a/audio/gsta2dpsink.c
++++ b/audio/gsta2dpsink.c
+@@ -698,6 +698,6 @@ static void gst_a2dp_sink_init(GstA2dpSink *self,
+ gboolean gst_a2dp_sink_plugin_init(GstPlugin *plugin)
+ {
+ 	return gst_element_register(plugin, "a2dpsink",
+-			GST_RANK_PRIMARY, GST_TYPE_A2DP_SINK);
++			GST_RANK_MARGINAL, GST_TYPE_A2DP_SINK);
+ }
+ 




More information about the Pkg-bluetooth-commits mailing list