diff options
author | Fabian Bumberger <fbumberger@rim.com> | 2013-07-26 14:02:44 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-07-29 19:32:07 +0200 |
commit | 0e7b5c4922bbcb5cf0e3a85a6dd1ba4b82b2097e (patch) | |
tree | 01bf5be55bfee7f86c5fd5b41abd9e584d8e33fe /src/bluetooth/qbluetoothserviceinfo_qnx.cpp | |
parent | a7f6e8cf3ed1fddce5fd8a8d0e3d9125e5d8431c (diff) |
QNX: Fake rfcomm ports
We need a way to associate a service with a server. The current API does that using rfcomm ports.
On QNX We do not have access to the rfcomm ports, so we fake the behavior.
Change-Id: I893fd60dc4cbc515643fe8218532de6634a6d88e
Reviewed-by: Alex <alexander.blasche@digia.com>
Diffstat (limited to 'src/bluetooth/qbluetoothserviceinfo_qnx.cpp')
-rw-r--r-- | src/bluetooth/qbluetoothserviceinfo_qnx.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/bluetooth/qbluetoothserviceinfo_qnx.cpp b/src/bluetooth/qbluetoothserviceinfo_qnx.cpp index 3765887a..691c3a0c 100644 --- a/src/bluetooth/qbluetoothserviceinfo_qnx.cpp +++ b/src/bluetooth/qbluetoothserviceinfo_qnx.cpp @@ -85,6 +85,8 @@ void QBluetoothServiceInfoPrivate::removeRegisteredAttribute(quint16 attributeId registered = false; } +extern QHash<QRfcommServerPrivate*, int> __fakeServerPorts; + bool QBluetoothServiceInfoPrivate::registerService() const { Q_Q(const QBluetoothServiceInfo); @@ -92,15 +94,19 @@ bool QBluetoothServiceInfoPrivate::registerService() const qWarning() << Q_FUNC_INFO << "Only SPP services can be registered on QNX"; return false; } - ppsRegisterControl(); - //if (registered) - // ppsSendControlMessage("deregister_server", 0x1101, q->serviceUuid(), QString(), 0); - - //If any server instance is already running, it is deregistered - qBBBluetoothDebug() << "deregistering server"; - ppsSendControlMessage("deregister_server", 0x1101, q->serviceUuid(), QString(), 0); - qBBBluetoothDebug() << "registering spp server: UUID" << q->serviceUuid(); - ppsSendControlMessage("register_server", 0x1101, q->serviceUuid(), q->serviceName(), 0); + + if (q->serverChannel() == -1) + return false; + + if (__fakeServerPorts.key(q->serverChannel()) != 0) { + qBBBluetoothDebug() << "Registering server with UUID" << + q->serviceUuid() << " Name" << q->serviceName(); + qDebug() << "Server is" << __fakeServerPorts.key(q->serverChannel()); + ppsSendControlMessage("register_server", 0x1101, q->serviceUuid(), q->serviceName(), + __fakeServerPorts.key(q->serverChannel()), BT_SPP_SERVER_SUBTYPE); + } else { + return false; + } registered = true; return true; |