summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qbluetoothserviceinfo_qnx.cpp
diff options
context:
space:
mode:
authorFabian Bumberger <fbumberger@rim.com>2013-07-26 14:02:44 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-29 19:32:07 +0200
commit0e7b5c4922bbcb5cf0e3a85a6dd1ba4b82b2097e (patch)
tree01bf5be55bfee7f86c5fd5b41abd9e584d8e33fe /src/bluetooth/qbluetoothserviceinfo_qnx.cpp
parenta7f6e8cf3ed1fddce5fd8a8d0e3d9125e5d8431c (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.cpp24
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;