aboutsummaryrefslogtreecommitdiff
path: root/Bluetooth.h
diff options
context:
space:
mode:
Diffstat (limited to 'Bluetooth.h')
-rw-r--r--Bluetooth.h177
1 files changed, 91 insertions, 86 deletions
diff --git a/Bluetooth.h b/Bluetooth.h
index 15ef171..7ed7b8c 100644
--- a/Bluetooth.h
+++ b/Bluetooth.h
@@ -21,125 +21,130 @@
#define UUID_SECONDARY_SERVICE 0x2801
namespace trygvis {
- using namespace std;
+namespace bluetooth {
+using namespace std;
+
+class BluetoothAdapter;
+
+class BluetoothDevice;
+
+class BluetoothException : public runtime_error {
+public:
+ BluetoothException(const BluetoothAdapter *adapter, string const &what) :
+ runtime_error(what), adapter(adapter), device(nullptr) {
+ }
+
+ BluetoothException(const BluetoothDevice *device, string const &what) :
+ runtime_error(what), adapter(nullptr), device(device) {
+ }
+
+ BluetoothException(string const &what) :
+ runtime_error(what), adapter(nullptr), device(nullptr) {
+ }
+
+ const BluetoothAdapter *adapter;
+ const BluetoothDevice *device;
+};
+
+class Mac {
+public:
+ Mac(uint8_t _0, uint8_t _1, uint8_t _2, uint8_t _3, uint8_t _4, uint8_t _5) {
+ bytes[0] = _0;
+ bytes[1] = _1;
+ bytes[2] = _2;
+ bytes[3] = _3;
+ bytes[4] = _4;
+ bytes[5] = _5;
+ };
- class BluetoothAdapter;
+ string str() const;
- class BluetoothDevice;
+ bool operator==(Mac &other) const;
- class BluetoothException : public runtime_error {
- public:
- BluetoothException(const BluetoothAdapter *adapter, string const &what) :
- runtime_error(what), adapter(adapter), device(nullptr) {
- }
+ bool operator!=(Mac &other) const;
- BluetoothException(const BluetoothDevice *device, string const &what) :
- runtime_error(what), adapter(nullptr), device(device) {
- }
+ void copy(uint8_t &_0, uint8_t &_1, uint8_t &_2, uint8_t &_3, uint8_t &_4, uint8_t &_5) const;
- BluetoothException(string const &what) :
- runtime_error(what), adapter(nullptr), device(nullptr) {
- }
+ static Mac parseMac(string s) throw(BluetoothException);
- const BluetoothAdapter *adapter;
- const BluetoothDevice *device;
- };
+ friend bool operator<(const Mac &a, const Mac &b);
- class Mac {
- public:
- Mac(uint8_t _0, uint8_t _1, uint8_t _2, uint8_t _3, uint8_t _4, uint8_t _5) {
- bytes[0] = _0;
- bytes[1] = _1;
- bytes[2] = _2;
- bytes[3] = _3;
- bytes[4] = _4;
- bytes[5] = _5;
- };
+private:
+ uint8_t bytes[6];
+};
- string str() const;
+class BluetoothDevice {
+public:
+ virtual Mac const &mac() = 0;
- bool operator==(Mac &other) const;
+ virtual BluetoothAdapter &adapter() = 0;
- bool operator!=(Mac &other) const;
+ virtual void connect() = 0;
- void copy(uint8_t &_0, uint8_t &_1, uint8_t &_2, uint8_t &_3, uint8_t &_4, uint8_t &_5) const;
+ virtual void disconnect() = 0;
- static Mac *parseMac(string s) throw(BluetoothException);
+ virtual void discoverServices() = 0;
+};
- friend bool operator<(const Mac &a, const Mac &b);
- private:
- uint8_t bytes[6];
- };
+class BluetoothAdapter {
+public:
+ virtual void stopScan() = 0;
- class BluetoothDevice {
- public:
- virtual Mac const &mac() = 0;
+ virtual void runScan(void (callback)(BluetoothDevice &device)) = 0;
- virtual BluetoothAdapter &adapter() = 0;
+ virtual BluetoothDevice &getDevice(Mac &mac) = 0;
- virtual void connect() = 0;
+protected:
+ BluetoothAdapter();
- virtual void disconnect() = 0;
+ virtual ~BluetoothAdapter();
+};
- virtual void discoverServices() = 0;
- };
+enum AttPduType {
+ ERROR = 0x00,
+ READ_BY_GROUP_TYPE_REQ = 0x10,
+ READ_BY_GROUP_TYPE_RES = 0x11
+};
- class BluetoothAdapter {
- public:
- BluetoothAdapter() {
- };
+class AttributeData;
- virtual ~BluetoothAdapter();
+class AttPdu {
+public:
+ AttPdu(ByteBuffer &bytes);
- virtual void stopScan() = 0;
+ AttPdu(ByteBuffer &bytes, AttPduType type);
- virtual void runScan(void (callback)(BluetoothDevice &device)) = 0;
+ AttPduType getType();
- virtual BluetoothDevice &getDevice(Mac& mac) = 0;
- };
+ static vector<AttributeData> parseReadByGroupType(ByteBuffer &bytes);
- enum AttPduType {
- ERROR = 0x00,
- READ_BY_GROUP_TYPE_REQ = 0x10,
- READ_BY_GROUP_TYPE_RES = 0x11
- };
+ static void makeReadByGroupType(ByteBuffer &bytes, uint16_t startHandle, uint16_t endHandle, uint16_t uuid);
- class AttributeData;
+private:
+ static void checkType(ByteBuffer &bytes, AttPduType type);
- class AttPdu {
- public:
- AttPdu(ByteBuffer &bytes);
+ ByteBuffer &bytes;
+};
- AttPdu(ByteBuffer &bytes, AttPduType type);
+class AttributeData {
+public:
+ ~AttributeData();
- AttPduType getType();
+ static AttributeData fromByteBuffer(ByteBuffer &value, uint8_t length);
- static vector <AttributeData> parseReadByGroupType(ByteBuffer &bytes);
+ const uint16_t handle;
+ const uint16_t groupEndHandle;
+ const ByteBuffer value;
- static void makeReadByGroupType(ByteBuffer &bytes, uint16_t startHandle, uint16_t endHandle, uint16_t uuid);
+private:
+ AttributeData(uint16_t handle, uint16_t groupEndHandle, ByteBuffer value);
+};
- private:
- static void checkType(ByteBuffer &bytes, AttPduType type);
+BluetoothAdapter &getAdapter(int hciDevice);
- ByteBuffer &bytes;
- };
+void shutdown();
- class AttributeData {
- public:
- ~AttributeData();
-
- static AttributeData fromByteBuffer(ByteBuffer &value, uint8_t length);
-
- const uint16_t handle;
- const uint16_t groupEndHandle;
- const ByteBuffer value;
-
- private:
- AttributeData(uint16_t handle, uint16_t groupEndHandle, ByteBuffer value);
- };
-
-// BluetoothAdapter &getAdapter(int hciDevice);
- BluetoothAdapter *getAdapter(int hciDevice);
+}
}
#endif