| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
If the socket was created without giving the socket type,
ensureNativeSocket was not called and thus m_socketObject is 0. Calling
localName and friends caused a crash because they accesses the object
unconditionally.
Change-Id: I442e3d1492458161fb8660f1b2f17d52b37a2935
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
This is the result of running the (experimental) clang-tidy check
qt-modernize-qsharedpointer-create
Discarded changes: none.
Change-Id: I58a0f230516e836df62b40cf8ec38a6b3d7122db
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
|
|
|
|
| |
Change-Id: I9f6a7c3884c2d7c9b0856a0e9a689ad88cca59fe
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
If the last entry of a service is a descriptor or characteristic
and the read attempt fails early (the read could not even be initiated)
ensure that the discovery state machine properly exists. So far the exit
was only ever triggered by a successful read or if the async callback
for the read returned with an error or timed out.
Change-Id: I495982a82819aab985bc91a7e63c530b52355d9d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are cases where peripherals use a larger MTU than the default MTU
on Android. This forces the MTU negotiation to always been done once
the service discovery has been done.
This patch requires Android API v21 (or Android v5+). If the
local Android version is below 5 this feature becomes a noop. The related
bug cannot be addressed on Android version below 5.0.
Task-number: QTBUG-61755
Change-Id: I6521b5dad05da5e3e533ef2af56ee649b1b79730
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
The type of manage.state has changed on macOS (like on iOS before),
making an declataion invalid.
(cherry-picked from qtconnectivity/0c3cc5374d2703fde6a99d301fcff974122d057d)
Change-Id: I55caa32fa9f0a85090506cfbd788c1a80d41e8ce
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
| |
canceled should only be emitted if stop was used to abort a
running device discovery. A timeout happening has to cause a
normal finished.
Change-Id: I1072c14a44b84da0cb93420cf7344b8bc56b523e
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
|
|
|
|
|
| |
Change-Id: I87047bbc8b777f597ac4843c0c5466489d764f46
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|\
| |
| |
| | |
Change-Id: Ie41f06095d87c46bb4d64e38bdbeab7646fe2470
|
| |
| |
| |
| |
| | |
Change-Id: I45ca861c02b6d0016441dee3407995ba7ed1c182
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
|
| |
| |
| |
| | |
Change-Id: I4fdc8d221610589caa2d31b3ccc55ebc17f9fff8
|
| |
| |
| |
| |
| | |
Change-Id: I18c0cec1823cc827784c10e8e5bf3ab2ff754580
Reviewed-by: Sergio Ahumada <sahumada@texla.cl>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
lowEnergyDiscoveryTimeout affects the emission behavior of
deviceDiscovered(). This behavior change should be explicitly
documented.
Task-number: QTBUG-57847
Change-Id: I94bd7cb36935b376c34ba90f5de4e3084e87e883
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
timeout 0
If we have a never-ending LE scan, we should report even complete duplicates.
The original bug-report has a scenario with a long-running application, that
records a data from BTLE scales once a day.
Task-number: QTBUG-57847
Change-Id: If5e4828f119d5f4e4418cfe60fa518b583210a14
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the user chooses to do a BTLE device discovery with
QBluetoothDeviceDiscoveryAgent::setLowEnergyDiscoveryTimeout being set to 0,
we should continuously emit the deviceDiscovered() signal and not only once
per device. This patch checks the timeout value before triggering the
duplication detection for deviceDiscovered() signals.
Task-number: QTBUG-57847
Change-Id: I0e43b779a89b918640fe3d812d2500ed0a016cc3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QBluetoothSocket::write() emits the bytesWritten(int) signal when the write
was successful. java.io.OutputStream.write() returns an exception when
it fails. We should not emit bytesWritten() if such an exception occurred.
Change-Id: I76e7a85188102e8227d586450c3e733c046e9957
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Not all platforms use txbuffer for writes. Fortunately those platforms
who do not use it do not use any buffering at all. Hence bytesToWrite()
returned the correct value as txbuffer always had size zero. Therefore
this patch is effectively a NOP.
Nevertheless this patch encourages the right implementation across the
platform.
This does not affect macOS as it has a separate implementation for
QBluetoothSocket::bytesToWrite().
Task-number: QTBUG-58190
Change-Id: Ic05f4358b079f612ee7e0e4dbb7fb9aa78fd6556
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ib311037a4ccf147dcd083ff13c327e29e0dc08f4
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On Android, the socket's read buffer is managed in the Java thread.
QBluetoothSocket::canReadLine() is public API (most likely) being called
by in the main Qt thread though. The function directly called into the
Java buffer instance without proper locking. This can create race conditions.
Starting with this patch canReadLine() calls another QBluetoothSocketPrivate
indirection to allow a platform specific implementation. This affects
WinRT, BlueZ and the dummy backend too.
This is not an issue on macOS as its implementation of QBluetoothSocket
is separate and does not have to deal with multiple
QBluetoothSocketPrivate implementations.
Task-number: QTBUG-58190
Task-number: QTBUG-60830
Change-Id: Idae19f1aee6f809699d36519b01a3c68ad9c563d
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-61392
Change-Id: Ia7d680a40b0fe359dfb5fe69ad9f3e83fe9ccb7d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The following adjustments were done:
- Use new Qt connect syntax
- Add QLoggingCatergory enablers (easy to enable by uncommenting)
- Makes the UI more robust to High vs Low DPI issues
Change-Id: Iad99a67ac375de828883b4add99d440f7a6994c6
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some devices require the Generic Access (GAP) and Generic Attribute (GATT)
services to be defined. Otherwise they refuse a proper interaction.
This is done implicitly by Android and BlueZ. The reason why BlueZ does
not do this for QtBluetooth is because QtBluetooth sets up its own GATT
infrastructure.
Normally a QLEController in central role cannot do that via public API
as the QLEController::addService() function blocks on peripheral use
cases. This patch sets the profiles up.
In the future the feature really requires a better form of API
(beyond the above env variable) or should be enabled by default
but since we need this earlier than Qt 5.10 a more subtle
approach was chosen. For now the feature can
only be enabled if the QT_DEFAULT_CENTRAL_SERVICES was set.
Another limitation is that the characteristics of the added services
are completely static.
Task-number: QTBUG-61554
Change-Id: Id03bddb2e54cc4f0869838e13ddf281311ad3a26
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QByteArray operator [] has return type of char whose signedness is
dependendent on platform and compiler. Casting char to an enum with
negative value does not work on configurations with unsigned char type.
Fixed by explicitly casting action to signed char before converting it
to enum.
Task-number: QTBUG-60268
Change-Id: I733520a70c321c3b8dac9c67cfb096ac97a64b94
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-61392
Change-Id: Ie2173b57093db9285e8fc90dbec66f81b002f7c6
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-61542
Task-number: QTBUG-61392
Change-Id: Iff5c827d7ebb96dd29bc80f444d03804eddf405b
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prior to this change the state transtion of the BluetoothSocket instance
was not distinguishing between the varios state types. It always assumes
any state transtion was a transition to "Connected".
Change-Id: I584b6c467dc77ac0602562d6792c16bf357d831c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I1028bd21ed0950b35ef59598a48e0b274a849d89
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|/
|
|
|
|
| |
Change-Id: Iec4214e7f6d1aab9ea88e3d2fc5025a06b54b8e3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android collects the SDP information for all devices and puts them
into an sdp cache. Only when the discovery finishes the sdp cache is
evaluated and the serviceDiscovered() signal is sent. The evaluation is
triggerd by _q_fetchUuidsTimeout(). If it is not possible
to retrieve uuids or an address for the last discovered device,
the old code never triggered _q_fetchUuidsTimeout(). As a consequence
QBluetoothServiceDiscoveryAgent appeared to never find any service.
This patch ensures that if the last SDP discovery failed we still
trigger the final UUID evaluation and subsequent serviceDiscovered()
signal emissions.
Change-Id: I8454dc3f7cf3688110e6c86af324d797351b5b33
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DBus does not expose this information. The Bluetooth Management API
advertises the information but requires CAP_NET_ADMIN. The Management
class monitors DEVICE FOUND events and records the random bit flag
of each new device. QBluetoothDeviceDiscoveryAgent can subsequently
add this information to the internal data set.
Ultimately this makes QLowEnergyController::setRemoteAddressType
obsolete. This function was only ever required on Linux.
Task-number: QTBUG-46776
Change-Id: If10df86d332dfc7cc98b7c783eb28487c3fa9045
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
|
|
|
|
|
|
|
|
|
| |
The above error code is the equivalent of Android's Unknown error.
Therefore we map the code to QLowEnergyController::UnknownError.
Task-number: QTBUG-61321
Change-Id: I614c1557c453cd5426f5fa0af69011c4e768657b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Due to an Android platform bug, SDP discovery may return the wrong uuid
for the remote service. This bug was introduced by Android 6.0.1 and
tracked by https://issuetracker.google.com/issues/37076498.
The returned UUID is byte swapped. To increase
the QBluetoothSocket::connectToService() convenience QBluetoothSocket
uses a fallback which attempts to connect to the remote service assuming
the uuid was byte swapped. This will only happen if the uuid is not
derived from the official Bluetooth base UUID (aka the given UUID is
truly custom).
There is the slight chance that the reversed UUID is a different service
but that chance is very marginal when considering the amount of possible
custom UUIDs.
Task-number: QTBUG-61392
Change-Id: Ia41d670ab8d0666628f067e174965b698d0f26b0
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
| |
The private BluetoothDevice.getServiceChannel() is no longer available
since Android release 6.0+ (v23+). We silently skip it on those
platforms.
Change-Id: Ia924f1c2fe81ccfb50b8abcfb682c350e9ce49ff
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
| |
This was missed when doing the same change for the non-Apple platforms.
Change-Id: Ib1ef55acc82d98def4e1fc1ca228dabe6a13f241
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
| |
Change-Id: I02c3ffe517edd43624a743818dc98c5ca8135f31
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
QBluetoothServiceDiscoveryAgent performs SDP based Bluetooth service
discovery. There is no need to do a BTLE discovery for the purpose of
triggering an SDP service discovery.
Change-Id: I16448b603e80e778b71ee397c0db14d0502d3acf
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
| |
This affects only Android version 6.0.1 or later. At this stage
there is no available fix yet.
Task-number: QTBUG-61392
Change-Id: Ib63a1974fd0a0533624608df0ebd4c4202a80658
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
| |
The sdpscanner tool was separated and talks to QtBLuetooth via
stdin/stdout. This limited the GPL to the sdpscanner tool only.
Change-Id: Id4849cc17945642a1c5708811d34f38128d42316
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
src/bluetooth/android/devicediscoverybroadcastreceiver.cpp:240: warning: Cannot tie this documentation to anything
[I found a /*! ... */ comment, but there was no topic command (e.g., '\fn', '\page') in the comment and no function definition following the comment.]
The file referenced in the warning does not contribute to the QtBluetooth
documentation. The patch removes qdoc annotation from the file.
Change-Id: Ie5699d79a12e5fc1851a924adbf50ebcb5059454
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the same time we remove the redudant and temporary packet variable.
This was highlighted by a compiler warning:
In function void* memcpy(void*, const void*, size_t),
inlined from void qToUnaligned(T, void*) [with T = short unsigned int] at /home/ablasche/dev/qt/qt59/qtbase/include/QtCore/../../src/corelib/global/qendian.h:82:5,
inlined from void qToLittleEndian(T, void*) [with T = short unsigned int] at /home/ablasche/dev/qt/qt59/qtbase/include/QtCore/../../src/corelib/global/qendian.h:227:3,
inlined from void putBtData(T, void*) [with T = short unsigned int] at bluez/bluez_data_p.h:196:5,
inlined from void QLowEnergyControllerPrivate::readServiceValuesByOffset(uint, quint16, bool) at qlowenergycontroller_bluez.cpp:1692:34:
/usr/include/x86_64-linux-gnu/bits/string3.h:53:71: warning: call to void* __builtin___memcpy_chk(void*, const void*, long unsigned int, long unsigned int) will always overflow destination buffer
return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
Change-Id: I5b8d7781b78ea3e07e30b9b830a4d8885bb8c989
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|\
| |
| |
| | |
Change-Id: I60b91ca386c04a7710f50c5442982f41299d4f8e
|
| |
| |
| |
| |
| |
| |
| | |
Change-Id: I5fd586ce468dd44c862c81c4eb4b021d1269f682
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This shows the example prominently on the Qt Creator Welcome screen.
Change-Id: I6f207e888e6129235356b839a2bb7fecc1fe28a4
Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
Reviewed-by: Sami Makkonen <sami.makkonen@qt.io>
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
BlueZ's improving support for BTLE creates a new collision when
attenpting to connect to remote BTLE devices. There can only ever be
one connection.
This patch ensures that when QtBluetooth attempts to connect we do
not have a pending BTLE connection. This could have been caused via
other QtBLuetooth based processes or applications
such as bluetoothctl or bluetoothd in general. If a connection
is pending we close the connection external to the current QtBLuetooth
instance.
This is not an ideal situation as several processes can potentially
fight over btle access. The long term solution is a port of QtBluetooth
to BlueZ's new DBus API.
Task-number: QTBUG-55150
Change-Id: I96b30ae180d1348027e8f9f09c997f44409dfc48
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-55150
Change-Id: I223e2b2015e210162e59fb994b9352e790b036d4
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Make them explicit.
Change-Id: I9bf1e35bffb044dcbf62fffd14bfe71bc374febf
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
The command queue was not flushed out to the HCI socket.
Change-Id: Ic249fc6d7c93c8ca1026ec010f667b7e155d9c46
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When the QLowEnergyController disconnects and immediately restarts
the re-advertisement, it fails when sending the OcfLeSetAdvEnable ocf
command. Subsequenly an advertisement error is thrown which stops
the QLowEnergyCOntroller instance itself.
Starting with this patch we choose to ignore failures when trying
to disable advertisement. The API cannot report the error back anyway.
Task-number: QTBUG-58941
Change-Id: Ifd6b43193c41e6cdc22d4876441bcdcbcc2ca7b6
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| | |
Change-Id: Ib33b382a710ea14925d41b75289c725ab463dcac
|
|/
|
|
|
| |
Change-Id: Ieefa1cf6f07b05d12e2381d6c72ab56d78b3e7fd
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|