From 58aa93f3cc4656dfcacd326667015be051c5bd14 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Tue, 8 Aug 2023 16:47:55 -0700 Subject: [PATCH] eir: Add eir_get_service_data This adds eir_get_service_data function which can be used to get a specific service data. --- src/eir.c | 22 ++++++++++++++++++++++ src/eir.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/src/eir.c b/src/eir.c index 52152c0d7..3e3ee2863 100644 --- a/src/eir.c +++ b/src/eir.c @@ -602,3 +602,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; +} diff --git a/src/eir.h b/src/eir.h index a4bf5fbd3..f34291952 100644 --- a/src/eir.h +++ b/src/eir.h @@ -12,6 +12,7 @@ #include #include "lib/sdp.h" +#include "lib/uuid.h" #define EIR_FLAGS 0x01 /* flags */ #define EIR_UUID16_SOME 0x02 /* 16-bit UUID, more available */ @@ -99,3 +100,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); -- 2.47.3