Re: [PATCH v2 BlueZ] tools/gatt-service: Add reference implementation for Included Service

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

 



Hi,
On Tue, May 15, 2018 at 8:39 PM Avichal Agarwal <avichal.a@xxxxxxxxxxx>
wrote:




> ping
> -----Original Message-----
> From: linux-bluetooth-owner@xxxxxxxxxxxxxxx [mailto:
linux-bluetooth-owner@xxxxxxxxxxxxxxx] On Behalf Of Avichal Agarwal
> Sent: Tuesday, March 20, 2018 6:23 PM
> To: linux-bluetooth@xxxxxxxxxxxxxxx
> Cc: sachin.dev@xxxxxxxxxxx; anupam.r@xxxxxxxxxxx; Avichal Agarwal
> Subject: [PATCH v2 BlueZ] tools/gatt-service: Add reference
implementation for Included Service

> Created two new primary services which will act as includes services for
first  primary service
> ---
>   tools/gatt-service.c | 94
++++++++++++++++++++++++++++++++++++++++++++++++++--
>   1 file changed, 92 insertions(+), 2 deletions(-)

> diff --git a/tools/gatt-service.c b/tools/gatt-service.c index
6bd5576..2ce8a1f 100644
> --- a/tools/gatt-service.c
> +++ b/tools/gatt-service.c
> @@ -47,9 +47,17 @@
>   /* Immediate Alert Service UUID */
>   #define IAS_UUID
  "00001802-0000-1000-8000-00805f9b34fb"
>   #define ALERT_LEVEL_CHR_UUID
  "00002a06-0000-1000-8000-00805f9b34fb"
> +#define IAS_UUID1   "A00B"
> +#define IAS_UUID2   "A00C"
> +#define IAS_UUID3   "A00D"
> +#define ALERT_LEVEL_CHR_UUID1
  "00002b06-0000-1000-8000-00805f9b34fb"
> +#define ALERT_LEVEL_CHR_UUID2
  "00002c07-0000-1000-8000-00805f9b34fb"
> +/* Random UUID for testing purpose */

>   /* Random UUID for testing purpose */
>   #define READ_WRITE_DESCRIPTOR_UUID
  "8260c653-1a54-426b-9e36-e84c238bc669"
> +#define READ_WRITE_DESCRIPTOR_UUID1
"0260c653-1a54-426b-9e36-e84c238bc669"
> +#define READ_WRITE_DESCRIPTOR_UUID2 "FFFF"

>   static GMainLoop *main_loop;
>   static GSList *services;
> @@ -335,18 +343,45 @@ static gboolean service_get_includes(const
GDBusPropertyTable *property,
>                                           DBusMessageIter *iter, void
*user_data)  {
>           const char *uuid = user_data;
> +        char service_path[100] = {0,};
> +        DBusMessageIter array;
> +        char *p = NULL;

> +        snprintf(service_path, 100, "/service3");
>           printf("Get Includes: %s\n", uuid);

> +        p = service_path;
> +
> +        printf("Includes path: %s\n", p);
> +
> +        dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
> +                        DBUS_TYPE_OBJECT_PATH_AS_STRING, &array);
> +
> +        dbus_message_iter_append_basic(&array, DBUS_TYPE_OBJECT_PATH,
> +                                                        &p);
> +
> +        snprintf(service_path, 100, "/service2");
> +        p = service_path;
> +        printf("Get Includes: %s\n", p);
> +
> +        dbus_message_iter_append_basic(&array, DBUS_TYPE_OBJECT_PATH,
> +                                                        &p);
> +        dbus_message_iter_close_container(iter, &array);
> +
> +
>           return TRUE;
> +
>   }

> +
>   static gboolean service_exist_includes(const GDBusPropertyTable
*property,
>                                                           void *user_data)
>   {
>           const char *uuid = user_data;

>           printf("Exist Includes: %s\n", uuid);
> +        if (strncmp(uuid, "00001802", 8) == 0)
> +                return TRUE;

>           return FALSE;
>   }
> @@ -624,7 +659,7 @@ static char *register_service(const char *uuid)
>           return path;
>   }

> -static void create_services()
> +static void create_services_one(void)
>   {
>           char *service_path;
>           uint8_t level = 0;
> @@ -651,6 +686,59 @@ static void create_services()
>           printf("Registered service: %s\n", service_path);  }

> +
> +static void create_services_two(void)
> +{
> +        char *service_path;
> +        uint8_t level = 0;
> +
> +        service_path = register_service(IAS_UUID2);
> +        if (!service_path)
> +                return;
> +
> +        if (!register_characteristic(ALERT_LEVEL_CHR_UUID2,
> +                                                &level, sizeof(level),
> +                                                ias_alert_level_props,
> +
  READ_WRITE_DESCRIPTOR_UUID2,
> +                                                desc_props,
> +                                                service_path)) {
> +                printf("Couldn't register Alert Level characteristic
(IAS)\n");
> +                g_dbus_unregister_interface(connection, service_path,
> +
  GATT_SERVICE_IFACE);
> +                g_free(service_path);
> +                return;
> +        }
> +        services = g_slist_prepend(services, service_path);
> +        printf("Registered service: %s\n", service_path); }
> +
> +static void create_services_three(void) {
> +        char *service_path;
> +        uint8_t level = 0;
> +
> +        service_path = register_service(IAS_UUID3);
> +        if (!service_path)
> +                return;
> +
> +        if (!register_characteristic(ALERT_LEVEL_CHR_UUID1,
> +                                                &level, sizeof(level),
> +                                                ias_alert_level_props,
> +
  READ_WRITE_DESCRIPTOR_UUID1,
> +                                                desc_props,
> +                                                service_path)) {
> +                printf("Couldn't register Alert Level characteristic
(IAS)\n");
> +                g_dbus_unregister_interface(connection, service_path,
> +
  GATT_SERVICE_IFACE);
> +                g_free(service_path);
> +                return;
> +        }
> +
> +
> +        services = g_slist_prepend(services, service_path);
> +        printf("Registered service: %s\n", service_path); }
> +
>   static void register_app_reply(DBusMessage *reply, void *user_data)  {
>           DBusError derr;
> @@ -789,7 +877,9 @@ int main(int argc, char *argv[])
>           printf("gatt-service unique name: %s\n",
>                                   dbus_bus_get_unique_name(connection));

> -        create_services();
> +        create_services_one();
> +        create_services_two();
> +        create_services_three();

>           client = g_dbus_client_new(connection, "org.bluez", "/");

> --
> 2.7.4

Applied, thanks.
--
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