This commit is contained in:
Dorian Zedler 2020-10-08 22:03:31 +02:00
parent 8cc71db6e2
commit 49d6653504
Signed by: dorian
GPG key ID: D3B255CB8BC7CD37
3 changed files with 27 additions and 22 deletions

View file

@ -8,7 +8,6 @@ QBluetoothLeUart_QML {
QT += core bluetooth
TEMPLATE = lib
CONFIG += staticlib
CONFIG += c++11
@ -17,16 +16,12 @@ CONFIG += c++11
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
INCLUDEPATH += $$PWD/
SOURCES += \
qbluetoothleuart.cpp \
qbluetoothleuartdevice.cpp
$$PWD/qbluetoothleuart.cpp \
$$PWD/qbluetoothleuartdevice.cpp
HEADERS += \
qbluetoothleuart.h \
qbluetoothleuartdevice.h
# Default rules for deployment.
unix {
target.path = $$[QT_INSTALL_PLUGINS]/generic
}
!isEmpty(target.path): INSTALLS += target
$$PWD/qbluetoothleuart.h \
$$PWD/qbluetoothleuartdevice.h

View file

@ -8,6 +8,8 @@ QBluetoothLeUart::QBluetoothLeUart(QObject *parent) : QObject(parent)
state = Idle;
this->setUUIDs("6e400001-b5a3-f393-e0a9-e50e24dcca9e", "6e400002-b5a3-f393-e0a9-e50e24dcca9e", "6e400003-b5a3-f393-e0a9-e50e24dcca9e");
/* 1 Step: Bluetooth LE Device Discovery */
this->bluetoothDeviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
@ -153,7 +155,7 @@ void QBluetoothLeUart::handleServiceDiscovered(const QBluetoothUuid &gatt){
qDebug() << "Found service with ID: " << gatt;
if(gatt==QBluetoothUuid(QUuid(UARTSERVICEUUID))){
if(gatt==QBluetoothUuid(QUuid(this->uartServiceUUID))){
foundValidUARTService =true;
qDebug() << "UART service found!";
}
@ -166,7 +168,7 @@ void QBluetoothLeUart::handleServiceScanDone(){
if(foundValidUARTService){
qDebug() << "Connecting to UART service...";
bluetoothService = bluetoothController->createServiceObject(QBluetoothUuid(QUuid(UARTSERVICEUUID)),this);
bluetoothService = bluetoothController->createServiceObject(QBluetoothUuid(QUuid(this->uartServiceUUID)),this);
}
if(!bluetoothService){
@ -194,7 +196,7 @@ void QBluetoothLeUart::handleServiceStateChange(QLowEnergyService::ServiceState
{
//looking for the TX characteristic
const QLowEnergyCharacteristic TxChar = bluetoothService->characteristic(QBluetoothUuid(QUuid(TXUUID)));
const QLowEnergyCharacteristic TxChar = bluetoothService->characteristic(QBluetoothUuid(QUuid(this->txUUID)));
if (!TxChar.isValid()){
qDebug() << "Tx characteristic not found";
this->disconnectFromDevice();
@ -202,7 +204,7 @@ void QBluetoothLeUart::handleServiceStateChange(QLowEnergyService::ServiceState
}
//looking for the RX characteristic
const QLowEnergyCharacteristic RxChar = bluetoothService->characteristic(QBluetoothUuid(QUuid(RXUUID)));
const QLowEnergyCharacteristic RxChar = bluetoothService->characteristic(QBluetoothUuid(QUuid(this->rxUUID)));
if (!RxChar.isValid()) {
qDebug() << "Rx characteristic not found";
this->disconnectFromDevice();
@ -233,7 +235,7 @@ void QBluetoothLeUart::handleServiceStateChange(QLowEnergyService::ServiceState
void QBluetoothLeUart::handleServiceCharacteristicChange(const QLowEnergyCharacteristic &c,const QByteArray &value)
{
// ignore any other characteristic change
if (c.uuid() != QBluetoothUuid(QUuid(TXUUID)))
if (c.uuid() != QBluetoothUuid(QUuid(this->txUUID)))
return;
emit dataReceived((QString) value);
@ -253,7 +255,7 @@ void QBluetoothLeUart::handleServiceDescriptorWritten(const QLowEnergyDescriptor
void QBluetoothLeUart::sendData(QString s){
const QLowEnergyCharacteristic RxChar = bluetoothService->characteristic(QBluetoothUuid(QUuid(RXUUID)));
const QLowEnergyCharacteristic RxChar = bluetoothService->characteristic(QBluetoothUuid(QUuid(this->rxUUID)));
qDebug()<< s;
QByteArray Data;
@ -276,3 +278,9 @@ void QBluetoothLeUart::setState(QBluetoothLeUart::BluetoothLeUartState newState)
QBluetoothLeUart::BluetoothLeUartState QBluetoothLeUart::getState() const {
return state;
}
void QBluetoothLeUart::setUUIDs(const char uartServiceUUID[36], const char rxUUID[36], const char txUUID[36]) {
this->uartServiceUUID = uartServiceUUID;
this->rxUUID = rxUUID;
this->txUUID = txUUID;
}

View file

@ -10,11 +10,7 @@
#include <QQmlApplicationEngine>
#endif
#include "qbluetoothleuartdevice.h"
#define UARTSERVICEUUID "6e400001-b5a3-f393-e0a9-e50e24dcca9e"
#define RXUUID "6e400002-b5a3-f393-e0a9-e50e24dcca9e"
#define TXUUID "6e400003-b5a3-f393-e0a9-e50e24dcca9e"
#include <qbluetoothleuartdevice.h>
class QBluetoothLeUart : public QObject
{
@ -46,7 +42,13 @@ public:
static void init();
void setUUIDs(const char uartServiceUUID[36], const char rxUUID[36], const char txUUID[36]);
private:
QString uartServiceUUID;
QString rxUUID;
QString txUUID;
QBluetoothLeUartDevice *currentBluetoothDevice;
QBluetoothDeviceDiscoveryAgent *bluetoothDeviceDiscoveryAgent;
//QList<QObject*> m_qlDevices;