summaryrefslogtreecommitdiff
path: root/sensor/patchedBLE/src/BLEAdvertisedDevice.h
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2018-08-03 12:23:17 +0100
committerdakkar <dakkar@thenautilus.net>2018-08-03 12:23:17 +0100
commitbb00c2da73b6ab8837f50c9f889ee151f8abc036 (patch)
tree3922eb826386260568ccaa1da7056c141f752a97 /sensor/patchedBLE/src/BLEAdvertisedDevice.h
parentdon't print from callback, there's races (diff)
parentUpload of 0.4.16 (diff)
downloadthermostat-bb00c2da73b6ab8837f50c9f889ee151f8abc036.tar.gz
thermostat-bb00c2da73b6ab8837f50c9f889ee151f8abc036.tar.bz2
thermostat-bb00c2da73b6ab8837f50c9f889ee151f8abc036.zip
Add 'sensor/patchedBLE/' from commit '7951347ed68313d75c367e1f2cce763cb56d1eb2'
git-subtree-dir: sensor/patchedBLE git-subtree-mainline: 27e209cf58abeda1dc110777f99a98804a13fdbf git-subtree-split: 7951347ed68313d75c367e1f2cce763cb56d1eb2
Diffstat (limited to 'sensor/patchedBLE/src/BLEAdvertisedDevice.h')
-rw-r--r--sensor/patchedBLE/src/BLEAdvertisedDevice.h120
1 files changed, 120 insertions, 0 deletions
diff --git a/sensor/patchedBLE/src/BLEAdvertisedDevice.h b/sensor/patchedBLE/src/BLEAdvertisedDevice.h
new file mode 100644
index 0000000..a3b1e6e
--- /dev/null
+++ b/sensor/patchedBLE/src/BLEAdvertisedDevice.h
@@ -0,0 +1,120 @@
+/*
+ * BLEAdvertisedDevice.h
+ *
+ * Created on: Jul 3, 2017
+ * Author: kolban
+ */
+
+#ifndef COMPONENTS_CPP_UTILS_BLEADVERTISEDDEVICE_H_
+#define COMPONENTS_CPP_UTILS_BLEADVERTISEDDEVICE_H_
+#include "sdkconfig.h"
+#if defined(CONFIG_BT_ENABLED)
+#include <esp_gattc_api.h>
+
+#include <map>
+
+#include "BLEAddress.h"
+#include "BLEScan.h"
+#include "BLEUUID.h"
+
+
+class BLEScan;
+/**
+ * @brief A representation of a %BLE advertised device found by a scan.
+ *
+ * When we perform a %BLE scan, the result will be a set of devices that are advertising. This
+ * class provides a model of a detected device.
+ */
+class BLEAdvertisedDevice {
+public:
+ BLEAdvertisedDevice();
+
+ BLEAddress getAddress();
+ uint16_t getAppearance();
+ std::string getManufacturerData();
+ std::string getName();
+ int getRSSI();
+ BLEScan* getScan();
+ std::string getServiceData();
+ BLEUUID getServiceDataUUID();
+ BLEUUID getServiceUUID();
+ int8_t getTXPower();
+ uint8_t* getPayload();
+
+
+ bool isAdvertisingService(BLEUUID uuid);
+ bool haveAppearance();
+ bool haveManufacturerData();
+ bool haveName();
+ bool haveRSSI();
+ bool haveServiceData();
+ bool haveServiceUUID();
+ bool haveTXPower();
+
+ std::string toString();
+
+private:
+ friend class BLEScan;
+
+ void parseAdvertisement(uint8_t* payload);
+ void setAddress(BLEAddress address);
+ void setAdFlag(uint8_t adFlag);
+ void setAdvertizementResult(uint8_t* payload);
+ void setAppearance(uint16_t appearance);
+ void setManufacturerData(std::string manufacturerData);
+ void setName(std::string name);
+ void setRSSI(int rssi);
+ void setScan(BLEScan* pScan);
+ void setServiceData(std::string data);
+ void setServiceDataUUID(BLEUUID uuid);
+ void setServiceUUID(const char* serviceUUID);
+ void setServiceUUID(BLEUUID serviceUUID);
+ void setTXPower(int8_t txPower);
+ void setPayload(uint8_t* payload);
+
+
+ bool m_haveAppearance;
+ bool m_haveManufacturerData;
+ bool m_haveName;
+ bool m_haveRSSI;
+ bool m_haveServiceData;
+ bool m_haveServiceUUID;
+ bool m_haveTXPower;
+
+
+ BLEAddress m_address = BLEAddress((uint8_t*)"\0\0\0\0\0\0");
+ uint8_t m_adFlag;
+ uint16_t m_appearance;
+ int m_deviceType;
+ std::string m_manufacturerData;
+ std::string m_name;
+ BLEScan* m_pScan;
+ int m_rssi;
+ std::vector<BLEUUID> m_serviceUUIDs;
+ int8_t m_txPower;
+ std::string m_serviceData;
+ BLEUUID m_serviceDataUUID;
+ uint8_t* m_payload;
+};
+
+/**
+ * @brief A callback handler for callbacks associated device scanning.
+ *
+ * When we are performing a scan as a %BLE client, we may wish to know when a new device that is advertising
+ * has been found. This class can be sub-classed and registered such that when a scan is performed and
+ * a new advertised device has been found, we will be called back to be notified.
+ */
+class BLEAdvertisedDeviceCallbacks {
+public:
+ virtual ~BLEAdvertisedDeviceCallbacks() {}
+ /**
+ * @brief Called when a new scan result is detected.
+ *
+ * As we are scanning, we will find new devices. When found, this call back is invoked with a reference to the
+ * device that was found. During any individual scan, a device will only be detected one time.
+ */
+ virtual void onResult(BLEAdvertisedDevice advertisedDevice) = 0;
+};
+
+#endif /* CONFIG_BT_ENABLED */
+#endif /* COMPONENTS_CPP_UTILS_BLEADVERTISEDDEVICE_H_ */