Diff between 7b3aa05323f29de5325a0f2fa52f44d3e85b3637 and 58aa93f3cc4656dfcacd326667015be051c5bd14

Changed Files

File Additions Deletions Status
src/eir.c +22 -0 modified
src/eir.h +2 -0 modified

Full Patch

diff --git a/src/eir.c b/src/eir.c
index 52152c0..3e3ee28 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 a4bf5fb..f342919 100644
--- 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 */
@@ -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);