[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