summaryrefslogtreecommitdiff
path: root/sensor/patchedBLE/src/BLEAdvertising.h
diff options
context:
space:
mode:
Diffstat (limited to 'sensor/patchedBLE/src/BLEAdvertising.h')
-rw-r--r--sensor/patchedBLE/src/BLEAdvertising.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/sensor/patchedBLE/src/BLEAdvertising.h b/sensor/patchedBLE/src/BLEAdvertising.h
new file mode 100644
index 0000000..e316529
--- /dev/null
+++ b/sensor/patchedBLE/src/BLEAdvertising.h
@@ -0,0 +1,68 @@
+/*
+ * BLEAdvertising.h
+ *
+ * Created on: Jun 21, 2017
+ * Author: kolban
+ */
+
+#ifndef COMPONENTS_CPP_UTILS_BLEADVERTISING_H_
+#define COMPONENTS_CPP_UTILS_BLEADVERTISING_H_
+#include "sdkconfig.h"
+#if defined(CONFIG_BT_ENABLED)
+#include <esp_gap_ble_api.h>
+#include "BLEUUID.h"
+#include <vector>
+
+/**
+ * @brief Advertisement data set by the programmer to be published by the %BLE server.
+ */
+class BLEAdvertisementData {
+ // Only a subset of the possible BLE architected advertisement fields are currently exposed. Others will
+ // be exposed on demand/request or as time permits.
+ //
+public:
+ void setAppearance(uint16_t appearance);
+ void setCompleteServices(BLEUUID uuid);
+ void setFlags(uint8_t);
+ void setManufacturerData(std::string data);
+ void setName(std::string name);
+ void setPartialServices(BLEUUID uuid);
+ void setServiceData(BLEUUID uuid, std::string data);
+ void setShortName(std::string name);
+ void addData(std::string data); // Add data to the payload.
+ std::string getPayload(); // Retrieve the current advert payload.
+
+private:
+ friend class BLEAdvertising;
+ std::string m_payload; // The payload of the advertisement.
+}; // BLEAdvertisementData
+
+
+/**
+ * @brief Perform and manage %BLE advertising.
+ *
+ * A %BLE server will want to perform advertising in order to make itself known to %BLE clients.
+ */
+class BLEAdvertising {
+public:
+ BLEAdvertising();
+ void addServiceUUID(BLEUUID serviceUUID);
+ void addServiceUUID(const char* serviceUUID);
+ void start();
+ void stop();
+ void setAppearance(uint16_t appearance);
+ void setMaxInterval(uint16_t maxinterval);
+ void setMinInterval(uint16_t mininterval);
+ void setAdvertisementData(BLEAdvertisementData& advertisementData);
+ void setScanFilter(bool scanRequertWhitelistOnly, bool connectWhitelistOnly);
+ void setScanResponseData(BLEAdvertisementData& advertisementData);
+
+private:
+ esp_ble_adv_data_t m_advData;
+ esp_ble_adv_params_t m_advParams;
+ std::vector<BLEUUID> m_serviceUUIDs;
+ bool m_customAdvData; // Are we using custom advertising data?
+ bool m_customScanResponseData; // Are we using custom scan response data?
+};
+#endif /* CONFIG_BT_ENABLED */
+#endif /* COMPONENTS_CPP_UTILS_BLEADVERTISING_H_ */