* [PATCH 0/2] DeviceInfo and BatteryService Clients
@ 2012-03-11 12:57 chen.ganir
2012-03-11 12:57 ` [PATCH 1/2] Added DeviceInformation GATT Client chen.ganir
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: chen.ganir @ 2012-03-11 12:57 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Chen Ganir
From: Chen Ganir <chen.ganir@ti.com>
Adding Battery Service client and Device Information Service Client stubs.
More logic will be added to these service as development continues.
To enable the new features you will need to use:
--enable-batterystate
--enable-deviceinfo
Chen Ganir (2):
Added DeviceInformation GATT Client
Added Battery Service GATT Client
Makefile.am | 14 +++++++
acinclude.m4 | 12 ++++++
batterystate/batterystate.c | 89 +++++++++++++++++++++++++++++++++++++++++
batterystate/batterystate.h | 26 ++++++++++++
batterystate/main.c | 60 ++++++++++++++++++++++++++++
batterystate/manager.c | 92 +++++++++++++++++++++++++++++++++++++++++++
batterystate/manager.h | 25 ++++++++++++
deviceinfo/deviceinfo.c | 89 +++++++++++++++++++++++++++++++++++++++++
deviceinfo/deviceinfo.h | 26 ++++++++++++
deviceinfo/main.c | 60 ++++++++++++++++++++++++++++
deviceinfo/manager.c | 92 +++++++++++++++++++++++++++++++++++++++++++
deviceinfo/manager.h | 25 ++++++++++++
12 files changed, 610 insertions(+), 0 deletions(-)
create mode 100644 batterystate/batterystate.c
create mode 100644 batterystate/batterystate.h
create mode 100644 batterystate/main.c
create mode 100644 batterystate/manager.c
create mode 100644 batterystate/manager.h
create mode 100644 deviceinfo/deviceinfo.c
create mode 100644 deviceinfo/deviceinfo.h
create mode 100644 deviceinfo/main.c
create mode 100644 deviceinfo/manager.c
create mode 100644 deviceinfo/manager.h
--
1.7.4.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] Added DeviceInformation GATT Client
2012-03-11 12:57 [PATCH 0/2] DeviceInfo and BatteryService Clients chen.ganir
@ 2012-03-11 12:57 ` chen.ganir
2012-03-12 0:29 ` Claudio Takahasi
2012-03-11 12:57 ` [PATCH 2/2] Added Battery Service " chen.ganir
2012-03-11 18:17 ` [PATCH 0/2] DeviceInfo and BatteryService Clients Marcel Holtmann
2 siblings, 1 reply; 7+ messages in thread
From: chen.ganir @ 2012-03-11 12:57 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Chen Ganir
From: Chen Ganir <chen.ganir@ti.com>
Added the DeviceInformation GATT Client plugin skeleton.
---
Makefile.am | 7 ++++
acinclude.m4 | 6 +++
deviceinfo/deviceinfo.c | 89 +++++++++++++++++++++++++++++++++++++++++++++
deviceinfo/deviceinfo.h | 26 +++++++++++++
deviceinfo/main.c | 60 ++++++++++++++++++++++++++++++
deviceinfo/manager.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++
deviceinfo/manager.h | 25 +++++++++++++
7 files changed, 305 insertions(+), 0 deletions(-)
create mode 100644 deviceinfo/deviceinfo.c
create mode 100644 deviceinfo/deviceinfo.h
create mode 100644 deviceinfo/main.c
create mode 100644 deviceinfo/manager.c
create mode 100644 deviceinfo/manager.h
diff --git a/Makefile.am b/Makefile.am
index bd587eb..c2c61d6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -244,6 +244,13 @@ builtin_sources += thermometer/main.c \
thermometer/thermometer.h thermometer/thermometer.c
endif
+if DEVICEINFOPLUGIN
+builtin_modules += deviceinfo
+builtin_sources += deviceinfo/main.c \
+ deviceinfo/manager.h deviceinfo/manager.c \
+ deviceinfo/deviceinfo.h deviceinfo/deviceinfo.c
+endif
+
builtin_modules += hciops mgmtops
builtin_sources += plugins/hciops.c plugins/mgmtops.c
diff --git a/acinclude.m4 b/acinclude.m4
index b0f790c..14b7a4c 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -220,6 +220,7 @@ AC_DEFUN([AC_ARG_BLUEZ], [
dbusoob_enable=no
wiimote_enable=no
thermometer_enable=no
+ deviceinfo_enable=no
AC_ARG_ENABLE(optimization, AC_HELP_STRING([--disable-optimization], [disable code optimization]), [
optimization_enable=${enableval}
@@ -372,6 +373,10 @@ AC_DEFUN([AC_ARG_BLUEZ], [
thermometer_enable=${enableval}
])
+ AC_ARG_ENABLE(deviceinfo, AC_HELP_STRING([--enable-deviceinfo], [enable deviceinfo plugin]), [
+ deviceinfo_enable=${enableval}
+ ])
+
if (test "${fortify_enable}" = "yes"); then
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
fi
@@ -429,4 +434,5 @@ AC_DEFUN([AC_ARG_BLUEZ], [
AM_CONDITIONAL(DBUSOOBPLUGIN, test "${dbusoob_enable}" = "yes")
AM_CONDITIONAL(WIIMOTEPLUGIN, test "${wiimote_enable}" = "yes")
AM_CONDITIONAL(THERMOMETERPLUGIN, test "${thermometer_enable}" = "yes")
+ AM_CONDITIONAL(DEVICEINFOPLUGIN, test "${deviceinfo_enable}" = "yes")
])
diff --git a/deviceinfo/deviceinfo.c b/deviceinfo/deviceinfo.c
new file mode 100644
index 0000000..30920e3
--- /dev/null
+++ b/deviceinfo/deviceinfo.c
@@ -0,0 +1,89 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gdbus.h>
+#include <errno.h>
+#include <bluetooth/uuid.h>
+
+#include "dbus-common.h"
+#include "adapter.h"
+#include "device.h"
+#include "error.h"
+#include "log.h"
+#include "gattrib.h"
+#include "attio.h"
+#include "att.h"
+#include "gatt.h"
+#include "deviceinfo.h"
+#include "glib-compat.h"
+
+struct deviceinfo {
+ DBusConnection *conn; /* The connection to the bus */
+ struct btd_device *dev; /* Device reference */
+ GAttrib *attrib; /* GATT connection */
+};
+
+static GSList *deviceinfoservers = NULL;
+
+static gint cmp_device(gconstpointer a, gconstpointer b)
+{
+ const struct deviceinfo *d = a;
+ const struct btd_device *dev = b;
+
+ if (dev == d->dev)
+ return 0;
+
+ return -1;
+}
+
+int deviceinfo_register(DBusConnection *connection, struct btd_device *device,
+ struct att_primary *dattr)
+{
+ const gchar *path = device_get_path(device);
+ struct deviceinfo *d;
+
+ d = g_new0(struct deviceinfo, 1);
+ d->conn = dbus_connection_ref(connection);
+ d->dev = btd_device_ref(device);
+
+ deviceinfoservers = g_slist_prepend(deviceinfoservers, d);
+
+ return 0;
+}
+
+void deviceinfo_unregister(struct btd_device *device)
+{
+ struct deviceinfo *d;
+ GSList *l;
+
+ l = g_slist_find_custom(deviceinfoservers, device, cmp_device);
+ if (l == NULL)
+ return;
+
+ d = l->data;
+ deviceinfoservers = g_slist_remove(deviceinfoservers, d);
+}
diff --git a/deviceinfo/deviceinfo.h b/deviceinfo/deviceinfo.h
new file mode 100644
index 0000000..eedcf8f
--- /dev/null
+++ b/deviceinfo/deviceinfo.h
@@ -0,0 +1,26 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+int deviceinfo_register(DBusConnection *connection, struct btd_device *device,
+ struct att_primary *tattr);
+void deviceinfo_unregister(struct btd_device *device);
diff --git a/deviceinfo/main.c b/deviceinfo/main.c
new file mode 100644
index 0000000..3bf0e9c
--- /dev/null
+++ b/deviceinfo/main.c
@@ -0,0 +1,60 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <errno.h>
+#include <gdbus.h>
+
+#include "plugin.h"
+#include "manager.h"
+
+static DBusConnection *connection = NULL;
+
+static int deviceinfo_init(void)
+{
+ connection = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (connection == NULL)
+ return -EIO;
+
+ if (deviceinfo_manager_init(connection) < 0) {
+ dbus_connection_unref(connection);
+ return -EIO;
+ }
+
+ return 0;
+}
+
+static void deviceinfo_exit(void)
+{
+ deviceinfo_manager_exit();
+
+ dbus_connection_unref(connection);
+ connection = NULL;
+}
+
+BLUETOOTH_PLUGIN_DEFINE(deviceinfo, VERSION, BLUETOOTH_PLUGIN_PRIORITY_DEFAULT,
+ deviceinfo_init, deviceinfo_exit)
diff --git a/deviceinfo/manager.c b/deviceinfo/manager.c
new file mode 100644
index 0000000..334ef1e
--- /dev/null
+++ b/deviceinfo/manager.c
@@ -0,0 +1,92 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#include <gdbus.h>
+#include <errno.h>
+#include <bluetooth/uuid.h>
+
+#include "adapter.h"
+#include "device.h"
+#include "att.h"
+#include "deviceinfo.h"
+#include "manager.h"
+
+#define DEVICE_INFORMATION_UUID "0000180a-0000-1000-8000-00805f9b34fb"
+
+static DBusConnection *connection = NULL;
+
+static gint primary_uuid_cmp(gconstpointer a, gconstpointer b)
+{
+ const struct att_primary *prim = a;
+ const char *uuid = b;
+
+ return g_strcmp0(prim->uuid, uuid);
+}
+
+static int deviceinfo_driver_probe(struct btd_device *device, GSList *uuids)
+{
+ struct att_primary *tattr;
+ GSList *primaries, *l;
+
+ primaries = btd_device_get_primaries(device);
+
+ l = g_slist_find_custom(primaries, DEVICE_INFORMATION_UUID,
+ primary_uuid_cmp);
+ if (l == NULL)
+ return -EINVAL;
+
+ tattr = l->data;
+
+ return deviceinfo_register(connection, device, tattr);
+}
+
+static void deviceinfo_driver_remove(struct btd_device *device)
+{
+ deviceinfo_unregister(device);
+}
+
+static struct btd_device_driver deviceinfo_device_driver = {
+ .name = "deviceinformation-device-driver",
+ .uuids = BTD_UUIDS(DEVICE_INFORMATION_UUID),
+ .probe = deviceinfo_driver_probe,
+ .remove = deviceinfo_driver_remove
+};
+
+int deviceinfo_manager_init(DBusConnection *conn)
+{
+ int ret;
+ ret = btd_register_device_driver(&deviceinfo_device_driver);
+ if (ret < 0)
+ return ret;
+
+ connection = dbus_connection_ref(conn);
+ return 0;
+}
+
+void deviceinfo_manager_exit(void)
+{
+ btd_unregister_device_driver(&deviceinfo_device_driver);
+
+ dbus_connection_unref(connection);
+ connection = NULL;
+}
diff --git a/deviceinfo/manager.h b/deviceinfo/manager.h
new file mode 100644
index 0000000..d0062fc
--- /dev/null
+++ b/deviceinfo/manager.h
@@ -0,0 +1,25 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+int deviceinfo_manager_init(DBusConnection *conn);
+void deviceinfo_manager_exit(void);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] Added Battery Service GATT Client
2012-03-11 12:57 [PATCH 0/2] DeviceInfo and BatteryService Clients chen.ganir
2012-03-11 12:57 ` [PATCH 1/2] Added DeviceInformation GATT Client chen.ganir
@ 2012-03-11 12:57 ` chen.ganir
2012-03-11 18:17 ` [PATCH 0/2] DeviceInfo and BatteryService Clients Marcel Holtmann
2 siblings, 0 replies; 7+ messages in thread
From: chen.ganir @ 2012-03-11 12:57 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Chen Ganir
From: Chen Ganir <chen.ganir@ti.com>
Added support for the Battery Service Gatt Client side.
---
Makefile.am | 7 +++
acinclude.m4 | 6 +++
batterystate/batterystate.c | 89 +++++++++++++++++++++++++++++++++++++++++
batterystate/batterystate.h | 26 ++++++++++++
batterystate/main.c | 60 ++++++++++++++++++++++++++++
batterystate/manager.c | 92 +++++++++++++++++++++++++++++++++++++++++++
batterystate/manager.h | 25 ++++++++++++
7 files changed, 305 insertions(+), 0 deletions(-)
create mode 100644 batterystate/batterystate.c
create mode 100644 batterystate/batterystate.h
create mode 100644 batterystate/main.c
create mode 100644 batterystate/manager.c
create mode 100644 batterystate/manager.h
diff --git a/Makefile.am b/Makefile.am
index c2c61d6..10fd078 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -251,6 +251,13 @@ builtin_sources += deviceinfo/main.c \
deviceinfo/deviceinfo.h deviceinfo/deviceinfo.c
endif
+if BATTERYSTATEPLUGIN
+builtin_modules += batterystate
+builtin_sources += batterystate/main.c \
+ batterystate/manager.h batterystate/manager.c \
+ batterystate/batterystate.h batterystate/batterystate.c
+endif
+
builtin_modules += hciops mgmtops
builtin_sources += plugins/hciops.c plugins/mgmtops.c
diff --git a/acinclude.m4 b/acinclude.m4
index 14b7a4c..b33b4bf 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -221,6 +221,7 @@ AC_DEFUN([AC_ARG_BLUEZ], [
wiimote_enable=no
thermometer_enable=no
deviceinfo_enable=no
+ batterystate_enable=no
AC_ARG_ENABLE(optimization, AC_HELP_STRING([--disable-optimization], [disable code optimization]), [
optimization_enable=${enableval}
@@ -377,6 +378,10 @@ AC_DEFUN([AC_ARG_BLUEZ], [
deviceinfo_enable=${enableval}
])
+ AC_ARG_ENABLE(batterystate, AC_HELP_STRING([--enable-batterystate], [enable batterystate plugin]), [
+ batterystate_enable=${enableval}
+ ])
+
if (test "${fortify_enable}" = "yes"); then
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
fi
@@ -435,4 +440,5 @@ AC_DEFUN([AC_ARG_BLUEZ], [
AM_CONDITIONAL(WIIMOTEPLUGIN, test "${wiimote_enable}" = "yes")
AM_CONDITIONAL(THERMOMETERPLUGIN, test "${thermometer_enable}" = "yes")
AM_CONDITIONAL(DEVICEINFOPLUGIN, test "${deviceinfo_enable}" = "yes")
+ AM_CONDITIONAL(BATTERYSTATEPLUGIN, test "${batterystate_enable}" = "yes")
])
diff --git a/batterystate/batterystate.c b/batterystate/batterystate.c
new file mode 100644
index 0000000..54e47fb
--- /dev/null
+++ b/batterystate/batterystate.c
@@ -0,0 +1,89 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gdbus.h>
+#include <errno.h>
+#include <bluetooth/uuid.h>
+
+#include "dbus-common.h"
+#include "adapter.h"
+#include "device.h"
+#include "error.h"
+#include "log.h"
+#include "gattrib.h"
+#include "attio.h"
+#include "att.h"
+#include "gatt.h"
+#include "batterystate.h"
+#include "glib-compat.h"
+
+struct batterystate {
+ DBusConnection *conn; /* The connection to the bus */
+ struct btd_device *dev; /* Device reference */
+ GAttrib *attrib; /* GATT connection */
+};
+
+static GSList *batteryservices = NULL;
+
+static gint cmp_device(gconstpointer a, gconstpointer b)
+{
+ const struct batterystate *bs = a;
+ const struct btd_device *dev = b;
+
+ if (dev == bs->dev)
+ return 0;
+
+ return -1;
+}
+
+int batterystate_register(DBusConnection *connection, struct btd_device *device,
+ struct att_primary *dattr)
+{
+ const gchar *path = device_get_path(device);
+ struct batterystate *bs;
+
+ bs = g_new0(struct batterystate, 1);
+ bs->conn = dbus_connection_ref(connection);
+ bs->dev = btd_device_ref(device);
+
+ batteryservices = g_slist_prepend(batteryservices, bs);
+
+ return 0;
+}
+
+void batterystate_unregister(struct btd_device *device)
+{
+ struct batterystate *bs;
+ GSList *l;
+
+ l = g_slist_find_custom(batteryservices, device, cmp_device);
+ if (l == NULL)
+ return;
+
+ bs = l->data;
+ batteryservices = g_slist_remove(batteryservices, bs);
+}
diff --git a/batterystate/batterystate.h b/batterystate/batterystate.h
new file mode 100644
index 0000000..eac8c2d
--- /dev/null
+++ b/batterystate/batterystate.h
@@ -0,0 +1,26 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+int batterystate_register(DBusConnection *connection, struct btd_device *device,
+ struct att_primary *tattr);
+void batterystate_unregister(struct btd_device *device);
diff --git a/batterystate/main.c b/batterystate/main.c
new file mode 100644
index 0000000..165f6ea
--- /dev/null
+++ b/batterystate/main.c
@@ -0,0 +1,60 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <errno.h>
+#include <gdbus.h>
+
+#include "plugin.h"
+#include "manager.h"
+
+static DBusConnection *connection = NULL;
+
+static int batterystate_init(void)
+{
+ connection = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (connection == NULL)
+ return -EIO;
+
+ if (batterystate_manager_init(connection) < 0) {
+ dbus_connection_unref(connection);
+ return -EIO;
+ }
+
+ return 0;
+}
+
+static void batterystate_exit(void)
+{
+ batterystate_manager_exit();
+
+ dbus_connection_unref(connection);
+ connection = NULL;
+}
+
+BLUETOOTH_PLUGIN_DEFINE(batterystate, VERSION, BLUETOOTH_PLUGIN_PRIORITY_DEFAULT,
+ batterystate_init, batterystate_exit)
diff --git a/batterystate/manager.c b/batterystate/manager.c
new file mode 100644
index 0000000..8f63717
--- /dev/null
+++ b/batterystate/manager.c
@@ -0,0 +1,92 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#include <gdbus.h>
+#include <errno.h>
+#include <bluetooth/uuid.h>
+
+#include "adapter.h"
+#include "device.h"
+#include "att.h"
+#include "batterystate.h"
+#include "manager.h"
+
+#define BATTERY_SERVICE_UUID "0000180f-0000-1000-8000-00805f9b34fb"
+
+static DBusConnection *connection = NULL;
+
+static gint primary_uuid_cmp(gconstpointer a, gconstpointer b)
+{
+ const struct att_primary *prim = a;
+ const char *uuid = b;
+
+ return g_strcmp0(prim->uuid, uuid);
+}
+
+static int batterystate_driver_probe(struct btd_device *device, GSList *uuids)
+{
+ struct att_primary *tattr;
+ GSList *primaries, *l;
+
+ primaries = btd_device_get_primaries(device);
+
+ l = g_slist_find_custom(primaries, BATTERY_SERVICE_UUID,
+ primary_uuid_cmp);
+ if (l == NULL)
+ return -EINVAL;
+
+ tattr = l->data;
+
+ return batterystate_register(connection, device, tattr);
+}
+
+static void batterystate_driver_remove(struct btd_device *device)
+{
+ batterystate_unregister(device);
+}
+
+static struct btd_device_driver batterystate_device_driver = {
+ .name = "batterystate-device-driver",
+ .uuids = BTD_UUIDS(BATTERY_SERVICE_UUID),
+ .probe = batterystate_driver_probe,
+ .remove = batterystate_driver_remove
+};
+
+int batterystate_manager_init(DBusConnection *conn)
+{
+ int ret;
+ ret = btd_register_device_driver(&batterystate_device_driver);
+ if (ret < 0)
+ return ret;
+
+ connection = dbus_connection_ref(conn);
+ return 0;
+}
+
+void batterystate_manager_exit(void)
+{
+ btd_unregister_device_driver(&batterystate_device_driver);
+
+ dbus_connection_unref(connection);
+ connection = NULL;
+}
diff --git a/batterystate/manager.h b/batterystate/manager.h
new file mode 100644
index 0000000..91b9799
--- /dev/null
+++ b/batterystate/manager.h
@@ -0,0 +1,25 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+int batterystate_manager_init(DBusConnection *conn);
+void batterystate_manager_exit(void);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] DeviceInfo and BatteryService Clients
2012-03-11 12:57 [PATCH 0/2] DeviceInfo and BatteryService Clients chen.ganir
2012-03-11 12:57 ` [PATCH 1/2] Added DeviceInformation GATT Client chen.ganir
2012-03-11 12:57 ` [PATCH 2/2] Added Battery Service " chen.ganir
@ 2012-03-11 18:17 ` Marcel Holtmann
2012-03-13 12:08 ` Ganir, Chen
2 siblings, 1 reply; 7+ messages in thread
From: Marcel Holtmann @ 2012-03-11 18:17 UTC (permalink / raw)
To: chen.ganir; +Cc: linux-bluetooth, Chen Ganir
Hi Chen,
> Adding Battery Service client and Device Information Service Client stubs.
> More logic will be added to these service as development continues.
> To enable the new features you will need to use:
> --enable-batterystate
> --enable-deviceinfo
I rather have us reducing the number of configure options. Do we really
need these? I would just enable them all by default.
Regards
Marcel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] Added DeviceInformation GATT Client
2012-03-11 12:57 ` [PATCH 1/2] Added DeviceInformation GATT Client chen.ganir
@ 2012-03-12 0:29 ` Claudio Takahasi
2012-03-12 7:40 ` Ganir, Chen
0 siblings, 1 reply; 7+ messages in thread
From: Claudio Takahasi @ 2012-03-12 0:29 UTC (permalink / raw)
To: chen.ganir; +Cc: linux-bluetooth
Hi Chen Ganir:
On Sun, Mar 11, 2012 at 9:57 AM, <chen.ganir@gmail.com> wrote:
> From: Chen Ganir <chen.ganir@ti.com>
>
> Added the DeviceInformation GATT Client plugin skeleton.
> ---
> Makefile.am | 7 ++++
> acinclude.m4 | 6 +++
> deviceinfo/deviceinfo.c | 89 +++++++++++++++++++++++++++++++++++++++++++++
> deviceinfo/deviceinfo.h | 26 +++++++++++++
> deviceinfo/main.c | 60 ++++++++++++++++++++++++++++++
> deviceinfo/manager.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++
> deviceinfo/manager.h | 25 +++++++++++++
> 7 files changed, 305 insertions(+), 0 deletions(-)
> create mode 100644 deviceinfo/deviceinfo.c
> create mode 100644 deviceinfo/deviceinfo.h
> create mode 100644 deviceinfo/main.c
> create mode 100644 deviceinfo/manager.c
> create mode 100644 deviceinfo/manager.h
>
> diff --git a/Makefile.am b/Makefile.am
> index bd587eb..c2c61d6 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -244,6 +244,13 @@ builtin_sources += thermometer/main.c \
> thermometer/thermometer.h thermometer/thermometer.c
> endif
>
> +if DEVICEINFOPLUGIN
> +builtin_modules += deviceinfo
> +builtin_sources += deviceinfo/main.c \
> + deviceinfo/manager.h deviceinfo/manager.c \
> + deviceinfo/deviceinfo.h deviceinfo/deviceinfo.c
> +endif
> +
> builtin_modules += hciops mgmtops
> builtin_sources += plugins/hciops.c plugins/mgmtops.c
>
> diff --git a/acinclude.m4 b/acinclude.m4
> index b0f790c..14b7a4c 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -220,6 +220,7 @@ AC_DEFUN([AC_ARG_BLUEZ], [
> dbusoob_enable=no
> wiimote_enable=no
> thermometer_enable=no
> + deviceinfo_enable=no
>
> AC_ARG_ENABLE(optimization, AC_HELP_STRING([--disable-optimization], [disable code optimization]), [
> optimization_enable=${enableval}
> @@ -372,6 +373,10 @@ AC_DEFUN([AC_ARG_BLUEZ], [
> thermometer_enable=${enableval}
> ])
>
> + AC_ARG_ENABLE(deviceinfo, AC_HELP_STRING([--enable-deviceinfo], [enable deviceinfo plugin]), [
> + deviceinfo_enable=${enableval}
> + ])
> +
> if (test "${fortify_enable}" = "yes"); then
> CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
> fi
> @@ -429,4 +434,5 @@ AC_DEFUN([AC_ARG_BLUEZ], [
> AM_CONDITIONAL(DBUSOOBPLUGIN, test "${dbusoob_enable}" = "yes")
> AM_CONDITIONAL(WIIMOTEPLUGIN, test "${wiimote_enable}" = "yes")
> AM_CONDITIONAL(THERMOMETERPLUGIN, test "${thermometer_enable}" = "yes")
> + AM_CONDITIONAL(DEVICEINFOPLUGIN, test "${deviceinfo_enable}" = "yes")
> ])
> diff --git a/deviceinfo/deviceinfo.c b/deviceinfo/deviceinfo.c
> new file mode 100644
> index 0000000..30920e3
> --- /dev/null
> +++ b/deviceinfo/deviceinfo.c
> @@ -0,0 +1,89 @@
> +/*
> + *
> + * BlueZ - Bluetooth protocol stack for Linux
> + *
> + * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
> + * Copyright (C) 2012 Texas Instruments, Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include <config.h>
> +#endif
> +
> +#include <gdbus.h>
> +#include <errno.h>
> +#include <bluetooth/uuid.h>
> +
> +#include "dbus-common.h"
> +#include "adapter.h"
> +#include "device.h"
> +#include "error.h"
> +#include "log.h"
> +#include "gattrib.h"
> +#include "attio.h"
> +#include "att.h"
> +#include "gatt.h"
> +#include "deviceinfo.h"
> +#include "glib-compat.h"
It seems that you are including some unnecessary headers.
> +
> +struct deviceinfo {
> + DBusConnection *conn; /* The connection to the bus */
> + struct btd_device *dev; /* Device reference */
> + GAttrib *attrib; /* GATT connection */
attrib is not being used.
> +};
> +
> +static GSList *deviceinfoservers = NULL;
> +
> +static gint cmp_device(gconstpointer a, gconstpointer b)
> +{
> + const struct deviceinfo *d = a;
> + const struct btd_device *dev = b;
> +
> + if (dev == d->dev)
> + return 0;
> +
> + return -1;
> +}
> +
> +int deviceinfo_register(DBusConnection *connection, struct btd_device *device,
> + struct att_primary *dattr)
> +{
> + const gchar *path = device_get_path(device);
path is not used
> + struct deviceinfo *d;
> +
> + d = g_new0(struct deviceinfo, 1);
> + d->conn = dbus_connection_ref(connection);
> + d->dev = btd_device_ref(device);
> +
> + deviceinfoservers = g_slist_prepend(deviceinfoservers, d);
> +
> + return 0;
> +}
> +
> +void deviceinfo_unregister(struct btd_device *device)
> +{
> + struct deviceinfo *d;
> + GSList *l;
> +
> + l = g_slist_find_custom(deviceinfoservers, device, cmp_device);
> + if (l == NULL)
> + return;
> +
> + d = l->data;
> + deviceinfoservers = g_slist_remove(deviceinfoservers, d);
memory leak(deviceinfo)
> +}
> diff --git a/deviceinfo/deviceinfo.h b/deviceinfo/deviceinfo.h
> new file mode 100644
> index 0000000..eedcf8f
> --- /dev/null
> +++ b/deviceinfo/deviceinfo.h
> @@ -0,0 +1,26 @@
> +/*
> + *
> + * BlueZ - Bluetooth protocol stack for Linux
> + *
> + * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
> + * Copyright (C) 2012 Texas Instruments, Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + */
> +
> +int deviceinfo_register(DBusConnection *connection, struct btd_device *device,
> + struct att_primary *tattr);
> +void deviceinfo_unregister(struct btd_device *device);
> diff --git a/deviceinfo/main.c b/deviceinfo/main.c
> new file mode 100644
> index 0000000..3bf0e9c
> --- /dev/null
> +++ b/deviceinfo/main.c
> @@ -0,0 +1,60 @@
> +/*
> + *
> + * BlueZ - Bluetooth protocol stack for Linux
> + *
> + * Copyright (C) 2011 GSyC/LibreSoft, Universidad Rey Juan Carlos.
> + * Copyright (C) 2012 Texas Instruments, Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include <config.h>
> +#endif
> +
> +#include <glib.h>
> +#include <errno.h>
> +#include <gdbus.h>
> +
> +#include "plugin.h"
> +#include "manager.h"
> +
> +static DBusConnection *connection = NULL;
> +
> +static int deviceinfo_init(void)
> +{
> + connection = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
DBusConnection reference is not being used. IMO, DIS doesn't need to
expose D-Bus properties or methods.
BR,
Claudio
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH 1/2] Added DeviceInformation GATT Client
2012-03-12 0:29 ` Claudio Takahasi
@ 2012-03-12 7:40 ` Ganir, Chen
0 siblings, 0 replies; 7+ messages in thread
From: Ganir, Chen @ 2012-03-12 7:40 UTC (permalink / raw)
To: Claudio Takahasi, chen.ganir@gmail.com; +Cc: linux-bluetooth@vger.kernel.org
Q2xhdWRpbw0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogbGludXgt
Ymx1ZXRvb3RoLW93bmVyQHZnZXIua2VybmVsLm9yZyBbbWFpbHRvOmxpbnV4LWJsdWV0b290aC0N
Cj4gb3duZXJAdmdlci5rZXJuZWwub3JnXSBPbiBCZWhhbGYgT2YgQ2xhdWRpbyBUYWthaGFzaQ0K
PiBTZW50OiBNb25kYXksIE1hcmNoIDEyLCAyMDEyIDI6MjkgQU0NCj4gVG86IGNoZW4uZ2FuaXJA
Z21haWwuY29tDQo+IENjOiBsaW51eC1ibHVldG9vdGhAdmdlci5rZXJuZWwub3JnDQo+IFN1Ympl
Y3Q6IFJlOiBbUEFUQ0ggMS8yXSBBZGRlZCBEZXZpY2VJbmZvcm1hdGlvbiBHQVRUIENsaWVudA0K
PiANCj4gSGkgQ2hlbiBHYW5pcjoNCj4gDQo+IE9uIFN1biwgTWFyIDExLCAyMDEyIGF0IDk6NTcg
QU0sICA8Y2hlbi5nYW5pckBnbWFpbC5jb20+IHdyb3RlOg0KPiA+IEZyb206IENoZW4gR2FuaXIg
PGNoZW4uZ2FuaXJAdGkuY29tPg0KPiA+DQo+ID4gQWRkZWQgdGhlIERldmljZUluZm9ybWF0aW9u
IEdBVFQgQ2xpZW50IHBsdWdpbiBza2VsZXRvbi4NCj4gPiAtLS0NCj4gPiDCoE1ha2VmaWxlLmFt
IMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqA3ICsrKysNCj4gPiDCoGFjaW5jbHVkZS5tNCDCoCDC
oCDCoCDCoCDCoCDCoHwgwqAgwqA2ICsrKw0KPiA+IMKgZGV2aWNlaW5mby9kZXZpY2VpbmZvLmMg
fCDCoCA4OQ0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN
Cj4gPiDCoGRldmljZWluZm8vZGV2aWNlaW5mby5oIHwgwqAgMjYgKysrKysrKysrKysrKw0KPiA+
IMKgZGV2aWNlaW5mby9tYWluLmMgwqAgwqAgwqAgfCDCoCA2MCArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysNCj4gPiDCoGRldmljZWluZm8vbWFuYWdlci5jIMKgIMKgfCDCoCA5Mg0KPiAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+IMKgZGV2
aWNlaW5mby9tYW5hZ2VyLmggwqAgwqB8IMKgIDI1ICsrKysrKysrKysrKysNCj4gPiDCoDcgZmls
ZXMgY2hhbmdlZCwgMzA1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pDQo+ID4gwqBjcmVh
dGUgbW9kZSAxMDA2NDQgZGV2aWNlaW5mby9kZXZpY2VpbmZvLmMNCj4gPiDCoGNyZWF0ZSBtb2Rl
IDEwMDY0NCBkZXZpY2VpbmZvL2RldmljZWluZm8uaA0KPiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0
IGRldmljZWluZm8vbWFpbi5jDQo+ID4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZGV2aWNlaW5mby9t
YW5hZ2VyLmMNCj4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkZXZpY2VpbmZvL21hbmFnZXIuaA0K
PiA+DQo+ID4gZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0NCj4gPiBpbmRl
eCBiZDU4N2ViLi5jMmM2MWQ2IDEwMDY0NA0KPiA+IC0tLSBhL01ha2VmaWxlLmFtDQo+ID4gKysr
IGIvTWFrZWZpbGUuYW0NCj4gPiBAQCAtMjQ0LDYgKzI0NCwxMyBAQCBidWlsdGluX3NvdXJjZXMg
Kz0gdGhlcm1vbWV0ZXIvbWFpbi5jIFwNCj4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoHRoZXJtb21ldGVyL3RoZXJtb21ldGVyLmgNCj4gdGhlcm1vbWV0ZXIvdGhlcm1vbWV0
ZXIuYw0KPiA+IMKgZW5kaWYNCj4gPg0KPiA+ICtpZiBERVZJQ0VJTkZPUExVR0lODQo+ID4gK2J1
aWx0aW5fbW9kdWxlcyArPSBkZXZpY2VpbmZvDQo+ID4gK2J1aWx0aW5fc291cmNlcyArPSBkZXZp
Y2VpbmZvL21haW4uYyBcDQo+ID4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBk
ZXZpY2VpbmZvL21hbmFnZXIuaCBkZXZpY2VpbmZvL21hbmFnZXIuYyBcDQo+ID4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXZpY2VpbmZvL2RldmljZWluZm8uaA0KPiBkZXZp
Y2VpbmZvL2RldmljZWluZm8uYw0KPiA+ICtlbmRpZg0KPiA+ICsNCj4gPiDCoGJ1aWx0aW5fbW9k
dWxlcyArPSBoY2lvcHMgbWdtdG9wcw0KPiA+IMKgYnVpbHRpbl9zb3VyY2VzICs9IHBsdWdpbnMv
aGNpb3BzLmMgcGx1Z2lucy9tZ210b3BzLmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9hY2luY2x1
ZGUubTQgYi9hY2luY2x1ZGUubTQNCj4gPiBpbmRleCBiMGY3OTBjLi4xNGI3YTRjIDEwMDY0NA0K
PiA+IC0tLSBhL2FjaW5jbHVkZS5tNA0KPiA+ICsrKyBiL2FjaW5jbHVkZS5tNA0KPiA+IEBAIC0y
MjAsNiArMjIwLDcgQEAgQUNfREVGVU4oW0FDX0FSR19CTFVFWl0sIFsNCj4gPiDCoCDCoCDCoCDC
oGRidXNvb2JfZW5hYmxlPW5vDQo+ID4gwqAgwqAgwqAgwqB3aWltb3RlX2VuYWJsZT1ubw0KPiA+
IMKgIMKgIMKgIMKgdGhlcm1vbWV0ZXJfZW5hYmxlPW5vDQo+ID4gKyDCoCDCoCDCoCBkZXZpY2Vp
bmZvX2VuYWJsZT1ubw0KPiA+DQo+ID4gwqAgwqAgwqAgwqBBQ19BUkdfRU5BQkxFKG9wdGltaXph
dGlvbiwgQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS0NCj4gb3B0aW1pemF0aW9uXSwgW2Rpc2Fi
bGUgY29kZSBvcHRpbWl6YXRpb25dKSwgWw0KPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgb3B0
aW1pemF0aW9uX2VuYWJsZT0ke2VuYWJsZXZhbH0NCj4gPiBAQCAtMzcyLDYgKzM3MywxMCBAQCBB
Q19ERUZVTihbQUNfQVJHX0JMVUVaXSwgWw0KPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGhl
cm1vbWV0ZXJfZW5hYmxlPSR7ZW5hYmxldmFsfQ0KPiA+IMKgIMKgIMKgIMKgXSkNCj4gPg0KPiA+
ICsgwqAgwqAgwqAgQUNfQVJHX0VOQUJMRShkZXZpY2VpbmZvLCBBQ19IRUxQX1NUUklORyhbLS1l
bmFibGUtDQo+IGRldmljZWluZm9dLCBbZW5hYmxlIGRldmljZWluZm8gcGx1Z2luXSksIFsNCj4g
PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRldmljZWluZm9fZW5hYmxlPSR7ZW5hYmxldmFsfQ0K
PiA+ICsgwqAgwqAgwqAgXSkNCj4gPiArDQo+ID4gwqAgwqAgwqAgwqBpZiAodGVzdCAiJHtmb3J0
aWZ5X2VuYWJsZX0iID0gInllcyIpOyB0aGVuDQo+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBD
RkxBR1M9IiRDRkxBR1MgLURfRk9SVElGWV9TT1VSQ0U9MiINCj4gPiDCoCDCoCDCoCDCoGZpDQo+
ID4gQEAgLTQyOSw0ICs0MzQsNSBAQCBBQ19ERUZVTihbQUNfQVJHX0JMVUVaXSwgWw0KPiA+IMKg
IMKgIMKgIMKgQU1fQ09ORElUSU9OQUwoREJVU09PQlBMVUdJTiwgdGVzdCAiJHtkYnVzb29iX2Vu
YWJsZX0iID0NCj4gInllcyIpDQo+ID4gwqAgwqAgwqAgwqBBTV9DT05ESVRJT05BTChXSUlNT1RF
UExVR0lOLCB0ZXN0ICIke3dpaW1vdGVfZW5hYmxlfSIgPQ0KPiAieWVzIikNCj4gPiDCoCDCoCDC
oCDCoEFNX0NPTkRJVElPTkFMKFRIRVJNT01FVEVSUExVR0lOLCB0ZXN0ICIke3RoZXJtb21ldGVy
X2VuYWJsZX0iDQo+ID0gInllcyIpDQo+ID4gKyDCoCDCoCDCoCBBTV9DT05ESVRJT05BTChERVZJ
Q0VJTkZPUExVR0lOLCB0ZXN0ICIke2RldmljZWluZm9fZW5hYmxlfSINCj4gPSAieWVzIikNCj4g
PiDCoF0pDQo+ID4gZGlmZiAtLWdpdCBhL2RldmljZWluZm8vZGV2aWNlaW5mby5jIGIvZGV2aWNl
aW5mby9kZXZpY2VpbmZvLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAw
MDAwMDAuLjMwOTIwZTMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZGV2aWNlaW5mby9k
ZXZpY2VpbmZvLmMNCj4gPiBAQCAtMCwwICsxLDg5IEBADQo+ID4gKy8qDQo+ID4gKyAqDQo+ID4g
KyAqIMKgQmx1ZVogLSBCbHVldG9vdGggcHJvdG9jb2wgc3RhY2sgZm9yIExpbnV4DQo+ID4gKyAq
DQo+ID4gKyAqIMKgQ29weXJpZ2h0IChDKSAyMDExIEdTeUMvTGlicmVTb2Z0LCBVbml2ZXJzaWRh
ZCBSZXkgSnVhbiBDYXJsb3MuDQo+ID4gKyAqIMKgQ29weXJpZ2h0IChDKSAyMDEyIFRleGFzIElu
c3RydW1lbnRzLCBJbmMuDQo+ID4gKyAqDQo+ID4gKyAqIMKgVGhpcyBwcm9ncmFtIGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KPiBtb2RpZnkNCj4gPiAr
ICogwqBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGFzDQo+IHB1Ymxpc2hlZCBieQ0KPiA+ICsgKiDCoHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsDQo+IG9yDQo+ID4gKyAqIMKgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gPiArICoNCj4gPiArICogwqBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwNCj4gPiArICogwqBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZg0KPiA+ICsgKiDCoE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gwqBTZWUgdGhlDQo+ID4gKyAqIMKgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gPiArICoNCj4gPiArICogwqBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMN
Cj4gTGljZW5zZQ0KPiA+ICsgKiDCoGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQo+ID4gKyAqIMKgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BDQo+IMKgMDIxMTAtMTMwMSDCoFVT
QQ0KPiA+ICsgKg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZmRlZiBIQVZFX0NPTkZJR19IDQo+
ID4gKyNpbmNsdWRlIDxjb25maWcuaD4NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjaW5jbHVk
ZSA8Z2RidXMuaD4NCj4gPiArI2luY2x1ZGUgPGVycm5vLmg+DQo+ID4gKyNpbmNsdWRlIDxibHVl
dG9vdGgvdXVpZC5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImRidXMtY29tbW9uLmgiDQo+ID4g
KyNpbmNsdWRlICJhZGFwdGVyLmgiDQo+ID4gKyNpbmNsdWRlICJkZXZpY2UuaCINCj4gPiArI2lu
Y2x1ZGUgImVycm9yLmgiDQo+ID4gKyNpbmNsdWRlICJsb2cuaCINCj4gPiArI2luY2x1ZGUgImdh
dHRyaWIuaCINCj4gPiArI2luY2x1ZGUgImF0dGlvLmgiDQo+ID4gKyNpbmNsdWRlICJhdHQuaCIN
Cj4gPiArI2luY2x1ZGUgImdhdHQuaCINCj4gPiArI2luY2x1ZGUgImRldmljZWluZm8uaCINCj4g
PiArI2luY2x1ZGUgImdsaWItY29tcGF0LmgiDQo+IA0KPiBJdCBzZWVtcyB0aGF0IHlvdSBhcmUg
aW5jbHVkaW5nIHNvbWUgdW5uZWNlc3NhcnkgaGVhZGVycy4NCg0KV2lsbCBjaGVjayB0aGF0IGFn
YWluLg0KDQo+IA0KPiA+ICsNCj4gPiArc3RydWN0IGRldmljZWluZm8gew0KPiA+ICsgwqAgwqAg
wqAgREJ1c0Nvbm5lY3Rpb24gwqAgwqAgwqAgwqAgwqAqY29ubjsgwqAgwqAgwqAgwqAgwqAvKiBU
aGUgY29ubmVjdGlvbiB0bw0KPiB0aGUgYnVzICovDQo+ID4gKyDCoCDCoCDCoCBzdHJ1Y3QgYnRk
X2RldmljZSDCoCDCoCDCoCAqZGV2OyDCoCDCoCDCoCDCoCDCoCAvKiBEZXZpY2UgcmVmZXJlbmNl
DQo+ICovDQo+ID4gKyDCoCDCoCDCoCBHQXR0cmliIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICph
dHRyaWI7IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLyogR0FUVA0KPiBjb25uZWN0aW9uICovDQo+
IA0KPiBhdHRyaWIgaXMgbm90IGJlaW5nIHVzZWQuDQoNCk5vdCB5ZXQsIHdpbGwgYmUgdXNlZCBs
YXRlci4gSSB3aWxsIHJlbW92ZSB0aGlzIGZvciBub3cuDQoNCj4gDQo+ID4gK307DQo+ID4gKw0K
PiA+ICtzdGF0aWMgR1NMaXN0ICpkZXZpY2VpbmZvc2VydmVycyA9IE5VTEw7DQo+ID4gKw0KPiA+
ICtzdGF0aWMgZ2ludCBjbXBfZGV2aWNlKGdjb25zdHBvaW50ZXIgYSwgZ2NvbnN0cG9pbnRlciBi
KQ0KPiA+ICt7DQo+ID4gKyDCoCDCoCDCoCBjb25zdCBzdHJ1Y3QgZGV2aWNlaW5mbyAqZCA9IGE7
DQo+ID4gKyDCoCDCoCDCoCBjb25zdCBzdHJ1Y3QgYnRkX2RldmljZSAqZGV2ID0gYjsNCj4gPiAr
DQo+ID4gKyDCoCDCoCDCoCBpZiAoZGV2ID09IGQtPmRldikNCj4gPiArIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArIMKgIMKgIMKgIHJldHVybiAtMTsNCj4gPiAr
fQ0KPiA+ICsNCj4gPiAraW50IGRldmljZWluZm9fcmVnaXN0ZXIoREJ1c0Nvbm5lY3Rpb24gKmNv
bm5lY3Rpb24sIHN0cnVjdA0KPiBidGRfZGV2aWNlICpkZXZpY2UsDQo+ID4gKyDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCBzdHJ1Y3QgYXR0X3ByaW1hcnkNCj4gKmRhdHRyKQ0KPiA+ICt7DQo+ID4gKyDCoCDCoCDCoCBj
b25zdCBnY2hhciAqcGF0aCA9IGRldmljZV9nZXRfcGF0aChkZXZpY2UpOw0KPiANCj4gcGF0aCBp
cyBub3QgdXNlZA0KDQpTdXJlLCB3aWxsIGZpeCB0aGF0IGFzIHdlbGwuDQoNCj4gDQo+ID4gKyDC
oCDCoCDCoCBzdHJ1Y3QgZGV2aWNlaW5mbyAqZDsNCj4gPiArDQo+ID4gKyDCoCDCoCDCoCBkID0g
Z19uZXcwKHN0cnVjdCBkZXZpY2VpbmZvLCAxKTsNCj4gPiArIMKgIMKgIMKgIGQtPmNvbm4gPSBk
YnVzX2Nvbm5lY3Rpb25fcmVmKGNvbm5lY3Rpb24pOw0KPiA+ICsgwqAgwqAgwqAgZC0+ZGV2ID0g
YnRkX2RldmljZV9yZWYoZGV2aWNlKTsNCj4gPiArDQo+ID4gKyDCoCDCoCDCoCBkZXZpY2VpbmZv
c2VydmVycyA9IGdfc2xpc3RfcHJlcGVuZChkZXZpY2VpbmZvc2VydmVycywgZCk7DQo+ID4gKw0K
PiA+ICsgwqAgwqAgwqAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgZGV2aWNl
aW5mb191bnJlZ2lzdGVyKHN0cnVjdCBidGRfZGV2aWNlICpkZXZpY2UpDQo+ID4gK3sNCj4gPiAr
IMKgIMKgIMKgIHN0cnVjdCBkZXZpY2VpbmZvICpkOw0KPiA+ICsgwqAgwqAgwqAgR1NMaXN0ICps
Ow0KPiA+ICsNCj4gPiArIMKgIMKgIMKgIGwgPSBnX3NsaXN0X2ZpbmRfY3VzdG9tKGRldmljZWlu
Zm9zZXJ2ZXJzLCBkZXZpY2UsDQo+IGNtcF9kZXZpY2UpOw0KPiA+ICsgwqAgwqAgwqAgaWYgKGwg
PT0gTlVMTCkNCj4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjsNCj4gPiArDQo+ID4g
KyDCoCDCoCDCoCBkID0gbC0+ZGF0YTsNCj4gPiArIMKgIMKgIMKgIGRldmljZWluZm9zZXJ2ZXJz
ID0gZ19zbGlzdF9yZW1vdmUoZGV2aWNlaW5mb3NlcnZlcnMsIGQpOw0KPiANCj4gbWVtb3J5IGxl
YWsoZGV2aWNlaW5mbykNCj4gDQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvZGV2aWNlaW5mby9k
ZXZpY2VpbmZvLmggYi9kZXZpY2VpbmZvL2RldmljZWluZm8uaA0KPiA+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uZWVkY2Y4Zg0KPiA+IC0tLSAvZGV2L251bGwNCj4g
PiArKysgYi9kZXZpY2VpbmZvL2RldmljZWluZm8uaA0KPiA+IEBAIC0wLDAgKzEsMjYgQEANCj4g
PiArLyoNCj4gPiArICoNCj4gPiArICogwqBCbHVlWiAtIEJsdWV0b290aCBwcm90b2NvbCBzdGFj
ayBmb3IgTGludXgNCj4gPiArICoNCj4gPiArICogwqBDb3B5cmlnaHQgKEMpIDIwMTEgR1N5Qy9M
aWJyZVNvZnQsIFVuaXZlcnNpZGFkIFJleSBKdWFuIENhcmxvcy4NCj4gPiArICogwqBDb3B5cmln
aHQgKEMpIDIwMTIgVGV4YXMgSW5zdHJ1bWVudHMsIEluYy4NCj4gPiArICoNCj4gPiArICogwqBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yDQo+IG1vZGlmeQ0KPiA+ICsgKiDCoGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgYXMNCj4gcHVibGlzaGVkIGJ5DQo+ID4gKyAqIMKgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwN
Cj4gb3INCj4gPiArICogwqAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPiA+
ICsgKg0KPiA+ICsgKiDCoFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiA+ICsgKiDCoGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4gKyAqIMKgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiDCoFNlZSB0aGUN
Cj4gPiArICogwqBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0K
PiA+ICsgKg0KPiA+ICsgKiDCoFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYw0KPiBMaWNlbnNlDQo+ID4gKyAqIMKgYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCj4gPiArICogwqBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEN
Cj4gwqAwMjExMC0xMzAxIMKgVVNBDQo+ID4gKyAqDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiAraW50
IGRldmljZWluZm9fcmVnaXN0ZXIoREJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdA0K
PiBidGRfZGV2aWNlICpkZXZpY2UsDQo+ID4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3QgYXR0X3ByaW1h
cnkNCj4gKnRhdHRyKTsNCj4gPiArdm9pZCBkZXZpY2VpbmZvX3VucmVnaXN0ZXIoc3RydWN0IGJ0
ZF9kZXZpY2UgKmRldmljZSk7DQo+ID4gZGlmZiAtLWdpdCBhL2RldmljZWluZm8vbWFpbi5jIGIv
ZGV2aWNlaW5mby9tYWluLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAw
MDAwMDAuLjNiZjBlOWMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZGV2aWNlaW5mby9t
YWluLmMNCj4gPiBAQCAtMCwwICsxLDYwIEBADQo+ID4gKy8qDQo+ID4gKyAqDQo+ID4gKyAqIMKg
Qmx1ZVogLSBCbHVldG9vdGggcHJvdG9jb2wgc3RhY2sgZm9yIExpbnV4DQo+ID4gKyAqDQo+ID4g
KyAqIMKgQ29weXJpZ2h0IChDKSAyMDExIEdTeUMvTGlicmVTb2Z0LCBVbml2ZXJzaWRhZCBSZXkg
SnVhbiBDYXJsb3MuDQo+ID4gKyAqIMKgQ29weXJpZ2h0IChDKSAyMDEyIFRleGFzIEluc3RydW1l
bnRzLCBJbmMuDQo+ID4gKyAqDQo+ID4gKyAqIMKgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KPiBtb2RpZnkNCj4gPiArICogwqBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzDQo+
IHB1Ymxpc2hlZCBieQ0KPiA+ICsgKiDCoHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsDQo+IG9yDQo+ID4gKyAqIMKgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gPiArICoNCj4gPiArICogwqBUaGlzIHByb2dy
YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4g
PiArICogwqBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZg0KPiA+ICsgKiDCoE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gwqBTZWUgdGhlDQo+ID4gKyAqIMKgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gPiArICoNCj4gPiArICogwqBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCj4gTGlj
ZW5zZQ0KPiA+ICsgKiDCoGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlDQo+ID4gKyAqIMKgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BDQo+IMKgMDIxMTAtMTMwMSDCoFVTQQ0KPiA+
ICsgKg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZmRlZiBIQVZFX0NPTkZJR19IDQo+ID4gKyNp
bmNsdWRlIDxjb25maWcuaD4NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8Z2xp
Yi5oPg0KPiA+ICsjaW5jbHVkZSA8ZXJybm8uaD4NCj4gPiArI2luY2x1ZGUgPGdkYnVzLmg+DQo+
ID4gKw0KPiA+ICsjaW5jbHVkZSAicGx1Z2luLmgiDQo+ID4gKyNpbmNsdWRlICJtYW5hZ2VyLmgi
DQo+ID4gKw0KPiA+ICtzdGF0aWMgREJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBOVUxMOw0K
PiA+ICsNCj4gPiArc3RhdGljIGludCBkZXZpY2VpbmZvX2luaXQodm9pZCkNCj4gPiArew0KPiA+
ICsgwqAgwqAgwqAgY29ubmVjdGlvbiA9IGRidXNfYnVzX2dldChEQlVTX0JVU19TWVNURU0sIE5V
TEwpOw0KPiANCj4gREJ1c0Nvbm5lY3Rpb24gcmVmZXJlbmNlIGlzIG5vdCBiZWluZyB1c2VkLiBJ
TU8sIERJUyBkb2Vzbid0IG5lZWQgdG8NCj4gZXhwb3NlIEQtQnVzIHByb3BlcnRpZXMgb3IgbWV0
aG9kcy4NCg0KQ29ycmVjdCwgd2UgZG8gbm90IG5lZWQgRC1CdXMgaGVyZSBhdCBhbGwuDQo+IA0K
PiBCUiwNCj4gQ2xhdWRpbw0KPiAtLQ0KPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDog
c2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtDQo+IGJsdWV0b290aCIgaW4NCj4gdGhl
IGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcNCj4gTW9yZSBt
YWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5o
dG1sDQoNClRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLiBJJ2xsIHNlbmQgYSBzZWNvbmQgdmVyc2lv
biBvZiB0aGUgcGF0Y2ggc2V0IGluIGEgbWludXRlIG9yIHR3by4NCg0KQ2hlbiBHYW5pcg0KVGV4
YXMgSW5zdHJ1bWVudHMNCg==
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH 0/2] DeviceInfo and BatteryService Clients
2012-03-11 18:17 ` [PATCH 0/2] DeviceInfo and BatteryService Clients Marcel Holtmann
@ 2012-03-13 12:08 ` Ganir, Chen
0 siblings, 0 replies; 7+ messages in thread
From: Ganir, Chen @ 2012-03-13 12:08 UTC (permalink / raw)
To: Marcel Holtmann, chen.ganir@gmail.com; +Cc: linux-bluetooth@vger.kernel.org
TWFyY2VsLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1hcmNlbCBI
b2x0bWFubiBbbWFpbHRvOm1hcmNlbEBob2x0bWFubi5vcmddDQo+IFNlbnQ6IFN1bmRheSwgTWFy
Y2ggMTEsIDIwMTIgODoxNyBQTQ0KPiBUbzogY2hlbi5nYW5pckBnbWFpbC5jb20NCj4gQ2M6IGxp
bnV4LWJsdWV0b290aEB2Z2VyLmtlcm5lbC5vcmc7IEdhbmlyLCBDaGVuDQo+IFN1YmplY3Q6IFJl
OiBbUEFUQ0ggMC8yXSBEZXZpY2VJbmZvIGFuZCBCYXR0ZXJ5U2VydmljZSBDbGllbnRzDQo+IA0K
PiBIaSBDaGVuLA0KPiANCj4gPiBBZGRpbmcgQmF0dGVyeSBTZXJ2aWNlIGNsaWVudCBhbmQgRGV2
aWNlIEluZm9ybWF0aW9uIFNlcnZpY2UgQ2xpZW50DQo+IHN0dWJzLg0KPiA+IE1vcmUgbG9naWMg
d2lsbCBiZSBhZGRlZCB0byB0aGVzZSBzZXJ2aWNlIGFzIGRldmVsb3BtZW50IGNvbnRpbnVlcy4N
Cj4gPiBUbyBlbmFibGUgdGhlIG5ldyBmZWF0dXJlcyB5b3Ugd2lsbCBuZWVkIHRvIHVzZToNCj4g
PiAtLWVuYWJsZS1iYXR0ZXJ5c3RhdGUNCj4gPiAtLWVuYWJsZS1kZXZpY2VpbmZvDQo+IA0KPiBJ
IHJhdGhlciBoYXZlIHVzIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgY29uZmlndXJlIG9wdGlvbnMu
IERvIHdlIHJlYWxseQ0KPiBuZWVkIHRoZXNlPyBJIHdvdWxkIGp1c3QgZW5hYmxlIHRoZW0gYWxs
IGJ5IGRlZmF1bHQuDQo+IA0KVGhvc2Ugc2VydmljZXMgYXJlIHN0YW5kLWFsb25lIHNlcnZpY2Vz
LCB3aGljaCBhcmUgcmVxdWlyZWQgYnkgbXVsdGlwbGUgcHJvZmlsZXMuIFNldHRpbmcgdGhlbSBp
biBhIHNpbmdsZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciwgc2VlbXMgd3JvbmcsIHNpbmNlIHdl
IG1heSBuZWVkIHRvIGNoYW5nZSB0aGF0IHNvb24gd2hlbiBhbm90aGVyIHByb2ZpbGUgdXNpbmcg
dGhlbSB3aWxsIGJlIGltcGxlbWVudGVkLiBGb3Igbm93LCB0aGV5IGFyZSB1c2VkIGluIHRoZSBI
T0dQLCBidXQgbWF5IGJlIHVzZWQNCmluIG90aGVyIHByb2ZpbGVzIGFzIHdlbGwuIEkgYmVsaWV2
ZSB0aG9zZSBzaG91bGQgYmUgbGVmdCBhcyBzZXBhcmF0ZSBwbHVnaW5zLiANCg0KPiBSZWdhcmRz
DQo+IA0KPiBNYXJjZWwNCj4gDQoNClRoYW5rcywNCkNoZW4gR2FuaXIuDQoNCg==
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-03-13 12:08 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-11 12:57 [PATCH 0/2] DeviceInfo and BatteryService Clients chen.ganir
2012-03-11 12:57 ` [PATCH 1/2] Added DeviceInformation GATT Client chen.ganir
2012-03-12 0:29 ` Claudio Takahasi
2012-03-12 7:40 ` Ganir, Chen
2012-03-11 12:57 ` [PATCH 2/2] Added Battery Service " chen.ganir
2012-03-11 18:17 ` [PATCH 0/2] DeviceInfo and BatteryService Clients Marcel Holtmann
2012-03-13 12:08 ` Ganir, Chen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).