Skip to content

Commit

Permalink
Add index parameter for multiple manufacturer data sets. (#506)
Browse files Browse the repository at this point in the history
Adds an index parameter to NimBLEAdvertisedDevice::getManufacturerData to allow for selecting from multiple instances in the advertisements.
Adds NimBLEAdvertisedDevice::getManufacturerDataCount to get the number of manufacturer data sets present in the advertised data.
  • Loading branch information
h2zero committed Apr 6, 2023
1 parent df7f667 commit 28c9eb5
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
17 changes: 14 additions & 3 deletions src/NimBLEAdvertisedDevice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,12 +159,14 @@ uint16_t NimBLEAdvertisedDevice::getMaxInterval() {

/**
* @brief Get the manufacturer data.
* @return The manufacturer data of the advertised device.
* @param [in] index The index of the of the manufacturer data set to get.
* @return The manufacturer data.
*/
std::string NimBLEAdvertisedDevice::getManufacturerData() {
std::string NimBLEAdvertisedDevice::getManufacturerData(uint8_t index) {
size_t data_loc = 0;
index++;

if(findAdvField(BLE_HS_ADV_TYPE_MFG_DATA, 0, &data_loc) > 0) {
if(findAdvField(BLE_HS_ADV_TYPE_MFG_DATA, index, &data_loc) > 0) {
ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc];
if(field->length > 1) {
return std::string((char*)field->value, field->length - 1);
Expand All @@ -175,6 +177,15 @@ std::string NimBLEAdvertisedDevice::getManufacturerData() {
} // getManufacturerData


/**
* @brief Get the count of manufacturer data sets.
* @return The number of manufacturer data sets.
*/
uint8_t NimBLEAdvertisedDevice::getManufacturerDataCount() {
return findAdvField(BLE_HS_ADV_TYPE_MFG_DATA);
} // getManufacturerDataCount


/**
* @brief Get the URI from the advertisement.
* @return The URI data.
Expand Down
3 changes: 2 additions & 1 deletion src/NimBLEAdvertisedDevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ class NimBLEAdvertisedDevice {
uint16_t getAdvInterval();
uint16_t getMinInterval();
uint16_t getMaxInterval();
std::string getManufacturerData();
uint8_t getManufacturerDataCount();
std::string getManufacturerData(uint8_t index = 0);
std::string getURI();

/**
Expand Down

0 comments on commit 28c9eb5

Please sign in to comment.