Diff between d08600bbcf9a6208e88cf056ce921212cac16e42 and f52cc3072cf8c38550164496ad7e8106888b4bd9

Changed Files

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

Full Patch

diff --git a/src/eir.c b/src/eir.c
index 5e0e96a..e4554e8 100644
--- a/src/eir.c
+++ b/src/eir.c
@@ -333,3 +333,28 @@ void eir_create(const char *name, int8_t tx_power, uint16_t did_vendor,
 	if (eir_len <= HCI_MAX_EIR_LENGTH - 2)
 		eir_generate_uuid128(uuids, ptr, &eir_len);
 }
+
+gboolean eir_has_complete_name(uint8_t *data, size_t len)
+{
+	uint8_t field_len;
+	size_t parsed;
+
+	for (parsed = 0; parsed < len - 1; parsed += field_len) {
+		field_len = data[0];
+
+		if (field_len == 0)
+			break;
+
+		parsed += field_len + 1;
+
+		if (parsed > len)
+			break;
+
+		if (data[1] == EIR_NAME_COMPLETE)
+			return TRUE;
+
+		data += field_len + 1;
+	}
+
+	return FALSE;
+}
diff --git a/src/eir.h b/src/eir.h
index 8842790..47c2258 100644
--- a/src/eir.h
+++ b/src/eir.h
@@ -39,3 +39,5 @@ int eir_parse(struct eir_data *eir, uint8_t *eir_data, uint8_t eir_len);
 void eir_create(const char *name, int8_t tx_power, uint16_t did_vendor,
 			uint16_t did_product, uint16_t did_version,
 			GSList *uuids, uint8_t *data);
+
+gboolean eir_has_complete_name(uint8_t *data, size_t len);