Re: [PATCH 1/9] Load device driver if thermometer service attribute appears in GATT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Santiago,

On Mon, Sep 19, 2011 at 4:52 AM, Santiago Carot-Nemesio
<sancane@xxxxxxxxx> wrote:
> ---
>  thermometer/manager.c     |   25 ++++++++++++++++++++++++-
>  thermometer/thermometer.c |    5 ++++-
>  thermometer/thermometer.h |    3 ++-
>  3 files changed, 30 insertions(+), 3 deletions(-)
>
> diff --git a/thermometer/manager.c b/thermometer/manager.c
> index 08f0e0a..0062ea1 100644
> --- a/thermometer/manager.c
> +++ b/thermometer/manager.c
> @@ -21,19 +21,42 @@
>  */
>
>  #include <gdbus.h>
> +#include <bluetooth/uuid.h>
>
>  #include "adapter.h"
>  #include "device.h"
> +#include "att.h"
>  #include "thermometer.h"
>  #include "manager.h"
>
> +#define HEALTH_THERMOMETER_SVC_UUID    "1809"
>  #define HEALTH_THERMOMETER_UUID                "00001809-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 thermometer_driver_probe(struct btd_device *device, GSList *uuids)
>  {
> -       return thermometer_register(connection, device);
> +       struct att_primary *tattr;
> +       GSList *l, *primaries;
> +
> +       primaries = btd_device_get_primaries(device);
> +
> +       l = g_slist_find_custom(primaries, HEALTH_THERMOMETER_SVC_UUID,
> +                                                       primary_uuid_cmp);

I think this is incorrect. You should compare against the 128-bit
UUID, not the 16-bit one. I.e. use HEALTH_THERMOMETER_UUID here.

> +       if (!l)
> +               return -1;
> +
> +       tattr = l->data;
> +
> +       return thermometer_register(connection, device, tattr);
>  }
>
>  static void thermometer_driver_remove(struct btd_device *device)
> diff --git a/thermometer/thermometer.c b/thermometer/thermometer.c
> index 3cd821a..027ae02 100644
> --- a/thermometer/thermometer.c
> +++ b/thermometer/thermometer.c
> @@ -21,12 +21,15 @@
>  */
>
>  #include <gdbus.h>
> +#include <bluetooth/uuid.h>
>
>  #include "adapter.h"
>  #include "device.h"
> +#include "att.h"
>  #include "thermometer.h"
>
> -int thermometer_register(DBusConnection *connection, struct btd_device *device)
> +int thermometer_register(DBusConnection *connection, struct btd_device *device,
> +                                               struct att_primary *tattr)
>  {
>        /* TODO: Register Health Thermometer Interface */
>        return 0;
> diff --git a/thermometer/thermometer.h b/thermometer/thermometer.h
> index 0937444..298c9ad 100644
> --- a/thermometer/thermometer.h
> +++ b/thermometer/thermometer.h
> @@ -20,5 +20,6 @@
>  *
>  */
>
> -int thermometer_register(DBusConnection *connection, struct btd_device *device);
> +int thermometer_register(DBusConnection *connection, struct btd_device *device,
> +                                               struct att_primary *tattr);
>  void thermometer_unregister(struct btd_device *device);
> --
> 1.7.6.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



-- 
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux