mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 23:13:25 +00:00
Android: connect to BT via uuid instead of port
We remember the offered service uuids as we detect the device and then try the first one - likely this needs to be fixed / tuned to pick the right one if multiple uuids are offered. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
782caf5fa6
commit
286bac6d30
2 changed files with 23 additions and 0 deletions
|
@ -19,6 +19,18 @@
|
|||
|
||||
#include <libdivecomputer/custom_serial.h>
|
||||
|
||||
QList<QBluetoothUuid> registeredUuids;
|
||||
|
||||
static QBluetoothUuid getBtUuid()
|
||||
{
|
||||
return registeredUuids.first();
|
||||
}
|
||||
|
||||
void addBtUuid(QBluetoothUuid uuid)
|
||||
{
|
||||
registeredUuids << uuid;
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
typedef struct qt_serial_t {
|
||||
/*
|
||||
|
@ -32,6 +44,7 @@ typedef struct qt_serial_t {
|
|||
long timeout;
|
||||
} qt_serial_t;
|
||||
|
||||
|
||||
static dc_status_t qt_serial_open(void **userdata, const char* devaddr)
|
||||
{
|
||||
// Allocate memory.
|
||||
|
@ -133,7 +146,13 @@ static dc_status_t qt_serial_open(void **userdata, const char* devaddr)
|
|||
#elif defined(Q_OS_ANDROID) || (QT_VERSION >= 0x050500 && defined(Q_OS_MAC))
|
||||
// Try to connect to the device using the uuid of the Serial Port Profile service
|
||||
QBluetoothAddress remoteDeviceAddress(devaddr);
|
||||
#if defined(Q_OS_ANDROID)
|
||||
QBluetoothUuid uuid = getBtUuid();
|
||||
qDebug() << "connecting to Uuid" << uuid;
|
||||
serial_port->socket->connectToService(remoteDeviceAddress, uuid, QIODevice::ReadWrite | QIODevice::Unbuffered);
|
||||
#else
|
||||
serial_port->socket->connectToService(remoteDeviceAddress, 1, QIODevice::ReadWrite | QIODevice::Unbuffered);
|
||||
#endif
|
||||
timer.start(msec);
|
||||
loop.exec();
|
||||
|
||||
|
|
|
@ -204,11 +204,15 @@ void QMLManager::mergeLocalRepo()
|
|||
}
|
||||
|
||||
#if BT_SUPPORT
|
||||
|
||||
extern void addBtUuid(QBluetoothUuid uuid);
|
||||
|
||||
void QMLManager::btDeviceDiscovered(const QBluetoothDeviceInfo &device)
|
||||
{
|
||||
QString newDevice = device.name();
|
||||
QList<QBluetoothUuid> serviceUuids = device.serviceUuids();
|
||||
foreach (QBluetoothUuid id, serviceUuids) {
|
||||
addBtUuid(id);
|
||||
qDebug() << id.toByteArray();
|
||||
}
|
||||
appendTextToLog("Found new device " + newDevice + " (" + device.address().toString() + ")");
|
||||
|
|
Loading…
Add table
Reference in a new issue