summaryrefslogtreecommitdiff
path: root/src/BLEAdvertisedDevice.cpp
diff options
context:
space:
mode:
authorNeil Kolban <kolban1@kolban.com>2017-11-21 09:51:03 -0600
committerNeil Kolban <kolban1@kolban.com>2017-11-21 09:51:03 -0600
commit4a781e01832176d61af010669b8c362f5a777768 (patch)
tree6a7a16309d61c4728512f5eb632d3ad565288c36 /src/BLEAdvertisedDevice.cpp
parentFixes for #121 (diff)
downloadthermostat-4a781e01832176d61af010669b8c362f5a777768.tar.gz
thermostat-4a781e01832176d61af010669b8c362f5a777768.tar.bz2
thermostat-4a781e01832176d61af010669b8c362f5a777768.zip
Updates 2017-11-21 0950
Diffstat (limited to 'src/BLEAdvertisedDevice.cpp')
-rw-r--r--src/BLEAdvertisedDevice.cpp47
1 files changed, 28 insertions, 19 deletions
diff --git a/src/BLEAdvertisedDevice.cpp b/src/BLEAdvertisedDevice.cpp
index 83869cf..4347526 100644
--- a/src/BLEAdvertisedDevice.cpp
+++ b/src/BLEAdvertisedDevice.cpp
@@ -108,10 +108,21 @@ BLEScan* BLEAdvertisedDevice::getScan() {
* @brief Get the Service UUID.
* @return The Service UUID of the advertised device.
*/
-BLEUUID BLEAdvertisedDevice::getServiceUUID() {
- return m_serviceUUID;
+BLEUUID BLEAdvertisedDevice::getServiceUUID() { //TODO Remove it eventually, is no longer useful
+ return m_serviceUUIDs[0];
} // getServiceUUID
+/**
+ * @brief Check advertised serviced for existence required UUID
+ * @return Return true if service is advertised
+ */
+bool BLEAdvertisedDevice::isAdvertisingService(BLEUUID uuid){
+ for (int i = 0; i < m_serviceUUIDs.size(); ++i) {
+ if(m_serviceUUIDs[i].equals(uuid))
+ return true;
+ }
+ return false;
+}
/**
* @brief Get the TX Power.
@@ -198,7 +209,7 @@ void BLEAdvertisedDevice::parseAdvertisement(uint8_t* payload) {
payload++; // Skip to type
sizeConsumed += 1 + length; // increase the size consumed.
- if (length != 0) { // A length of 0 indicate that we have reached the end.
+ if (length != 0) { // A length of 0 indicates that we have reached the end.
ad_type = *payload;
payload++;
length--;
@@ -231,23 +242,19 @@ void BLEAdvertisedDevice::parseAdvertisement(uint8_t* payload) {
break;
} // ESP_BLE_AD_TYPE_FLAG
- case ESP_BLE_AD_TYPE_16SRV_CMPL: { // Adv Data Type: 0x03
- setServiceUUID(BLEUUID(*reinterpret_cast<uint16_t*>(payload)));
- break;
- } // ESP_BLE_AD_TYPE_16SRV_CMPL
-
+ case ESP_BLE_AD_TYPE_16SRV_CMPL:
case ESP_BLE_AD_TYPE_16SRV_PART: { // Adv Data Type: 0x02
- setServiceUUID(BLEUUID(*reinterpret_cast<uint16_t*>(payload)));
+ for (int var = 0; var < length/2; ++var) {
+ setServiceUUID(BLEUUID(*reinterpret_cast<uint16_t*>(payload+var*2)));
+ }
break;
} // ESP_BLE_AD_TYPE_16SRV_PART
- case ESP_BLE_AD_TYPE_32SRV_CMPL: { // Adv Data Type: 0x05
- setServiceUUID(BLEUUID(*reinterpret_cast<uint32_t*>(payload)));
- break;
- } // ESP_BLE_AD_TYPE_32SRV_CMPL
-
+ case ESP_BLE_AD_TYPE_32SRV_CMPL:
case ESP_BLE_AD_TYPE_32SRV_PART: { // Adv Data Type: 0x04
- setServiceUUID(BLEUUID(*reinterpret_cast<uint32_t*>(payload)));
+ for (int var = 0; var < length/4; ++var) {
+ setServiceUUID(BLEUUID(*reinterpret_cast<uint32_t*>(payload+var*4)));
+ }
break;
} // ESP_BLE_AD_TYPE_32SRV_PART
@@ -355,23 +362,25 @@ void BLEAdvertisedDevice::setScan(BLEScan* pScan) {
m_pScan = pScan;
} // setScan
+
/**
* @brief Set the Service UUID for this device.
* @param [in] serviceUUID The discovered serviceUUID
*/
void BLEAdvertisedDevice::setServiceUUID(const char* serviceUUID) {
return setServiceUUID(BLEUUID(serviceUUID));
-} // setRSSI
+} // setServiceUUID
+
/**
* @brief Set the Service UUID for this device.
* @param [in] serviceUUID The discovered serviceUUID
*/
void BLEAdvertisedDevice::setServiceUUID(BLEUUID serviceUUID) {
- m_serviceUUID = serviceUUID;
+ m_serviceUUIDs.push_back(serviceUUID);
m_haveServiceUUID = true;
- ESP_LOGD(LOG_TAG, "- setServiceUUID(): serviceUUID: %s", serviceUUID.toString().c_str());
-} // setRSSI
+ ESP_LOGD(LOG_TAG, "- addServiceUUID(): serviceUUID: %s", serviceUUID.toString().c_str());
+} // setServiceUUID
/**