aboutsummaryrefslogtreecommitdiffstats
path: root/arduino/libraries/Bluefruit52Lib/src/BLEClientCharacteristic.h
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2019-02-28 17:04:22 -0500
committerClyne Sullivan <tullivan99@gmail.com>2019-02-28 17:04:22 -0500
commitd6869d1ec4bd24cd2c3eafa534f0849b25ec5607 (patch)
tree79e54ed27b39c31864895535d11399708d5a45c0 /arduino/libraries/Bluefruit52Lib/src/BLEClientCharacteristic.h
parent614ee97bf3a2270c413527a7f35c54cbecd9e601 (diff)
added basic code
Diffstat (limited to 'arduino/libraries/Bluefruit52Lib/src/BLEClientCharacteristic.h')
-rwxr-xr-xarduino/libraries/Bluefruit52Lib/src/BLEClientCharacteristic.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/arduino/libraries/Bluefruit52Lib/src/BLEClientCharacteristic.h b/arduino/libraries/Bluefruit52Lib/src/BLEClientCharacteristic.h
new file mode 100755
index 0000000..17c6907
--- /dev/null
+++ b/arduino/libraries/Bluefruit52Lib/src/BLEClientCharacteristic.h
@@ -0,0 +1,135 @@
+/**************************************************************************/
+/*!
+ @file BLEClientCharacteristic.h
+ @author hathach (tinyusb.org)
+
+ @section LICENSE
+
+ Software License Agreement (BSD License)
+
+ Copyright (c) 2018, Adafruit Industries (adafruit.com)
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holders nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+/**************************************************************************/
+#ifndef BLECLIENTCHARACTERISTIC_H_
+#define BLECLIENTCHARACTERISTIC_H_
+
+#include "bluefruit_common.h"
+#include "BLEUuid.h"
+#include "BLECharacteristic.h"
+
+// Forward declaration
+class BLEClientService;
+
+class BLEClientCharacteristic
+{
+ public:
+ /*--------- Callback Signatures ----------*/
+ typedef void (*notify_cb_t ) (BLEClientCharacteristic* chr, uint8_t* data, uint16_t len);
+ typedef void (*indicate_cb_t) (BLEClientCharacteristic* chr, uint8_t* data, uint16_t len);
+
+ BLEUuid uuid;
+
+ // Constructors
+ BLEClientCharacteristic(void);
+ BLEClientCharacteristic(BLEUuid bleuuid);
+
+ // Destructor
+ virtual ~BLEClientCharacteristic();
+
+ void begin(BLEClientService* parent_svc = NULL);
+
+ bool discover(void);
+ bool discovered(void);
+
+ uint16_t connHandle(void);
+ uint16_t valueHandle(void);
+ uint8_t properties(void);
+
+ BLEClientService& parentService(void);
+
+ /*------------- Read -------------*/
+ uint16_t read(void* buffer, uint16_t bufsize);
+ uint8_t read8 (void);
+ uint16_t read16(void);
+ uint32_t read32(void);
+
+ /*------------- Write without Response-------------*/
+ uint16_t write (const void* data, uint16_t len);
+ uint16_t write8 (uint8_t value);
+ uint16_t write16 (uint16_t value);
+ uint16_t write32 (uint32_t value);
+ uint16_t write32 (int value);
+
+ /*------------- Write with Response-------------*/
+ uint16_t write_resp(const void* data, uint16_t len);
+ uint16_t write8_resp (uint8_t value);
+ uint16_t write16_resp (uint16_t value);
+ uint16_t write32_resp (uint32_t value);
+ uint16_t write32_resp (int value);
+
+ /*------------- Notify -------------*/
+ bool writeCCCD (uint16_t value);
+
+ bool enableNotify (void);
+ bool disableNotify (void);
+
+ bool enableIndicate (void);
+ bool disableIndicate (void);
+
+ /*------------- Callbacks -------------*/
+ void setNotifyCallback(notify_cb_t fp, bool useAdaCallback = true);
+ void setIndicateCallback(indicate_cb_t fp, bool useAdaCallback = true);
+
+ /*------------- Internal usage -------------*/
+ void _assign(ble_gattc_char_t* gattc_chr);
+ bool _discoverDescriptor(uint16_t conn_handle, ble_gattc_handle_range_t hdl_range);
+
+ private:
+ ble_gattc_char_t _chr;
+ uint16_t _cccd_handle;
+
+ BLEClientService* _service;
+ AdaMsg _adamsg;
+
+ /*------------- Callbacks -------------*/
+ notify_cb_t _notify_cb;
+ indicate_cb_t _indicate_cb;
+
+ struct ATTR_PACKED {
+ uint8_t notify : 1;
+ uint8_t indicate : 1;
+ } _use_ada_cb;
+
+
+ void _init (void);
+ void _eventHandler (ble_evt_t* event);
+
+ void disconnect(void);
+
+ friend class BLEGatt;
+};
+
+#endif /* BLECLIENTCHARACTERISTIC_H_ */