summaryrefslogtreecommitdiff
path: root/src/BLERemoteCharacteristic.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/BLERemoteCharacteristic.h')
-rw-r--r--src/BLERemoteCharacteristic.h32
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_ */