Fix missing symbol problem on iOS and Android.
Change-Id: I055e0b9db8757ab0e92c640736e9bdb9de48e726
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Examples in binary packages now directly match the install path.
Change-Id: I8fc41af85033c88d6a3129efdb616dac6d99866d
Task-number: QTBUG-52953
Reviewed-by: Antti Kokko <antti.kokko@qt.io>
There have been plenty of bugs where QtBluetooth was compiled
with the dummy backend and the API user reported bugs against it. So far
debug output was not able to identify the dummy backend which made
debugging of customer code more difficult.
This patch prints the name of the backend once shortly after the
application startup. The other backends like Bluez do that already.
Change-Id: I86353ef3c9c99cafac38805f253e20a3ad3e10a5
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
QBluetoothSocket::connectToService() performs its own service discovery
if the remote RFCOMM channel is not known. This may happen if the passed
in BluetothServiceInfo object was obtained via a minimal service
discovery (which does not perform a channel discovery) or if the
connectToService(const QBluetoothAddress &address, const QBluetoothUuid
&uuid, OpenMode openMode = ReadWrite);
overload was called.
This was not an issue with Bluez4 as every type of discovery
provided the RFCOMM channel id.
The internal discovery required at least the service's ServiceId to be
known. However a lot of SerialPort profiles do not set a custom service
uuid as ServiceId nor do they set the SerialPort UUID as ServiceId. Often they
provide the SerialPort uuid via the ServiceClassIds only.
This patch ensures that the internal service discovery is started if the
ServiceId is known or if the ServiceClassIds contains the SerialPort
uuid.
Furthermore the internal discovery did not apply the complete uuid filter.
If a ServiceClassId was added then the ServiceId was discarded which
could lead to services not being found.
Task-number: QTBUG-47593
Change-Id: Ia6e52d1a9def0f770080fd70e2b6deb40e69fa69
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
qDebug() << foobar << QBluetoothServiceInfo()
The above statement produced output where the QBluetoothServiceInfo
content was printed before foobar. This patch fixes the issue. The debug
operator uses the passed in debug object rather than creating a new
one when printing.
Change-Id: Ic92ca341baa8b4bce934a3895d2da77a2e17b5c3
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
QBluetoothSocket::connectDevice(QBluetoothServiceInfo, OpenMode)
was not used so far. This call is even more efficient as it can avoid
a complete service discovery. In summary quicker testing can be
achieved.
Change-Id: I6f9ef9eec6b773b9b90bf46e24a07878d81633cd
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Better explains that the uuid filter is applied against two service
attributes rather than only one. The ServiceId and the ServiceClassIds
are used for matching purposes.
Change-Id: Ib301e438c27977288c56a2bb9dfe68e2d3f2a10d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
It highlights the optional curly braces and the connection to QUuid.
Task-number: QTBUG-52685
Change-Id: Iebfa84dc7f83fd2ef0aa02cb5e21b3f62de84d24
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
Android does not provide an API to detect when an NFC tag is removed
from the vincinity. To detect such a case the Android implementation
uses active polling. During each polling cycle the implementation
connects and disconnects from the tag. If it failed, the tag is assumed
to have been removed from the vincinity.
Such failed attempts cause an IOException which are printed to stderr. This
is confusing as the developer might mistake them for some other serious
problem. This change suppresses all related warnings.
Change-Id: I95cf57076139e7d0a5ad31d4cc770a81ced12242
Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com>
Reviewed-by: Peter Rustler <peter.rustler@basyskom.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
QNearFieldManager::registerNdefMessageHandler() is supposed to register
the current app as platform handler for certain tag types. The example
is written around this concept and doesn't start the target detection
when such a registration succeeded.
Unfortunately the Android implementation does something completely
different. Therefore the startTargetDetection() and connect() calls
after the current return is necessary to make the example useful.
For now we simply ignore the feature and always start target
detection. Since neither NEARD/Linux nor Android (the only two
supported platforms) have an implementation for the feature
the modified example works as expected.
Considering the current state it should be considered to remove
this NDEF message registration feature in Qt 6 altogether. The only platform
which ever supported the feature was BB10 and its implementation was
removed a long time ago.
Task-number: QTBUG-52154
Change-Id: Ibef9e77ac33b9629b6d81aa70eaa01ab1702cfcb
Reviewed-by: Peter Rustler <peter.rustler@basyskom.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Since Android 6.0 Bluetooth device discovery requires
new permissions (ACCESS_FINE_LOCATION or ACCESS_COURSE_LOCATION).
Otherwise non-BTLE devices will no show up anymore. This patch adds the
required permissions to QtBLuetooth.
For details see
http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id
Task-number: QTBUG-52530
Change-Id: I7b64ab57c5c9ee2e08308eaa58d33708c5e31244
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
-serviceForUUID: fails to find included service and returns a nil
for a valid service previously discovered.
Task-number: QTBUG-52324
Change-Id: I9f4f8b1f3d3a78879344ace0170e23c03921d648
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Use Q_GLOBAL_STATIC instead of simple static QMap object to avoid problems with
undefined initialization order for 'statics' from different translation units.
Task-number: QTBUG-51860
Change-Id: I6ce48f3c0770dc0ff125b443816f6b3b23ae809e
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
... or equivalent.
QtBase 5.6 headers already compile that way, so let the other
modules follow suit.
Added explicit where it was missing. This is not a source-
incompatible change, because code that breaks by this is
a bug. Let's not have this sitting around in an LTS.
Task-number: QTBUG-45291
Change-Id: I375361699615d0fc874e0b96a84543e233eff5f0
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
this fixes static builds by ensuring that all dependencies are exported.
Task-number: QTBUG-51071
Change-Id: I3cdb59c65dbbf2b536ee927dd912349b4ceca335
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
The build system generates wrapper scripts for direct host tool calls.
This scripts should not be tracked by git.
Change-Id: I9b2c9521c2c12e38f32ae69621d72e18eb33945b
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
While discovering descriptors, when handles are not numbered
sequentially, the discovery stopped as soon as "no attribute in given
range found" error is received. However, there could be more
characteristics pending. As a result, descriptors for those
characteristics where never discovered.
Change-Id: Iad9d7203020b0787f1d4571fc7063ef390448ce9
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Otherwise, a malicious device could crash our application.
Change-Id: I427eb1ff88b08710d5c74230f5877b0c59b6fb0f
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
The previous code always returned the id of the first device in the
list.
Change-Id: I6f3cde2405d53eab009d7409d9e3c6b47d97e53b
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
The private class used a member in its constructor that was only set
afterwards.
Change-Id: I19b7ca2a5048771a447d63a56ad10ad56c311e91
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Now we have this class in QtCore, no need in my "home-made" version anymore.
Change-Id: Id26944dd6970cc2a8ac9d02675f8af9adecc3d44
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
This may happen when the app name contains for example a dash ('-').
Task-number: QTBUG-49402
Change-Id: I04b289b0723e2979a67c93e335205556bf1eb30e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
This is important on Android as not all error conditions are exposed
via QLowEnergyController::Error enum.
Change-Id: I442ecffcadc01e1a2b60ae17dc6e63e08e5f4149
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Change-Id: I3addd4258e3bbb5aaa6eca21af338aab57b9cf33
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
So far, invalidation only took place when the local/central side
disconnected the connection.
Task-number: QTBUG-50125
Change-Id: Ic01725d1b83e49ad7df6971d980b480f839d550b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Most likely it was used before some changes rendered it unused.
At this point the variable was initialized to false and never ever
set to true.
Change-Id: I5b60cf83bc362ff53f8ce276c16392aada9efc69
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
So far, only a local disconnect triggered the invalidation process.
Task-number: QTBUG-50125
Change-Id: I324e01c86eb0c7cc820e91a6f6d6d01fb23170ab
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Change-Id: Iefea81376d0486aead874dad985e55f0b0af5d27
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>