diff options
Diffstat (limited to 'ble')
-rw-r--r-- | ble/Bluetooth.h | 2 | ||||
-rw-r--r-- | ble/BluetoothImpl.h | 12 | ||||
-rw-r--r-- | ble/LinuxBluetooth.cpp | 11 |
3 files changed, 15 insertions, 10 deletions
diff --git a/ble/Bluetooth.h b/ble/Bluetooth.h index 1dd5022..d6be783 100644 --- a/ble/Bluetooth.h +++ b/ble/Bluetooth.h @@ -122,7 +122,7 @@ public: virtual ~BluetoothGatt(); -// virtual BluetoothDevice &getDevice() = 0; + virtual BluetoothDevice &getDevice() const = 0; virtual void connect() = 0; diff --git a/ble/BluetoothImpl.h b/ble/BluetoothImpl.h index 7801771..ef9a733 100644 --- a/ble/BluetoothImpl.h +++ b/ble/BluetoothImpl.h @@ -133,7 +133,7 @@ public: } protected: - DefaultBluetoothDevice(A adapter, Mac &mac) : + DefaultBluetoothDevice(A &adapter, Mac &mac) : adapter(adapter), mac(mac) { DF; } @@ -150,13 +150,18 @@ protected: services.clear(); } - A adapter; + A &adapter; Mac &mac; vector<BluetoothGattService *> services; }; +template<class _D> class DefaultBluetoothGatt : public BluetoothGatt { public: + virtual _D &getDevice() const { + return device; + } + virtual const vector<BluetoothGattService *> getServices() const { return services; }; @@ -176,7 +181,7 @@ public: } protected: - DefaultBluetoothGatt() { + DefaultBluetoothGatt(_D &device) : device(device) { DF; } @@ -192,6 +197,7 @@ protected: services.clear(); } + _D &device; vector<BluetoothGattService *> services; }; diff --git a/ble/LinuxBluetooth.cpp b/ble/LinuxBluetooth.cpp index a5d092b..d62bf23 100644 --- a/ble/LinuxBluetooth.cpp +++ b/ble/LinuxBluetooth.cpp @@ -55,21 +55,21 @@ private: class LinuxBluetoothDevice : public DefaultBluetoothDevice<LinuxBluetoothAdapter> { public: LinuxBluetoothDevice(LinuxBluetoothAdapter &adapter, Mac &mac); + ~LinuxBluetoothDevice(); BluetoothGatt &connectGatt() override; private: - LinuxBluetoothGatt* gatt; + LinuxBluetoothGatt *gatt; int l2cap; }; -class LinuxBluetoothGatt : public DefaultBluetoothGatt { +class LinuxBluetoothGatt : public DefaultBluetoothGatt<LinuxBluetoothDevice> { public: LinuxBluetoothGatt(LinuxBluetoothDevice &device, int l2cap); - ~LinuxBluetoothGatt(); -// LinuxBluetoothDevice &getDevice() override; + ~LinuxBluetoothGatt(); void connect() override; @@ -84,7 +84,6 @@ private: ByteBuffer writeAndRead(ByteBuffer &out, shared_ptr<uint8_t> buffer, size_t size); - LinuxBluetoothDevice &device; int l2cap; }; @@ -131,7 +130,7 @@ BluetoothGatt &LinuxBluetoothDevice::connectGatt() { // ----------------------------------------------------------------------- LinuxBluetoothGatt::LinuxBluetoothGatt(LinuxBluetoothDevice &device, int l2cap) : - device(device), l2cap(l2cap) { + DefaultBluetoothGatt(device), l2cap(l2cap) { } LinuxBluetoothGatt::~LinuxBluetoothGatt() { |