summaryrefslogtreecommitdiff
path: root/sensor/patchedBLE/src/BLE2902.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sensor/patchedBLE/src/BLE2902.cpp')
-rw-r--r--sensor/patchedBLE/src/BLE2902.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/sensor/patchedBLE/src/BLE2902.cpp b/sensor/patchedBLE/src/BLE2902.cpp
new file mode 100644
index 0000000..23d9c77
--- /dev/null
+++ b/sensor/patchedBLE/src/BLE2902.cpp
@@ -0,0 +1,62 @@
+/*
+ * BLE2902.cpp
+ *
+ * Created on: Jun 25, 2017
+ * Author: kolban
+ */
+
+/*
+ * See also:
+ * https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.descriptor.gatt.client_characteristic_configuration.xml
+ */
+#include "sdkconfig.h"
+#if defined(CONFIG_BT_ENABLED)
+
+#include "BLE2902.h"
+
+BLE2902::BLE2902() : BLEDescriptor(BLEUUID((uint16_t) 0x2902)) {
+ uint8_t data[2] = { 0, 0 };
+ setValue(data, 2);
+} // BLE2902
+
+
+/**
+ * @brief Get the notifications value.
+ * @return The notifications value. True if notifications are enabled and false if not.
+ */
+bool BLE2902::getNotifications() {
+ return (getValue()[0] & (1 << 0)) != 0;
+} // getNotifications
+
+
+/**
+ * @brief Get the indications value.
+ * @return The indications value. True if indications are enabled and false if not.
+ */
+bool BLE2902::getIndications() {
+ return (getValue()[0] & (1 << 1)) != 0;
+} // getIndications
+
+
+/**
+ * @brief Set the indications flag.
+ * @param [in] flag The indications flag.
+ */
+void BLE2902::setIndications(bool flag) {
+ uint8_t *pValue = getValue();
+ if (flag) pValue[0] |= 1 << 1;
+ else pValue[0] &= ~(1 << 1);
+} // setIndications
+
+
+/**
+ * @brief Set the notifications flag.
+ * @param [in] flag The notifications flag.
+ */
+void BLE2902::setNotifications(bool flag) {
+ uint8_t *pValue = getValue();
+ if (flag) pValue[0] |= 1 << 0;
+ else pValue[0] &= ~(1 << 0);
+} // setNotifications
+
+#endif