diff options
Diffstat (limited to 'src/BLERemoteCharacteristic.h')
-rw-r--r-- | src/BLERemoteCharacteristic.h | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/BLERemoteCharacteristic.h b/src/BLERemoteCharacteristic.h index b5b22b6..6f23f49 100644 --- a/src/BLERemoteCharacteristic.h +++ b/src/BLERemoteCharacteristic.h @@ -15,49 +15,71 @@ #include <esp_gattc_api.h> #include "BLERemoteService.h" +#include "BLERemoteDescriptor.h" #include "BLEUUID.h" #include "FreeRTOS.h" class BLERemoteService; +class BLERemoteDescriptor; /** * @brief A model of a remote %BLE characteristic. */ class BLERemoteCharacteristic { public: - BLERemoteCharacteristic(esp_gatt_id_t charId, esp_gatt_char_prop_t charProp, BLERemoteService* pRemoteService); + ~BLERemoteCharacteristic(); // Public member functions + bool canBroadcast(); + bool canIndicate(); + bool canNotify(); + bool canRead(); + bool canWrite(); + bool canWriteNoResponse(); + BLERemoteDescriptor* getDescriptor(BLEUUID uuid); + std::map<std::string, BLERemoteDescriptor *>* getDescriptors(); + uint16_t getHandle(); BLEUUID getUUID(); std::string readValue(void); uint8_t readUInt8(void); uint16_t readUInt16(void); uint32_t readUInt32(void); - void registerForNotify(void (*notifyCallback)(BLERemoteCharacteristic *pBLERemoteCharacteristic, uint8_t *pData, size_t length, bool isNotify)); + void registerForNotify(void (*notifyCallback)(BLERemoteCharacteristic* pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify)); void writeValue(uint8_t* data, size_t length, bool response = false); void writeValue(std::string newValue, bool response = false); void writeValue(uint8_t newValue, bool response = false); std::string toString(void); private: + BLERemoteCharacteristic(uint16_t handle, BLEUUID uuid, esp_gatt_char_prop_t charProp, BLERemoteService* pRemoteService); friend class BLEClient; friend class BLERemoteService; + friend class BLERemoteDescriptor; // Private member functions void gattClientEventHandler( esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, - esp_ble_gattc_cb_param_t *evtParam); + esp_ble_gattc_cb_param_t* evtParam); + + + BLERemoteService* getRemoteService(); + void removeDescriptors(); + void retrieveDescriptors(); // Private properties - esp_gatt_id_t m_charId; + BLEUUID m_uuid; esp_gatt_char_prop_t m_charProp; + uint16_t m_handle; BLERemoteService* m_pRemoteService; FreeRTOS::Semaphore m_semaphoreReadCharEvt = FreeRTOS::Semaphore("ReadCharEvt"); FreeRTOS::Semaphore m_semaphoreRegForNotifyEvt = FreeRTOS::Semaphore("RegForNotifyEvt"); FreeRTOS::Semaphore m_semaphoreWriteCharEvt = FreeRTOS::Semaphore("WriteCharEvt"); std::string m_value; - void (*m_notifyCallback)(BLERemoteCharacteristic *pBLERemoteCharacteristic, uint8_t *pData, size_t length, bool isNotify); + void (*m_notifyCallback)(BLERemoteCharacteristic* pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify); + + // We maintain a map of descriptors owned by this characteristic keyed by a string representation of the UUID. + std::map<std::string, BLERemoteDescriptor*> m_descriptorMap; }; // BLERemoteCharacteristic #endif /* CONFIG_BT_ENABLED */ #endif /* COMPONENTS_CPP_UTILS_BLEREMOTECHARACTERISTIC_H_ */ |