mirror of
https://github.com/h2zero/esp-nimble-cpp.git
synced 2024-11-22 05:00:55 +01:00
Add generic advertisement 'type' functions (#575)
This commit is contained in:
parent
4e65ce5d32
commit
22fb1ab801
2 changed files with 28 additions and 0 deletions
|
@ -203,6 +203,24 @@ std::string NimBLEAdvertisedDevice::getURI() {
|
||||||
return "";
|
return "";
|
||||||
} // getURI
|
} // getURI
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the data from any type available in the advertisement
|
||||||
|
* @param [in] type The advertised data type BLE_HS_ADV_TYPE
|
||||||
|
* @return The data available under the type `type`
|
||||||
|
*/
|
||||||
|
std::string NimBLEAdvertisedDevice::getPayloadByType(uint16_t type) {
|
||||||
|
size_t data_loc = 0;
|
||||||
|
|
||||||
|
if(findAdvField(type, 0, &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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
} // getPayloadByType
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the advertised name.
|
* @brief Get the advertised name.
|
||||||
|
@ -556,6 +574,14 @@ bool NimBLEAdvertisedDevice::haveURI() {
|
||||||
return findAdvField(BLE_HS_ADV_TYPE_URI) > 0;
|
return findAdvField(BLE_HS_ADV_TYPE_URI) > 0;
|
||||||
} // haveURI
|
} // haveURI
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Does this advertisement have a adv type `type`?
|
||||||
|
* @return True if there is a `type` present.
|
||||||
|
*/
|
||||||
|
bool NimBLEAdvertisedDevice::haveType(uint16_t type) {
|
||||||
|
return findAdvField(type) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Does the advertisement contain a target address?
|
* @brief Does the advertisement contain a target address?
|
||||||
|
|
|
@ -53,6 +53,7 @@ public:
|
||||||
uint8_t getManufacturerDataCount();
|
uint8_t getManufacturerDataCount();
|
||||||
std::string getManufacturerData(uint8_t index = 0);
|
std::string getManufacturerData(uint8_t index = 0);
|
||||||
std::string getURI();
|
std::string getURI();
|
||||||
|
std::string getPayloadByType(uint16_t type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A template to convert the service data to <type\>.
|
* @brief A template to convert the service data to <type\>.
|
||||||
|
@ -134,6 +135,7 @@ public:
|
||||||
bool haveAdvInterval();
|
bool haveAdvInterval();
|
||||||
bool haveTargetAddress();
|
bool haveTargetAddress();
|
||||||
bool haveURI();
|
bool haveURI();
|
||||||
|
bool haveType(uint16_t type);
|
||||||
std::string toString();
|
std::string toString();
|
||||||
bool isConnectable();
|
bool isConnectable();
|
||||||
bool isLegacyAdvertisement();
|
bool isLegacyAdvertisement();
|
||||||
|
|
Loading…
Reference in a new issue