Build advertising data. More...
#include <AdvertisingDataBuilder.h>
Public Member Functions | |
AdvertisingDataBuilder (mbed::Span< uint8_t > buffer) | |
Advertising data needs a user-provided buffer to store the data. More... | |
AdvertisingDataBuilder (uint8_t *buffer, size_t buffer_size) | |
Advertising data needs a user provided buffer to store the data. More... | |
mbed::Span< const uint8_t > | getAdvertisingData () const |
Get the subspan of the buffer containing valid data. More... | |
ble_error_t | addData (adv_data_type_t advDataType, mbed::Span< const uint8_t > fieldData) |
Add a new field into the payload. More... | |
ble_error_t | replaceData (adv_data_type_t advDataType, mbed::Span< const uint8_t > fieldData) |
Replace a new field into the payload. More... | |
ble_error_t | appendData (adv_data_type_t advDataType, mbed::Span< const uint8_t > fieldData) |
Append data to an existing field in the payload. More... | |
ble_error_t | removeData (adv_data_type_t advDataType) |
Remove existing date of given type. More... | |
ble_error_t | addOrReplaceData (adv_data_type_t advDataType, mbed::Span< const uint8_t > fieldData) |
Adds a new field into the payload. More... | |
ble_error_t | addOrAppendData (adv_data_type_t advDataType, mbed::Span< const uint8_t > fieldData) |
Adds a new field into the payload. More... | |
void | clear () |
Clears the advertising data payload. More... | |
ble_error_t | setAppearance (adv_data_appearance_t appearance) |
Add device appearance in the advertising payload. More... | |
ble_error_t | setFlags (adv_data_flags_t flags=adv_data_flags_t::default_flags) |
Add BLE flags in the advertising payload. More... | |
ble_error_t | setTxPowerAdvertised (advertising_power_t txPower) |
Add the advertising TX in the advertising payload. More... | |
ble_error_t | setName (const char *name, bool complete=true) |
Add device name to the advertising payload. More... | |
ble_error_t | setManufacturerSpecificData (mbed::Span< const uint8_t > data) |
Add manufacturer-specific data to the advertising payload. More... | |
ble_error_t | setAdvertisingInterval (adv_interval_t interval) |
Add advertising interval to the payload. More... | |
ble_error_t | setConnectionIntervalPreference (conn_interval_t min, conn_interval_t max) |
Add connection interval preferences to the payload. More... | |
ble_error_t | setServiceData (UUID service, mbed::Span< const uint8_t > data) |
Add service data data to the advertising payload. More... | |
ble_error_t | setLocalServiceList (mbed::Span< const UUID > data, bool complete=true) |
Add local service IDs to the advertising payload. More... | |
ble_error_t | setRequestedServiceList (mbed::Span< const UUID > data) |
Add a list of UUIDs of solicited services. More... | |
ble_error_t | getData (mbed::Span< const uint8_t > &data, adv_data_type_t advDataType) |
Return a span of data containing the the type of data requested. More... | |
Build advertising data.
The builder accepts an array of bytes in input and returns the result of the construction with getAdvertisingData().
Definition at line 48 of file AdvertisingDataBuilder.h.
AdvertisingDataBuilder | ( | mbed::Span< uint8_t > | buffer | ) |
Advertising data needs a user-provided buffer to store the data.
buffer | Buffer used to store the data. |
AdvertisingDataBuilder | ( | uint8_t * | buffer, |
size_t | buffer_size | ||
) |
Advertising data needs a user provided buffer to store the data.
buffer | Pointer to buffer to be used for storing advertising data. |
buffer_size | Size of the buffer. |
ble_error_t addData | ( | adv_data_type_t | advDataType, |
mbed::Span< const uint8_t > | fieldData | ||
) |
Add a new field into the payload.
Returns an error if type is already present.
[in] | advDataType | The type of the field to add. |
[in] | fieldData | Span of data to add. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_OPERATION_NOT_PERMITTED | if data type already present. |
BLE_ERROR_INVALID_PARAM | if size of data is too big too fit in an individual data field. |
ble_error_t addOrAppendData | ( | adv_data_type_t | advDataType, |
mbed::Span< const uint8_t > | fieldData | ||
) |
Adds a new field into the payload.
If the supplied advertising data type is already present in the advertising payload, then the value is replaced.
[in] | advDataType | The type of the field to add. |
[in] | fieldData | Span of data to add. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_INVALID_PARAM | if size of data is too big too fit in an individual data field. |
ble_error_t addOrReplaceData | ( | adv_data_type_t | advDataType, |
mbed::Span< const uint8_t > | fieldData | ||
) |
Adds a new field into the payload.
If the supplied advertising data type is already present in the advertising payload, then the value is replaced.
[in] | advDataType | The type of the field to add. |
[in] | fieldData | Span of data to add. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_INVALID_PARAM | if size of data is too big too fit in an individual data field. |
ble_error_t appendData | ( | adv_data_type_t | advDataType, |
mbed::Span< const uint8_t > | fieldData | ||
) |
Append data to an existing field in the payload.
Will fail if type is not already present.
[in] | advDataType | The type of the field to add. |
[in] | fieldData | Span of data to add. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_NOT_FOUND | if data type not present. |
BLE_ERROR_INVALID_PARAM | if size of data is too big too fit in an individual data field. |
void clear | ( | ) |
Clears the advertising data payload.
mbed::Span<const uint8_t> getAdvertisingData | ( | ) | const |
Get the subspan of the buffer containing valid data.
ble_error_t getData | ( | mbed::Span< const uint8_t > & | data, |
adv_data_type_t | advDataType | ||
) |
Return a span of data containing the the type of data requested.
[out] | data | Span used to return the requested data. |
[in] | advDataType | Data type to return. |
ble_error_t removeData | ( | adv_data_type_t | advDataType | ) |
Remove existing date of given type.
Will return an error if type is not present.
[in] | advDataType | The type of the field to remove. |
ble_error_t replaceData | ( | adv_data_type_t | advDataType, |
mbed::Span< const uint8_t > | fieldData | ||
) |
Replace a new field into the payload.
Will fail if type is not already present.
[in] | advDataType | The type of the field to add. |
[in] | fieldData | Span of data to add. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_NOT_FOUND | if data type not present. |
BLE_ERROR_INVALID_PARAM | if size of data is too big too fit in an individual data field. |
ble_error_t setAdvertisingInterval | ( | adv_interval_t | interval | ) |
Add advertising interval to the payload.
This field can only carry 2 bytes.
interval | Interval to advertise. Cannot be larger than 0xFFFF. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_INVALID_PARAM | if interval value outside of valid range. |
ble_error_t setAppearance | ( | adv_data_appearance_t | appearance | ) |
Add device appearance in the advertising payload.
[in] | appearance | The appearance to advertise. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
ble_error_t setConnectionIntervalPreference | ( | conn_interval_t | min, |
conn_interval_t | max | ||
) |
Add connection interval preferences to the payload.
min | Minimum connection interval to advertise. |
max | Maximum connection interval to advertise. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
ble_error_t setFlags | ( | adv_data_flags_t | flags = adv_data_flags_t::default_flags | ) |
Add BLE flags in the advertising payload.
[in] | flags | Bitfield describing the capability of the device. See allowed flags in Flags_t. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
ble_error_t setLocalServiceList | ( | mbed::Span< const UUID > | data, |
bool | complete = true |
||
) |
Add local service IDs to the advertising payload.
If the data can't fit, no modification will take place.
[in] | data | New data to be added. |
[in] | complete | True if this is a complete list. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_INVALID_PARAM | if number of UUIDs of any one type is too high. |
ble_error_t setManufacturerSpecificData | ( | mbed::Span< const uint8_t > | data | ) |
Add manufacturer-specific data to the advertising payload.
[in] | data | New data to be added. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_INVALID_PARAM | if size of data is too big too fit in an individual data field or the data is too small (must contain 2 bytes of manufacturer ID) |
ble_error_t setName | ( | const char * | name, |
bool | complete = true |
||
) |
Add device name to the advertising payload.
[in] | name | Null terminated string containing the name. |
[in] | complete | Complete local name if true, otherwise |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_INVALID_PARAM | if size of data is too big too fit in an individual data field. |
ble_error_t setRequestedServiceList | ( | mbed::Span< const UUID > | data | ) |
Add a list of UUIDs of solicited services.
[in] | data | List of 128 or 16 bit service UUIDs. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_INVALID_PARAM | if number of UUIDs of any one type is too high. |
ble_error_t setServiceData | ( | UUID | service, |
mbed::Span< const uint8_t > | data | ||
) |
Add service data data to the advertising payload.
[in] | service | UUID of the service. |
[in] | data | New data to be added. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |
BLE_ERROR_INVALID_PARAM | if size of data is too big too fit in an individual data field. |
ble_error_t setTxPowerAdvertised | ( | advertising_power_t | txPower | ) |
Add the advertising TX in the advertising payload.
[in] | txPower | Transmission power level in dB. |
BLE_ERROR_NONE | on success. |
BLE_ERROR_BUFFER_OVERFLOW | if buffer is too small to contain the new data. |