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