[PATCH v3 09/18] eir: Add support for creating EIR with CoD field
From: Szymon Janc <hidden>
Date: 2012-09-21 12:36:26
Subsystem:
the rest · Maintainer:
Linus Torvalds
This will be used to create EIR to be send over OOB channel. --- src/eir.c | 18 +++++++++++++++++- src/eir.h | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/eir.c b/src/eir.c
index 0ef18e2..46dde5a 100644
--- a/src/eir.c
+++ b/src/eir.c@@ -280,7 +280,7 @@ static void eir_generate_uuid128(GSList *list, uint8_t *ptr, uint16_t *eir_len) } } -void eir_create(const char *name, int8_t tx_power, +void eir_create(const char *name, int8_t tx_power, uint32_t cod, uint8_t *hash, uint8_t *randomizer, uint16_t did_vendor, uint16_t did_product, uint16_t did_version, uint16_t did_source,
@@ -294,6 +294,22 @@ void eir_create(const char *name, int8_t tx_power, gboolean truncated = FALSE; size_t name_len; + if (cod > 0) { + uint8_t class[3]; + + class[0] = (uint8_t) cod; + class[1] = (uint8_t) (cod >> 8); + class[2] = (uint8_t) (cod >> 16); + + *ptr++ = 4; + *ptr++ = EIR_CLASS_OF_DEV; + + memcpy(ptr, class, sizeof(class)); + ptr += sizeof(class); + + eir_len += sizeof(class) + 2; + } + if (hash) { *ptr++ = 17; *ptr++ = EIR_SSP_HASH;
diff --git a/src/eir.h b/src/eir.h
index 844c162..1c7a603 100644
--- a/src/eir.h
+++ b/src/eir.h@@ -58,7 +58,7 @@ struct eir_data { void eir_data_free(struct eir_data *eir); int eir_parse(struct eir_data *eir, uint8_t *eir_data, uint8_t eir_len); int eir_parse_oob(struct eir_data *eir, uint8_t *eir_data, uint16_t eir_len); -void eir_create(const char *name, int8_t tx_power, +void eir_create(const char *name, int8_t tx_power, uint32_t cod, uint8_t *hash, uint8_t *randomizer, uint16_t did_vendor, uint16_t did_product, uint16_t did_version, uint16_t did_source,
--
1.7.9.5