eir: Add eir_get_service_data
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 8 Aug 2023 23:47:55 +0000 (16:47 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 5 Jan 2024 13:34:03 +0000 (19:04 +0530)
This adds eir_get_service_data function which can be used to get a
specific service data.

src/eir.c
src/eir.h

index a5e8ad3..cacbee6 100755 (executable)
--- a/src/eir.c
+++ b/src/eir.c
@@ -634,3 +634,25 @@ int eir_create_oob(const bdaddr_t *addr, const char *name, uint32_t cod,
 
        return eir_total_len;
 }
+
+static int match_sd_uuid(const void *data, const void *user_data)
+{
+       const struct eir_sd *sd = data;
+       const char *uuid = user_data;
+
+       return strcmp(sd->uuid, uuid);
+}
+
+struct eir_sd *eir_get_service_data(struct eir_data *eir, const char *uuid)
+{
+       GSList *l;
+
+       if (!eir || !uuid)
+               return NULL;
+
+       l = g_slist_find_custom(eir->sd_list, uuid, match_sd_uuid);
+       if (!l)
+               return NULL;
+
+       return l->data;
+}
index f64303b..2e3e125 100755 (executable)
--- a/src/eir.h
+++ b/src/eir.h
@@ -12,6 +12,7 @@
 #include <glib.h>
 
 #include "lib/sdp.h"
+#include "lib/uuid.h"
 
 #define EIR_FLAGS                   0x01  /* flags */
 #define EIR_UUID16_SOME             0x02  /* 16-bit UUID, more available */
@@ -103,3 +104,4 @@ int eir_create_oob(const bdaddr_t *addr, const char *name, uint32_t cod,
                        uint16_t did_vendor, uint16_t did_product,
                        uint16_t did_version, uint16_t did_source,
                        sdp_list_t *uuids, uint8_t *data);
+struct eir_sd *eir_get_service_data(struct eir_data *eir, const char *uuid);