summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* | Add QBluetoothSocketPrivate interface for AndroidAlex Blasche2018-07-259-97/+189
| | | | | | | | | | | | | | Task-number: QTBUG-68550 Change-Id: Iac05cccd4f6e1b44a30568fb9b6c9171204b53fd Reviewed-by: Lubomir I. Ivanov <neolit123@gmail.com> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Add separate interfaces for QBluetoothSocketPrivate on LinuxAlex Blasche2018-07-2513-62/+431
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Uses the new QBluetoothSocketBasePrivate interface to separate the Linux implementations from other platforms. On Linux, there will be the existing raw socket implementation and a BlueZ5 DBus implementation. The DBus implementation is required for very recent Bluez5 deployments (v5.4x+) which restrict access to traditional SDP discovery means like sdptool. For now the DBus implementation is non-existing/dysfunctional. Task-number: QTBUG-68550 Change-Id: Idd248ecdb2a443a95cde521ced929218d40df3fe Reviewed-by: Lubomir I. Ivanov <neolit123@gmail.com> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Add runtime polymorphism for QBluetoothSocketPrivateAlex Blasche2018-07-2513-190/+343
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces a generic interface towards QBluetoothSocketPrivate. Later on, the QBluetoothSocketPrivate class will be split into platform specific overloads/interfaces. Ultimately, this will be needed to support runtime selection of the QBluetootSocket d-pointer on Linux. The Linux Bluez5 implementation is significantly different from the Bluez4 (raw socket) implementation. Since recent Bluez5 releases the raw socket implementation is no longer functional and/or the user has to have root permission and enable bluetooth --compat mode. Therefore a second QBluetoothSocket for the dbus socket API is needed. QBLuetoothSocket has to choose at runtime (during its instanciation) which implementation to use. Task-number: QTBUG-68550 Change-Id: I5d0b8e24b8acd1b149b897f52f0d82eade7f3823 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Lubomir I. Ivanov <neolit123@gmail.com>
* | Mark classes derived from QLowEnergyControllerPrivate as finalAlex Blasche2018-07-245-10/+10
| | | | | | | | | | | | | | Fixes missing overrides for the dtor in the process. Change-Id: Iea3d010c1cebddaf8ea6ea392a7f13e4d87f67da Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | QBluetoothSocket - fix info message (IOBluetooth)Timur Pocheptsov2018-07-231-1/+1
| | | | | | | | | | Change-Id: If84041384b09a73c1da0277fef571f3ac37155e2 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-07-211-5/+8
|\| | | | | | | Change-Id: I84bb3d8456f1f61b149ab4ff03d2776b165f54e9
| * Fix "QMetaObject::invokeMethod: No such method" for ndefMessageReadLars Schmertmann2018-07-171-5/+8
| | | | | | | | | | | | Task-number: QTBUG-67958 Change-Id: I26118eeee95bebd6f28364b0eea69e8ed2e6b6b2 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | winrt: Only emit characteristicWritten if WriteWithResponse was setOliver Wolff2018-07-181-2/+3
| | | | | | | | | | | | | | | | | | | | | | Winrt API does not distinguish, whether the gatt write was done with or without response but always runs into the callback while doing "the right thing" on a lower level. If WriteWithResponse was not specified, we should not emit characteristicWritten though. Change-Id: I4479296d2931635f6f9d0eb52eed78b394a43d66 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Introduce reportError to fix "QMetaObject::invokeMethod: No such method"Lars Schmertmann2018-07-176-54/+33
| | | | | | | | | | | | Task-number: QTBUG-67958 Change-Id: Ia5a21cb19f0318844ac436adcc3f0fff9a3185b5 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-07-031-8/+24
|\| | | | | | | Change-Id: Ia8ed911dcc724e96edd32424f1167927734945ff
| * Fix crash in QLEController caused by random device disconnectAlex Blasche2018-06-261-8/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This only happens with Bluez 5.42 or later versions as the DBus based GATT central client is used. The peripheral disconnects in the middle of a char or descriptor write request. The disconnect triggers the cleanup of all internal states. The write char/descriptor dbus request returns after the disconnect and executes in the context of an already reset QLowEnergyController instance. The fix ensures that the call back code does not make the assumption of operating with a connected peripheral. In fact the code had the relevant asserts already. [ChangeLog][QtBluetooth][PLatform Specific Changes] Fixed crash in DBus gatt central backend (BlueZ5) caused by device disconnecting and pending dbus call watcher returning later after disconnect. Task-number: QTBUG-68890 Change-Id: Iad9b8a1cfc8d916d49fd9b71b2d8f03b9c90639b Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-06-266-11/+24
|\| | | | | | | Change-Id: I68aa4ba1a2019bb0240f95df6abab7f474677757
| * Fix "QMetaObject::invokeMethod: No such method"Lars Schmertmann2018-06-192-8/+12
| | | | | | | | | | | | | | Task-number: QTBUG-67958 Change-Id: I03dbf411d6a1b2a710d13c1eb5f1f75d594d2a9a Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: André Klitzing <aklitzing@gmail.com>
| * QtBluetooth - handle timeous in characteristic writes (Darwin OS)Timur Pocheptsov2018-06-192-1/+10
| | | | | | | | | | | | | | | | | | | | | | This can allegedly happen when executing write with notification. While never observed so far, can easily be predicted/emulated, resulting in QLEC stuck in queued write/read requests and not progressing any futher. Task-number: QTBUG-68707 Change-Id: I3321257bb84a83a8ea25f9ae4e8acbdb95568cfa Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
| * Doc: Add missing dots (qtconnectivity)Paul Wicking2018-06-192-2/+2
| | | | | | | | | | | | Task-number: QTBUG-68933 Change-Id: I51d80cbc5ab1b3c8938e5004e399a9df4e7af5e0 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Use functor-based connections in the nfc implementationLars Schmertmann2018-06-196-37/+37
| | | | | | | | | | Change-Id: I90b6f044a902dabd08f0eccfc55438aab571c331 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-06-191-0/+3
|\| | | | | | | Change-Id: If5ed1c018f39b0fe3c99bb7097c730e2d610d5c5
| * Fix QLEController::connectToDevice() on reconnect behaviorAlex Blasche2018-06-181-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the desired remote peripheral is already connected, the next call to connectToDevice() does not succeed. The code path to handle this situation already exists it was forgotten to emit the relevant connected() signal. This patch fixes the problem. The problem only exists on Bluez 5.42+ platforms which use the DBus central implementation. [ChangeLog][Platform Specific Changes][Linux] Fixed missing emission of QLEController::connected() upon reconnect to already connected device. This affected platforms with Bluez 5.42+ only. Task-number: QTBUG-68911 Change-Id: Ife2f3b41c33a142d6627e433cb3b141ce9b1ff8a Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-06-0410-143/+469
|\| | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I900173fbf9de694345c0ee2534f605bac76b8fe6
| * LE controller (CoreBluetooth) - handle timeoutsTimur Pocheptsov2018-06-042-36/+199
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While we're discovering service's details (included services, characteristics, descriptors, etc.) some operations can result in timeout, without CoreBluetooth reporting any error back. To cope with this we need an additional logic - all such operations must be guarded with a 'watchdog' timer (OSXBTGCDTimer). Fortunately enough, we can re-use CBPeripheralDelegate's callbacks to handle these timeouts. As a micro-bonus - a couple of bugs in callbacks: whenever we are in service details discovery, after having some error we have to finish with discovery anyway, not to stick in 'discovering' state forever. Task-number: QTBUG-68422 Change-Id: I13a377ebec3983ac48a33d6b89b67223d5ec412f Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
| * Reimplement scan/manager state timeouts using GCD timerTimur Pocheptsov2018-05-313-99/+34
| | | | | | | | | | | | | | | | And remove some essentially duplicated code. Task-number: QTBUG-68422 Change-Id: I677581ebb0998d64a0081f568479efb7e8156474 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
| * Add G(rand)C(entral)D(ispatch) timeout handlerTimur Pocheptsov2018-05-313-1/+208
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QtBluetooth is using its own dispatch queue in CoreBluetooth back-end - this is where CoreBluetooth is executing all callbacks we're providing in delegate classes. Some operations like service discovery/characteristic or descriptor read(s) amd write(s) e.t.c. may sometimes fail to finish - no value read, no error reported (so delegate's method - callback - is never called). To deal with this we introduce the class OSXBTGCDTimer and GCDTimerDelegate protocol; GCDTimer periodically inserts blocks into the serial LE queue and checks for timeouts upon their execution. Task-number: QTBUG-68422 Change-Id: Ic17bf91d4223ad1ffc7b9808da36c902a4158227 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
| * Properly invalidate services when calling disconnectService() on BlueZAlex Blasche2018-05-293-7/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While the central role implementation properly invalidates all the LowEnergyServicePrivate instances, peripheral mode was leaking service instances. This is triggered when the peripheral disconnects from a client or when the user calls disconnectService(). On the other hand stopAdvertising() does not do that. This patch fixes the service instance leak and ensures that the class docs specifically state the behavior difference between stopAdvertising() and disconnectService(). Change-Id: Ia52b141096dc1db3d0cefe3ed18c230eecccd9c0 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Use Android broadcast ACTION_ADAPTER_STATE_CHANGEDLars Schmertmann2018-05-306-1/+144
| | | | | | | | | | | | | | | | To avoid polling of the NFC adapter state a signal is added to the QNearFieldManager. Change-Id: If9e1e8025cca2deb1338fa7db255ebe171cab823 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-221-0/+9
|\| | | | | | | Change-Id: Ib6a0651247308b7fed71e5694360c60a48f6c260
| * Doc: Add license details to index page of Qt NFCKai Koehne2018-05-151-0/+9
| | | | | | | | | | Change-Id: Iae1cde9f313d6d97858e2bf9de974b0e09bad1b4 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-084-7/+17
|\| | | | | | | Change-Id: I3615f4bb7013edb362a93538af3847663259d21f
| * Make Adapter1.RemoveDevice() call asyncAlex Blasche2018-05-041-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | This function is called as part of QBluetoothLocalDevice::requestPairing(..., Unpaired). On heavy I/O systems this may be a rather slow function call. This patch ensures that the function is called asynchronously. Task-number: QTBUG-64735 Change-Id: I7e3b4ab3e9dca26a33af4d13bcc0ea64c44e1540 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
| * Add missing emission of readChannelFinished()Alex Blasche2018-05-043-0/+6
| | | | | | | | | | | | | | | | | | This fixes the problem for all supported platforms. Task-number: QTBUG-67672 Change-Id: I9cecfbe8a73df46070293eba1870ea3bee738b7b Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-011-12/+27
|\| | | | | | | Change-Id: Ia496130e0d71a85670af3ca1cadf81c71d3c2462
| * Fix crash when entries is empty (caused by disconnect somewhere else)Alex Blasche2018-04-301-12/+27
| | | | | | | | | | | | | | | | | | | | The patch fixes the obvious problem of the crash. The question is however what might have caused entries to be empty. The only theoretical explanation is the remote device being disconnected (which resets most internal data). Task-number: QTBUG-65826 Change-Id: I6b3509248f795d9cee5dcfe0c6e0caf06405b4e4 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | Remove the code to manually initialize resources in static buildsSimon Hausmann2018-04-272-16/+2
| | | | | | | | | | | | | | | | | | After commit be9a56e5e3ced5d0d668fa24e4c65ae928f2e25a in qtbase, this is not needed anymore. Instead the resource system injects the plugin entry point with a reference to all resources. Change-Id: Ic2200668bc1e5cacf78d2808d33eb5c4f30d2c6a Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-04-247-14/+110
|\| | | | | | | Change-Id: I1cb008cda8abe9a4167f3f62f003583141d217c1
| * General QML version bump in docs and qmltypesAlex Blasche2018-04-194-4/+4
| | | | | | | | | | Change-Id: If31e244e44106af1550e572acb9a172497467b20 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
| * Android: Fix start/stop behavior of QLowEnergyController (peripheral)Alex Blasche2018-04-172-8/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch addresses two bugs. Firstly it ensures that the correct Java function is executed when disconectFromDevice() is called on Android peripheral. Secondly, it turned out that calling disconnectFromDevice() while a connection to a central exists and restarting the advertisement resulted in a non-functional QLEController instance because BluetoothGattServer was not properly restarted. As a side effects the controller's state tracking stopped as well. Change-Id: I98851fc974ceff2a1fcb03fe754dbda9c4aba271 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
| * BlueZ: Ensure that QLEController::remoteName() has a valueAlex Blasche2018-04-171-2/+77
| | | | | | | | | | | | | | | | | | | | This fixes the problem for the custom GATT stack on Bluez4 and older Bluez5 versions (below 5.42). Task-number: QTBUG-67651 Change-Id: Ia3c64c06777c8d357f615d681838bcdc83b92236 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-04-173-2/+21
|\| | | | | | | Change-Id: Ib695b1c1e59904f65bf60f0fe9878483e608e737
| * Android: Fix QLEController's remoteName() and remoteAddress()Alex Blasche2018-04-162-0/+15
| | | | | | | | | | | | | | | | The values were never obtained on the Java side. Task-number: QTBUG-67651 Change-Id: Ifceb124b07cf505c4e96fe7ba9d58364b3923c3a Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
| * BlueZ: Fix crash when discovering GATT service without readable itemsAlex Blasche2018-04-161-2/+6
| | | | | | | | | | | | | | | | | | | | The jobs list might be empty and calling last() causes an assert in QVector. This implies the current process under discovery does not have any descriptors or characteristics which are readable. In such cases no async read requests have to be put forward and the discovery is already done. Change-Id: I8417bfcd146866cb16c295c9e9d4890270574a56 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-04-102-2/+3
|\| | | | | | | Change-Id: Icd522a25b5aecb7ce7f4068e13897e23d8e58a9f
| * Fix missing includev5.11.0-beta4Alex Blasche2018-04-091-0/+1
| | | | | | | | | | | | | | It caused problems for the code model Change-Id: I57978be203b24a44c67ce826ec9957755029cfd1 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| * Add missing headers while generating DBus interfacesLisandro Damián Nicanor Pérez Meyer2018-04-091-2/+2
| | | | | | | | | | | | | | | | | | Make qdbusxml2cpp include bluez5_helper_p.h to make definitions available to device1_bluez5_p.h and objectmanager_p.h. Task-number: QTBUG-66936 Change-Id: If700aeba7c67c10030f3d0fe2ac4e6bc0aeca3ed Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-244-13/+26
|\| | | | | | | Change-Id: I5adaa0e82dd12999d95d5d1f631ba6b53bb31433
| * Ensure that BTLE scan works if app has ACCESS_FINE_LOCATIONv5.11.0-beta3Alex Blasche2018-03-211-10/+20
| | | | | | | | | | | | | | | | | | | | | | | | BTLE scanning requires Android's ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION. The permission must be requested at runtime (assuming it was declared in the manifest file). So far, Qt only ever requested coarse location although FINE location is a perfectly OK substitute and the manifest may only declare FINE location. Task-number: QTBUG-66490 Change-Id: I4ce6a25735cb7cdf939f94f8fa545676d391ca2d Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| * Fix compiler warningAlex Blasche2018-03-211-0/+3
| | | | | | | | | | | | | | | | qlowenergycontroller.cpp:295:82: warning: unused parameter 'role' [-Wunused-parameter] static QLowEnergyControllerPrivate *privateController(QLowEnergyController::Role role) Change-Id: I4d3d2ad1e2dbabd0101efd6294a2481491587926 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| * Fix shadow warningAlex Blasche2018-03-212-3/+3
| | | | | | | | | | | | | | | | | | qbluetoothsocket.h: In member function 'void QBluetoothSocket::connectToService( const QBluetoothAddress&, QBluetoothUuid::ServiceClassUuid, QIODevice::OpenMode)': qbluetoothsocket.h:111:5: error: declaration of 'openMode' shadows a member of 'this' [-Werror=shadow] Change-Id: Ib9478027799b287430721d99bebee4002a1e5896 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Add since command in documentation for new API methodAndrew O'Doherty2018-03-201-0/+2
| | | | | | | | | | | | | | | | | | Specify for which release the isSupported method will be available Task-number: QTBUG-62169 Change-Id: Iee1e63b5727ab6cce87d0fb587a5bb76e6d502f5 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Add NFC API method isSupportedAndrew O'Doherty2018-03-1510-1/+55
| | | | | | | | | | | | | | | | Add API method isSupported to allow to check if the device supports NFC Task-number: QTBUG-62169 Change-Id: I4ff7f06348ecc902e66ee79bdd8abde672578904 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-134-14/+17
|\| | | | | | | Change-Id: I57338ea228fb533a4a16cf09ebfe4e65d012b00f
| * Enable new DBus LE backed for central role use casesv5.11.0-beta2Alex Blasche2018-03-082-9/+12
| | | | | | | | | | | | | | | | | | | | The manual override env variable was renamed. The new name is more fitting for the use case. Task-number: QTBUG-46819 Task-number: QTBUG-66908 Change-Id: I9202ebf3f847d5c7dcc9e3c84b060b35343dd2fd Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>