From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> This adds bt_ad_length which can be used to return the current size of the bt_ad data. --- src/shared/ad.c | 11 ++++++++--- src/shared/ad.h | 2 ++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/shared/ad.c b/src/shared/ad.c index f3fb428e25c6..d08ce7af9b85 100644 --- a/src/shared/ad.c +++ b/src/shared/ad.c @@ -520,9 +520,14 @@ static size_t data_length(struct queue *queue) return length; } -static size_t calculate_length(struct bt_ad *ad) +size_t bt_ad_length(struct bt_ad *ad) { - size_t length = 0; + size_t length; + + if (!ad) + return 0; + + length = 0; length += uuid_list_length(ad->service_uuids); @@ -698,7 +703,7 @@ uint8_t *bt_ad_generate(struct bt_ad *ad, size_t *length) if (!ad) return NULL; - *length = calculate_length(ad); + *length = bt_ad_length(ad); if (*length > ad->max_len) return NULL; diff --git a/src/shared/ad.h b/src/shared/ad.h index 11900706f9ed..90cc82de9d63 100644 --- a/src/shared/ad.h +++ b/src/shared/ad.h @@ -108,6 +108,8 @@ struct bt_ad *bt_ad_ref(struct bt_ad *ad); void bt_ad_unref(struct bt_ad *ad); +size_t bt_ad_length(struct bt_ad *ad); + uint8_t *bt_ad_generate(struct bt_ad *ad, size_t *length); bool bt_ad_is_empty(struct bt_ad *ad); -- 2.45.0