diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2015-02-21 23:58:39 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2015-02-21 23:58:39 +0100 |
commit | 5926b05afa21eaac36c185e7fc458710efa30b02 (patch) | |
tree | 1d835b53fcb3dbc44b07084155a37874ce8325dc /ble/Bluetooth.h | |
parent | a76e09808905d280282a81958cb4c68f71f18ca4 (diff) | |
download | ble-toys-5926b05afa21eaac36c185e7fc458710efa30b02.tar.gz ble-toys-5926b05afa21eaac36c185e7fc458710efa30b02.tar.bz2 ble-toys-5926b05afa21eaac36c185e7fc458710efa30b02.tar.xz ble-toys-5926b05afa21eaac36c185e7fc458710efa30b02.zip |
o Support for reading and writing characteristics.
Diffstat (limited to 'ble/Bluetooth.h')
-rw-r--r-- | ble/Bluetooth.h | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/ble/Bluetooth.h b/ble/Bluetooth.h index d6be783..6ed9c76 100644 --- a/ble/Bluetooth.h +++ b/ble/Bluetooth.h @@ -22,9 +22,9 @@ public: }; namespace uuids { -static const SpecUuid PRIMARY_SERVICE = SpecUuid(0x2800); -static const SpecUuid SECONDARY_SERVICE = SpecUuid(0x2801); -static const SpecUuid CHARACTERISTIC = SpecUuid(0x2803); +const SpecUuid PRIMARY_SERVICE = SpecUuid(0x2800); +const SpecUuid SECONDARY_SERVICE = SpecUuid(0x2801); +const SpecUuid CHARACTERISTIC = SpecUuid(0x2803); } class BluetoothAdapter; @@ -72,7 +72,7 @@ public: void copy(uint8_t &_0, uint8_t &_1, uint8_t &_2, uint8_t &_3, uint8_t &_4, uint8_t &_5) const; - static Mac parseMac(string s) throw(BluetoothException); + static Mac parseMac(string s); friend bool operator<(const Mac &a, const Mac &b); @@ -113,7 +113,7 @@ public: virtual void addCharacteristic(BluetoothGattCharacteristic *characteristic) = 0; - virtual const boost::optional<BluetoothGattCharacteristic *> findCharacteristic(boost::uuids::uuid uuid) const = 0; + virtual const boost::optional<BluetoothGattCharacteristic &> findCharacteristic(boost::uuids::uuid uuid) const = 0; }; class BluetoothGatt { @@ -128,11 +128,15 @@ public: virtual void disconnect() = 0; + virtual void writeValue(const BluetoothGattCharacteristic &c, const ByteBuffer &bytes) = 0; + + virtual ByteBuffer readValue(const BluetoothGattCharacteristic &c) = 0; + virtual void discoverServices() = 0; virtual const vector<BluetoothGattService *> getServices() const = 0; - virtual const boost::optional<BluetoothGattService *> findService(boost::uuids::uuid uuid) const = 0; + virtual const boost::optional<BluetoothGattService &> findService(boost::uuids::uuid uuid) const = 0; }; class BluetoothDevice { @@ -179,8 +183,12 @@ enum AttPduType { INVALID_HANDLE = 0x01, READ_BY_TYPE_REQ = 0x08, READ_BY_TYPE_RES = 0x09, + READ_REQ = 0x0a, + READ_RES = 0x0b, READ_BY_GROUP_TYPE_REQ = 0x10, READ_BY_GROUP_TYPE_RES = 0x11, + WRITE_REQ = 0x12, + WRITE_RES = 0x13, }; class AttributeData; @@ -197,10 +205,18 @@ public: static vector<AttributeData> parseReadByType(ByteBuffer &bytes); + static void parseRead(ByteBuffer &bytes); + + static void parseWrite(ByteBuffer &bytes); + static void makeReadByGroupType(ByteBuffer &bytes, uint16_t startHandle, uint16_t endHandle, SpecUuid uuid); static void makeReadByType(ByteBuffer &bytes, uint16_t startHandle, uint16_t endHandle, SpecUuid uuid); + static void makeRead(ByteBuffer &bytes, uint16_t handle); + + static void makeWrite(ByteBuffer &req, uint16_t handle, const ByteBuffer &bytes); + private: static void checkType(ByteBuffer &bytes, AttPduType type); |