From ecf42585aa4c6417a987c5b0992e9617e219b901 Mon Sep 17 00:00:00 2001 From: Kaj-Michael Lang Date: Wed, 23 Jan 2008 00:47:59 +0200 Subject: [PATCH] Start to add support for using bluez D-Bus API to get device list --- src/Makefile.am | 14 +++- src/gps-bluetooth-bluez-marshal.c | 125 ++++++++++++++++++++++++++++++ src/gps-bluetooth-bluez-marshal.h | 28 +++++++ 3 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 src/gps-bluetooth-bluez-marshal.c create mode 100644 src/gps-bluetooth-bluez-marshal.h diff --git a/src/Makefile.am b/src/Makefile.am index 27ec9db..cf7f097 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -78,7 +78,7 @@ mapper_SOURCES = utils.c \ mapper.c if HAVE_BLUEZ_DBUS_BT -mapper_SOURCES+=gps-bluetooth-bluez.c +mapper_SOURCES+=gps-bluetooth-bluez.c gps-bluetooth-bluez-marshal.c endif if HAVE_HILDON_DBUS_BT @@ -109,11 +109,19 @@ libosmdb_la_CFLAGS = $(GLIBGTK_CFLAGS) $(SQLITE_CFLAGS) $(defines) libosmdb_la_LIBADD = $(GLIBGTK_LIBS) $(SQLITE_LIBS) libosmdb_la_LDFLAGS = -lm -no-undefined -EXTRA_DIST = gps-bluetooth-maemo-marshal.list +EXTRA_DIST = gps-bluetooth-maemo-marshal.list gps-bluetooth-bluez-marshal.list -BUILT_SOURCES = gps-bluetooth-maemo-marshal.h gps-bluetooth-maemo-marshal.c +BUILT_SOURCES = gps-bluetooth-maemo-marshal.h gps-bluetooth-maemo-marshal.c \ + gps-bluetooth-bluez-marshal.h gps-bluetooth-bluez-marshal.c gps-bluetooth-maemo-marshal.h: gps-bluetooth-maemo-marshal.list glib-genmarshal --prefix _bt_maemo --header $< > $@ + gps-bluetooth-maemo-marshal.c: gps-bluetooth-maemo-marshal.list glib-genmarshal --prefix _bt_maemo --body $< > $@ + +gps-bluetooth-bluez-marshal.h: gps-bluetooth-bluez-marshal.list + glib-genmarshal --prefix _bt_bluez --header $< > $@ + +gps-bluetooth-bluez-marshal.c: gps-bluetooth-bluez-marshal.list + glib-genmarshal --prefix _bt_bluez --body $< > $@ diff --git a/src/gps-bluetooth-bluez-marshal.c b/src/gps-bluetooth-bluez-marshal.c new file mode 100644 index 0000000..f2d70f3 --- /dev/null +++ b/src/gps-bluetooth-bluez-marshal.c @@ -0,0 +1,125 @@ + +#include + + +#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,UINT,INT (gps-bluetooth-bluez-marshal.list:1) */ +void +_bt_bluez_VOID__STRING_UINT_INT (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_UINT_INT) (gpointer data1, + gpointer arg_1, + guint arg_2, + gint arg_3, + gpointer data2); + register GMarshalFunc_VOID__STRING_UINT_INT callback; + register GCClosure *cc = (GCClosure*) closure; + register gpointer data1, data2; + + 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_VOID__STRING_UINT_INT) (marshal_data ? marshal_data : cc->callback); + + callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_uint (param_values + 2), + g_marshal_value_peek_int (param_values + 3), + data2); +} + +/* VOID:STRING,STRING (gps-bluetooth-bluez-marshal.list:2) */ +void +_bt_bluez_VOID__STRING_STRING (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_STRING) (gpointer data1, + gpointer arg_1, + gpointer arg_2, + gpointer data2); + register GMarshalFunc_VOID__STRING_STRING 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_STRING) (marshal_data ? marshal_data : cc->callback); + + callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_string (param_values + 2), + data2); +} + diff --git a/src/gps-bluetooth-bluez-marshal.h b/src/gps-bluetooth-bluez-marshal.h new file mode 100644 index 0000000..fa6f9e1 --- /dev/null +++ b/src/gps-bluetooth-bluez-marshal.h @@ -0,0 +1,28 @@ + +#ifndef ___bt_bluez_MARSHAL_H__ +#define ___bt_bluez_MARSHAL_H__ + +#include + +G_BEGIN_DECLS + +/* VOID:STRING,UINT,INT (gps-bluetooth-bluez-marshal.list:1) */ +extern void _bt_bluez_VOID__STRING_UINT_INT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); + +/* VOID:STRING,STRING (gps-bluetooth-bluez-marshal.list:2) */ +extern void _bt_bluez_VOID__STRING_STRING (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); + +G_END_DECLS + +#endif /* ___bt_bluez_MARSHAL_H__ */ + -- 2.39.5