summaryrefslogtreecommitdiff
path: root/sensor/patchedBLE/src/BLEService.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/BLEService.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/BLEService.h')
-rw-r--r--sensor/patchedBLE/src/BLEService.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/sensor/patchedBLE/src/BLEService.h b/sensor/patchedBLE/src/BLEService.h
new file mode 100644
index 0000000..93b4b2c
--- /dev/null
+++ b/sensor/patchedBLE/src/BLEService.h
@@ -0,0 +1,104 @@
+/*
+ * BLEService.h
+ *
+ * Created on: Mar 25, 2017
+ * Author: kolban
+ */
+
+#ifndef COMPONENTS_CPP_UTILS_BLESERVICE_H_
+#define COMPONENTS_CPP_UTILS_BLESERVICE_H_
+#include "sdkconfig.h"
+#if defined(CONFIG_BT_ENABLED)
+
+#include <esp_gatts_api.h>
+
+#include "BLECharacteristic.h"
+#include "BLEServer.h"
+#include "BLEUUID.h"
+#include "FreeRTOS.h"
+
+class BLEServer;
+
+/**
+ * @brief A data mapping used to manage the set of %BLE characteristics known to the server.
+ */
+class BLECharacteristicMap {
+public:
+ void setByUUID(BLECharacteristic* pCharacteristic, const char* uuid);
+ void setByUUID(BLECharacteristic* pCharacteristic, BLEUUID uuid);
+ void setByHandle(uint16_t handle, BLECharacteristic* pCharacteristic);
+ BLECharacteristic* getByUUID(const char* uuid);
+ BLECharacteristic* getByUUID(BLEUUID uuid);
+ BLECharacteristic* getByHandle(uint16_t handle);
+ BLECharacteristic* getFirst();
+ BLECharacteristic* getNext();
+ std::string toString();
+ void handleGATTServerEvent(
+ esp_gatts_cb_event_t event,
+ esp_gatt_if_t gatts_if,
+ esp_ble_gatts_cb_param_t* param);
+
+
+private:
+ std::map<BLECharacteristic*, std::string> m_uuidMap;
+ std::map<uint16_t, BLECharacteristic*> m_handleMap;
+ std::map<BLECharacteristic*, std::string>::iterator m_iterator;
+};
+
+
+/**
+ * @brief The model of a %BLE service.
+ *
+ */
+class BLEService {
+public:
+ void addCharacteristic(BLECharacteristic* pCharacteristic);
+ BLECharacteristic* createCharacteristic(const char* uuid, uint32_t properties);
+ BLECharacteristic* createCharacteristic(BLEUUID uuid, uint32_t properties);
+ void dump();
+ void executeCreate(BLEServer* pServer);
+ void executeDelete();
+ BLECharacteristic* getCharacteristic(const char* uuid);
+ BLECharacteristic* getCharacteristic(BLEUUID uuid);
+ BLEUUID getUUID();
+ BLEServer* getServer();
+ void start();
+ void stop();
+ std::string toString();
+ uint16_t getHandle();
+ uint8_t m_id = 0;
+
+private:
+ BLEService(const char* uuid, uint32_t numHandles);
+ BLEService(BLEUUID uuid, uint32_t numHandles);
+ friend class BLEServer;
+ friend class BLEServiceMap;
+ friend class BLEDescriptor;
+ friend class BLECharacteristic;
+ friend class BLEDevice;
+
+ BLECharacteristicMap m_characteristicMap;
+ uint16_t m_handle;
+ BLECharacteristic* m_lastCreatedCharacteristic;
+ BLEServer* m_pServer;
+ BLEUUID m_uuid;
+
+ FreeRTOS::Semaphore m_semaphoreCreateEvt = FreeRTOS::Semaphore("CreateEvt");
+ FreeRTOS::Semaphore m_semaphoreDeleteEvt = FreeRTOS::Semaphore("DeleteEvt");
+ FreeRTOS::Semaphore m_semaphoreStartEvt = FreeRTOS::Semaphore("StartEvt");
+ FreeRTOS::Semaphore m_semaphoreStopEvt = FreeRTOS::Semaphore("StopEvt");
+
+ uint32_t m_numHandles;
+
+ BLECharacteristic* getLastCreatedCharacteristic();
+ void handleGATTServerEvent(
+ esp_gatts_cb_event_t event,
+ esp_gatt_if_t gatts_if,
+ esp_ble_gatts_cb_param_t* param);
+ void setHandle(uint16_t handle);
+ //void setService(esp_gatt_srvc_id_t srvc_id);
+}; // BLEService
+
+
+#endif // CONFIG_BT_ENABLED
+#endif /* COMPONENTS_CPP_UTILS_BLESERVICE_H_ */