summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Orlenko <zxteam@gmail.com>2010-07-05 01:03:54 +1100
committerAlexander Orlenko <zxteam@gmail.com>2010-07-05 01:03:54 +1100
commit849615ba9590dfc5702e39ea091f7cd38e0b3f6d (patch)
treecf973a4c7ed0d700cfd376bdbf716156eb73558e
parentb3dec435b03cfa4e66e88cac3ffa265b3f43ed81 (diff)
downloadbluez-tools-849615ba9590dfc5702e39ea091f7cd38e0b3f6d.tar.gz
some impl's and fixes
-rw-r--r--src/bt-adapter.c59
-rw-r--r--src/bt-agent.c6
-rw-r--r--src/bt-device.c29
-rw-r--r--src/lib/agent.c79
-rw-r--r--src/lib/agent.h2
-rw-r--r--src/lib/helpers.h1
-rw-r--r--src/lib/marshallers.c340
-rw-r--r--src/lib/marshallers.h68
8 files changed, 533 insertions, 51 deletions
diff --git a/src/bt-adapter.c b/src/bt-adapter.c
index 859db3a..d28f4b6 100644
--- a/src/bt-adapter.c
+++ b/src/bt-adapter.c
@@ -31,18 +31,8 @@
#include "lib/dbus-common.h"
#include "lib/helpers.h"
#include "lib/adapter.h"
-#include "lib/device.h"
#include "lib/manager.h"
-#define DISCOVERY_TIMEOUT 30
-
-static gboolean stop_discovery(gpointer data)
-{
- GMainLoop *mainloop = data;
- g_main_loop_quit(mainloop);
- return FALSE;
-}
-
static void adapter_device_found(Adapter *adapter, const gchar *address, GHashTable *values, gpointer data)
{
GHashTable *found_devices = data;
@@ -57,19 +47,27 @@ static void adapter_device_found(Adapter *adapter, const gchar *address, GHashTa
g_print(" Name: %s\n", g_value_get_string(g_hash_table_lookup(values, "Name")));
g_print(" Alias: %s\n", g_value_get_string(g_hash_table_lookup(values, "Alias")));
g_print(" Address: %s\n", g_value_get_string(g_hash_table_lookup(values, "Address")));
- g_print(" Class: %d\n", g_value_get_uint(g_hash_table_lookup(values, "Class")));
+ g_print(" Class: 0x%x\n", g_value_get_uint(g_hash_table_lookup(values, "Class")));
g_print(" LegacyPairing: %d\n", g_value_get_boolean(g_hash_table_lookup(values, "LegacyPairing")));
g_print(" Paired: %d\n", g_value_get_boolean(g_hash_table_lookup(values, "Paired")));
g_print(" RSSI: %d\n", g_value_get_int(g_hash_table_lookup(values, "RSSI")));
g_print("\n");
- g_hash_table_insert(found_devices, g_strdup(address), g_strdup(".."));
+ g_hash_table_insert(found_devices, g_strdup(address), g_value_dup_string(g_hash_table_lookup(values, "Name")));
}
static void adapter_device_disappeared(Adapter *adapter, const gchar *address, gpointer data)
{
//GHashTable *found_devices = data;
- //g_print("Device disappeared: %s\n", address);
+ //g_print("Device disappeared: %s (%s)\n", address, g_value_get_string(g_hash_table_lookup(found_devices, address)));
+}
+
+static void adapter_property_changed(Adapter *adapter, const gchar *name, const GValue *value, gpointer data)
+{
+ GMainLoop *mainloop = data;
+ if (g_strcmp0(name, "Discovering") == 0 && g_value_get_boolean(value) == FALSE) {
+ g_main_loop_quit(mainloop);
+ }
}
static gboolean list_arg = FALSE;
@@ -128,6 +126,7 @@ int main(int argc, char *argv[])
g_assert(adapters_list != NULL);
g_print("Available adapters:\n");
+
if (adapters_list->len == 0) {
g_print("no adapters found\n");
}
@@ -168,30 +167,22 @@ int main(int argc, char *argv[])
// To store pairs MAC => Name
GHashTable *found_devices = g_hash_table_new(g_str_hash, g_str_equal);
+ // Mainloop
+ GMainLoop *mainloop = g_main_loop_new(NULL, FALSE);
+
g_signal_connect(adapter, "DeviceFound", G_CALLBACK(adapter_device_found), found_devices);
g_signal_connect(adapter, "DeviceDisappeared", G_CALLBACK(adapter_device_disappeared), found_devices);
+ g_signal_connect(adapter, "PropertyChanged", G_CALLBACK(adapter_property_changed), mainloop);
+ g_print("Searching...\n");
adapter_start_discovery(adapter, &error);
exit_if_error(error);
- g_print("Searching...\n");
-
- GSource *timeout_src = g_timeout_source_new_seconds(DISCOVERY_TIMEOUT);
- g_source_attach(timeout_src, NULL);
- GMainLoop *mainloop = g_main_loop_new(NULL, FALSE);
- g_source_set_callback(timeout_src, stop_discovery, mainloop, NULL);
g_main_loop_run(mainloop);
-
/* Discovering process here... */
-
g_main_loop_unref(mainloop);
- g_source_unref(timeout_src);
-
- adapter_stop_discovery(adapter, &error);
- exit_if_error(error);
g_print("Done\n");
-
g_hash_table_unref(found_devices);
g_object_unref(adapter);
} else if (set_arg) {
@@ -231,11 +222,23 @@ int main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- adapter_set_property(adapter, set_name_arg, &v, &error);
+ GHashTable *props = adapter_get_properties(adapter, &error);
exit_if_error(error);
+ GValue *old_value = g_hash_table_lookup(props, set_name_arg);
+ g_assert(old_value != NULL);
+ if (G_VALUE_HOLDS_STRING(old_value)) {
+ g_print("%s: %s -> %s\n", set_name_arg, g_value_get_string(old_value), g_value_get_string(&v));
+ } else if (G_VALUE_HOLDS_BOOLEAN(old_value)) {
+ g_print("%s: %d -> %d\n", set_name_arg, g_value_get_boolean(old_value), g_value_get_boolean(&v));
+ } else if (G_VALUE_HOLDS_UINT(old_value)) {
+ g_print("%s: %d -> %d\n", set_name_arg, g_value_get_uint(old_value), g_value_get_uint(&v));
+ }
+ g_hash_table_unref(props);
- g_print("Done\n");
+ adapter_set_property(adapter, set_name_arg, &v, &error);
+ exit_if_error(error);
+ g_value_unset (&v);
g_object_unref(adapter);
}
diff --git a/src/bt-agent.c b/src/bt-agent.c
index da35d6b..d4ad882 100644
--- a/src/bt-agent.c
+++ b/src/bt-agent.c
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
Agent *agent = g_object_new(AGENT_TYPE, NULL);
- adapter_register_agent(adapter, "/Agent", "DisplayYesNo", &error);
+ adapter_register_agent(adapter, AGENT_DBUS_PATH, "DisplayYesNo", &error);
exit_if_error(error);
g_print("Agent registered\n");
@@ -81,10 +81,10 @@ int main(int argc, char *argv[])
GMainLoop *mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
- adapter_unregister_agent(adapter, "/Agent", &error);
+ adapter_unregister_agent(adapter, AGENT_DBUS_PATH, &error);
exit_if_error(error);
- g_print("Adange unregistered\n");
+ g_print("Agent unregistered\n");
g_object_unref(agent);
g_object_unref(adapter);
diff --git a/src/bt-device.c b/src/bt-device.c
index 22d1aa4..2ba1172 100644
--- a/src/bt-device.c
+++ b/src/bt-device.c
@@ -32,7 +32,6 @@
#include "lib/helpers.h"
#include "lib/adapter.h"
#include "lib/device.h"
-#include "lib/manager.h"
#include "lib/agent.h"
static gchar *adapter_arg = NULL;
@@ -42,6 +41,7 @@ static gchar *remove_arg = NULL;
static gchar *info_arg = NULL;
static gchar *services_arg = NULL;
static gboolean set_arg = FALSE;
+static gchar *set_device_arg = NULL;
static gchar *set_name_arg = NULL;
static gchar *set_value_arg = NULL;
@@ -88,8 +88,6 @@ int main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- Manager *manager = g_object_new(MANAGER_TYPE, NULL);
-
Adapter *adapter = find_adapter(adapter_arg, &error);
exit_if_error(error);
@@ -109,26 +107,41 @@ int main(int argc, char *argv[])
g_object_unref(device);
}
} else if (connect_arg) {
-
+ g_print("Connecting to: %s\n", connect_arg);
+ Agent *agent = g_object_new(AGENT_TYPE, NULL);
+ adapter_create_paired_device(adapter, connect_arg, AGENT_DBUS_PATH, "DisplayYesNo", &error);
+ exit_if_error(error);
+ g_object_unref(agent);
} else if (remove_arg) {
- Device *device = find_device(adapter, info_arg, &error);
+ Device *device = find_device(adapter, remove_arg, &error);
exit_if_error(error);
+ adapter_remove_device(adapter, device_get_dbus_object_path(device), &error);
+ exit_if_error(error);
+
+ g_print("Done\n");
+ g_object_unref(device);
} else if (info_arg) {
Device *device = find_device(adapter, info_arg, &error);
exit_if_error(error);
+ g_print("[%s]\n", device_get_address(device));
+ g_print(" Name: %s\n", device_get_name(device));
+ g_print(" Alias: %s\n", device_get_alias(device));
+ g_print(" Address: %s\n", device_get_address(device));
+ g_print(" Class: %x\n", device_get_class(device));
+
+ g_object_unref(device);
} else if (services_arg) {
- Device *device = find_device(adapter, info_arg, &error);
+ Device *device = find_device(adapter, services_arg, &error);
exit_if_error(error);
} else if (set_arg) {
- Device *device = find_device(adapter, info_arg, &error);
+ Device *device = find_device(adapter, set_device_arg, &error);
exit_if_error(error);
}
- g_object_unref(manager);
g_object_unref(adapter);
exit(EXIT_SUCCESS);
diff --git a/src/lib/agent.c b/src/lib/agent.c
index e14703e..e4ea0d7 100644
--- a/src/lib/agent.c
+++ b/src/lib/agent.c
@@ -25,11 +25,13 @@
#include <config.h>
#endif
+#include <stdio.h>
+
#include "dbus-common.h"
+#include "helpers.h"
+#include "device.h"
#include "agent.h"
-#define BLUEZ_DBUS_AGENT_INTERFACE "org.bluez.Agent"
-
#define AGENT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), AGENT_TYPE, AgentPrivate))
struct _AgentPrivate {
@@ -63,56 +65,111 @@ static void agent_init(Agent *self)
g_assert(conn != NULL);
- dbus_g_connection_register_g_object(conn, "/Agent", G_OBJECT(self));
+ dbus_g_connection_register_g_object(conn, AGENT_DBUS_PATH, G_OBJECT(self));
}
/* Methods */
gboolean agent_release(Agent *self, GError **error)
{
- g_print("agent_release\n");
return TRUE;
}
gboolean agent_request_pin_code(Agent *self, const gchar *device, gchar **ret, GError **error)
{
- g_print("agent_request_pin_code\n");
+ Device *device_obj = g_object_new(DEVICE_TYPE, "DBusObjectPath", device, NULL);
+ g_print("Device: %s (%s)\n", device_get_address(device_obj), device_get_alias(device_obj));
+ g_object_unref(device_obj);
+
+ *ret = g_new0(gchar, 17);
+ g_print("Enter PIN code: ");
+ scanf("%16s", *ret);
return TRUE;
}
gboolean agent_request_passkey(Agent *self, const gchar *device, guint *ret, GError **error)
{
- g_print("agent_request_passkey\n");
+ Device *device_obj = g_object_new(DEVICE_TYPE, "DBusObjectPath", device, NULL);
+ g_print("Device: %s (%s)\n", device_get_address(device_obj), device_get_alias(device_obj));
+ g_object_unref(device_obj);
+
+ g_print("Enter passkey: ");
+ scanf("%u", ret);
return TRUE;
}
gboolean agent_display_passkey(Agent *self, const gchar *device, guint passkey, guint8 entered, GError **error)
{
- g_print("agent_display_passkey\n");
+ Device *device_obj = g_object_new(DEVICE_TYPE, "DBusObjectPath", device, NULL);
+ g_print("Device: %s (%s)\n", device_get_address(device_obj), device_get_alias(device_obj));
+ g_object_unref(device_obj);
+
+ g_print("Passkey: %u, entered: %u\n", passkey, entered);
return TRUE;
}
gboolean agent_request_confirmation(Agent *self, const gchar *device, guint passkey, GError **error)
{
- g_print("agent_request_confirmation\n");
+ Device *device_obj = g_object_new(DEVICE_TYPE, "DBusObjectPath", device, NULL);
+ g_print("Device: %s (%s)\n", device_get_address(device_obj), device_get_alias(device_obj));
+ g_object_unref(device_obj);
+
+ gchar yn[4] = {0,};
+ g_print("Confirm passkey: %u (yes/no)? ", passkey);
+ scanf("%3s", yn);
+ if (g_strcmp0(yn, "y") == 0 || g_strcmp0(yn, "yes") == 0) {
+ return TRUE;
+ } else {
+ // TODO: Fix error code
+ if (error)
+ *error = g_error_new(g_quark_from_static_string("org.bluez.Error.Rejected"), 0, "Passkey doesn't match");
+ return FALSE;
+ }
+
return TRUE;
}
gboolean agent_authorize(Agent *self, const gchar *device, const gchar *uuid, GError **error)
{
- g_print("agent_authorize\n");
+ Device *device_obj = g_object_new(DEVICE_TYPE, "DBusObjectPath", device, NULL);
+ g_print("Device: %s (%s)\n", device_get_address(device_obj), device_get_alias(device_obj));
+ g_object_unref(device_obj);
+
+ gchar yn[4] = {0,};
+ g_print("Authorize a connection to: %s (yes/no)? ", uuid2service(uuid));
+ scanf("%3s", yn);
+ if (g_strcmp0(yn, "y") == 0 || g_strcmp0(yn, "yes") == 0) {
+ return TRUE;
+ } else {
+ // TODO: Fix error code
+ if (error)
+ *error = g_error_new(g_quark_from_static_string("org.bluez.Error.Rejected"), 0, "Connection rejected by user");
+ return FALSE;
+ }
+
return TRUE;
}
gboolean agent_confirm_mode_change(Agent *self, const gchar *mode, GError **error)
{
- g_print("agent_confirm_mode_change\n");
+ gchar yn[4] = {0,};
+ g_print("Confirm mode change: %s (yes/no)? ", mode);
+ scanf("%3s", yn);
+ if (g_strcmp0(yn, "y") == 0 || g_strcmp0(yn, "yes") == 0) {
+ return TRUE;
+ } else {
+ // TODO: Fix error code
+ if (error)
+ *error = g_error_new(g_quark_from_static_string("org.bluez.Error.Rejected"), 0, "Confirmation rejected by user");
+ return FALSE;
+ }
+
return TRUE;
}
gboolean agent_cancel(Agent *self, GError **error)
{
- g_print("agent_cancel\n");
+ g_print("Cancelled\n");
return TRUE;
}
diff --git a/src/lib/agent.h b/src/lib/agent.h
index 49b90dc..ae54e3c 100644
--- a/src/lib/agent.h
+++ b/src/lib/agent.h
@@ -29,6 +29,8 @@
#include "marshallers.h"
+#define AGENT_DBUS_PATH "/agent"
+
/*
* Type macros
*/
diff --git a/src/lib/helpers.h b/src/lib/helpers.h
index 1b39097..1de7894 100644
--- a/src/lib/helpers.h
+++ b/src/lib/helpers.h
@@ -25,7 +25,6 @@
#define __HELPERS_H
#include <glib.h>
-#include <dbus/dbus-glib.h>
#include "adapter.h"
#include "device.h"
diff --git a/src/lib/marshallers.c b/src/lib/marshallers.c
new file mode 100644
index 0000000..80801c6
--- /dev/null
+++ b/src/lib/marshallers.c
@@ -0,0 +1,340 @@
+
+#include <glib-object.h>
+
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v) g_value_get_char (v)
+#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v) g_value_get_int (v)
+#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
+#define g_marshal_value_peek_long(v) g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
+#define g_marshal_value_peek_float(v) g_value_get_float (v)
+#define g_marshal_value_peek_double(v) g_value_get_double (v)
+#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v) g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v) g_value_get_object (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ * Do not access GValues directly in your code. Instead, use the
+ * g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
+#define g_marshal_value_peek_char(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v) (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
+#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_float(v) (v)->data[0].v_float
+#define g_marshal_value_peek_double(v) (v)->data[0].v_double
+#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* VOID:STRING,BOXED (lib/marshallers.list:1) */
+void
+g_cclosure_bluez_marshal_VOID__STRING_BOXED (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__STRING_BOXED) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__STRING_BOXED callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__STRING_BOXED) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_string (param_values + 1),
+ g_marshal_value_peek_boxed (param_values + 2),
+ data2);
+}
+
+/* BOOLEAN:BOXED,UINT,UCHAR,POINTER (lib/marshallers.list:2) */
+void
+g_cclosure_bluez_marshal_BOOLEAN__BOXED_UINT_UCHAR_POINTER (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_UINT_UCHAR_POINTER) (gpointer data1,
+ gpointer arg_1,
+ guint arg_2,
+ guchar arg_3,
+ gpointer arg_4,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__BOXED_UINT_UCHAR_POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 5);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__BOXED_UINT_UCHAR_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_boxed (param_values + 1),
+ g_marshal_value_peek_uint (param_values + 2),
+ g_marshal_value_peek_uchar (param_values + 3),
+ g_marshal_value_peek_pointer (param_values + 4),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:BOXED,STRING,POINTER (lib/marshallers.list:3) */
+void
+g_cclosure_bluez_marshal_BOOLEAN__BOXED_STRING_POINTER (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_STRING_POINTER) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer arg_3,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__BOXED_STRING_POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__BOXED_STRING_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_boxed (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ g_marshal_value_peek_pointer (param_values + 3),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:POINTER (lib/marshallers.list:4) */
+void
+g_cclosure_bluez_marshal_BOOLEAN__POINTER (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__POINTER) (gpointer data1,
+ gpointer arg_1,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 2);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_pointer (param_values + 1),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:BOXED,POINTER,POINTER (lib/marshallers.list:5) */
+void
+g_cclosure_bluez_marshal_BOOLEAN__BOXED_POINTER_POINTER (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_POINTER_POINTER) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer arg_3,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__BOXED_POINTER_POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__BOXED_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_boxed (param_values + 1),
+ g_marshal_value_peek_pointer (param_values + 2),
+ g_marshal_value_peek_pointer (param_values + 3),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:BOXED,UINT,POINTER (lib/marshallers.list:6) */
+void
+g_cclosure_bluez_marshal_BOOLEAN__BOXED_UINT_POINTER (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_UINT_POINTER) (gpointer data1,
+ gpointer arg_1,
+ guint arg_2,
+ gpointer arg_3,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__BOXED_UINT_POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__BOXED_UINT_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_boxed (param_values + 1),
+ g_marshal_value_peek_uint (param_values + 2),
+ g_marshal_value_peek_pointer (param_values + 3),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:STRING,POINTER (lib/marshallers.list:7) */
+void
+g_cclosure_bluez_marshal_BOOLEAN__STRING_POINTER (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_POINTER) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__STRING_POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__STRING_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_string (param_values + 1),
+ g_marshal_value_peek_pointer (param_values + 2),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
diff --git a/src/lib/marshallers.h b/src/lib/marshallers.h
new file mode 100644
index 0000000..121b114
--- /dev/null
+++ b/src/lib/marshallers.h
@@ -0,0 +1,68 @@
+
+#ifndef __g_cclosure_bluez_marshal_MARSHAL_H__
+#define __g_cclosure_bluez_marshal_MARSHAL_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* VOID:STRING,BOXED (lib/marshallers.list:1) */
+extern void g_cclosure_bluez_marshal_VOID__STRING_BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:BOXED,UINT,UCHAR,POINTER (lib/marshallers.list:2) */
+extern void g_cclosure_bluez_marshal_BOOLEAN__BOXED_UINT_UCHAR_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:BOXED,STRING,POINTER (lib/marshallers.list:3) */
+extern void g_cclosure_bluez_marshal_BOOLEAN__BOXED_STRING_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:POINTER (lib/marshallers.list:4) */
+extern void g_cclosure_bluez_marshal_BOOLEAN__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:BOXED,POINTER,POINTER (lib/marshallers.list:5) */
+extern void g_cclosure_bluez_marshal_BOOLEAN__BOXED_POINTER_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:BOXED,UINT,POINTER (lib/marshallers.list:6) */
+extern void g_cclosure_bluez_marshal_BOOLEAN__BOXED_UINT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:STRING,POINTER (lib/marshallers.list:7) */
+extern void g_cclosure_bluez_marshal_BOOLEAN__STRING_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+G_END_DECLS
+
+#endif /* __g_cclosure_bluez_marshal_MARSHAL_H__ */
+