summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qlowenergycontroller.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Bluetooth LE: Fix crash introduced by latest merge.Christian Kandeler2016-02-231-0/+1
| | | | | Change-Id: Id854c4c412555722bbc01783c0768586eb3ea4ec Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Bluetooth LE: Give rationale for API design regarding included services.Christian Kandeler2016-02-231-0/+1
| | | | | | Task-number: QTBUG-51152 Change-Id: I5e4eee324f0008291be734db7a9d984071ca57c9 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-02-161-0/+3
|\ | | | | | | | | | | | | | | Conflicts: .qmake.conf src/bluetooth/qlowenergycontroller_bluez.cpp Change-Id: I00f45a2a22a045e7836f2caeb76cc5599ced6279
| * Bluetooth LE: Fix premature initialization of HCI manager.Christian Kandeler2016-01-151-0/+3
| | | | | | | | | | | | | | | | 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>
* | Improve BTLE documentationAlex Blasche2016-02-101-3/+5
| | | | | | | | | | | | | | Fixes a few qdoc warnings and improves the available content. Change-Id: I286cfdeb85d3be2d100e00150efedf7645096f69 Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* | Bluetooth LE: Add support for Signed Write command.Christian Kandeler2016-02-031-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - This is how we get at the signature resolving key: 1) On connection from a client, we read the key from the respective BlueZ settings file (BlueZ 5 only, as I did not manage to find out where BlueZ 4 keeps this information). 2) Also monitor the HCI traffic for key updates (due to re-pairing). - While there is an autotest for the actual hashing procedure, the overall feature cannot be easily tested for various reasons (there is no signed write support in our client API, for one). However, to help with manual testing, the server part of our autotest now exposes a characteristic that supports signed writes. - This feature requires a Linux kernel >= 3.7. Change-Id: I7ede9b430de167fe1f4519eedf8670d88d79aa25 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | Merge remote-tracking branch 'gerrit/dev' into neardAlex Blasche2016-01-261-14/+20
|\ \ | | | | | | | | | Change-Id: If9cf6718cbd619dd7ce38db2da274fe9d0a41fb7
| * | Updated license headersAntti Kokko2016-01-201-14/+20
| |/ | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I856c13e2a6d4d12c46e1286b0ca1c092ee4608f8 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Bluetooth LE: Add connection update functionality.Christian Kandeler2016-01-181-0/+30
| | | | | | | | | | | | | | Implemented for BlueZ only. Change-Id: I358a98bbc7499d5ce5437fb0d4672fde46c3b831 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | Merge remote-tracking branch 'gerrit/dev' into neardAlex Blasche2016-01-051-2/+3
|\| | | | | | | | | | | | | Conflicts: src/bluetooth/qlowenergycontroller.cpp Change-Id: I28b116deb3fa87169432eb2d94b70894359a9057
| * Handle undefined QLowEnergyController error cases as Unknown errorAlex Blasche2015-12-231-0/+1
| | | | | | | | | | | | | | | | | | 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>
* | Bluetooth LE: Implement GATT server write support.Christian Kandeler2015-12-151-0/+2
| | | | | | | | | | | | | | | | | | | | Write Request, Write Command and Execute Write Request are fully implemented now. Signed Write support is still missing. Notifications and Indications are sent. The server side gets informed via the respective signals when a client writes a characteristic or descriptor. Change-Id: Icba6a0270f6e1c4c3ed2ba61b55c1a5fbb69752b Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | Merge remote-tracking branch 'gerrit/dev' into neardAlex Blasche2015-12-031-6/+5
|\| | | | | | | Change-Id: I1fc766d26aadb7cc01d33c4c8a2260411d7bb138
| * Merge remote-tracking branch 'gerrit/5.5' into 5.6Alex Blasche2015-12-011-6/+5
| |\ | | | | | | | | | Change-Id: I4404df69bfdac335e9c1eb63e4ada3ba89b48b6c
| | * Don't register meta types during static init time5.5Alex Blasche2015-11-301-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QMetaType register my not be up and running by the time we attempt these meta type registration. Change-Id: I1a857a936a24b4b00a49574fac311c08c09b3d5a Task-number: QTBUG-49455 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | | Bluetooth: Fix reversed logic.Christian Kandeler2015-11-231-1/+1
| | | | | | | | | | | | | | | Change-Id: I8d1856a5ed51a35d0eaca672e1c1ab867086ab4f Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | | Bluetooth: Add API to set up GATT services.Christian Kandeler2015-11-201-3/+71
| | | | | | | | | | | | | | | | | | | | | This is the next step in implementing LE peripheral support. Change-Id: I5e8cb186d556e7bfb9ae8a5e60e051ff7398b77d Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | | QLowEnergyController: Listen for and accept GATT connection requests.Christian Kandeler2015-11-191-3/+5
| | | | | | | | | | | | | | | | | | | | | BlueZ only. No requests are handled yet. Change-Id: I25058989beb5b3ae02a4f43eeaec09c8225198dc Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | | Bluetooth: Introduce API for LE advertising.Christian Kandeler2015-11-171-15/+161
|/ / | | | | | | | | | | | | And provide an implementation for BlueZ. Change-Id: I302aee7c43b77016d9e1e7a0d5bcbf00096abf76 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | QLowEnergyController: Add missing error string for ConnectionError.Christian Kandeler2015-11-101-1/+5
| | | | | | | | | | | | | | | | Also remove the default case from the switch so the next such oversight causes a compiler warning. Change-Id: If332a9a00698debb834462f442dddb0dac40b83d Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | [Bluetooth] Optimize loopsKonstantin Ritt2015-09-161-21/+38
|/ | | | | | | | | | | | Decrease complexity from O(N+N*logN) to just O(N) for cases like foreach (Key key, map.keys()) Value value = map.value(key); , by rewriting with use of iterators. Change-Id: I81f1334797f16b624293fcebdee885b2be3c89f1 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Remove some Tech preview remnants from Bluetooth documentationAlex Blasche2015-05-181-3/+0
| | | | | Change-Id: Ifcae07ef5e046f45848495f4d6af973cde713fdf Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
* Reduce platform specific code linesAlex Blasche2015-05-121-0/+4
| | | | | | | | | | | | QLEController(QBluetoothAddress) ctor is not usable on iOS and OSX. On those platforms we have to use QLECOntroller(QBluetoothDeviceInfo). We mark the QBluetoothAddress based ctors of QLEController obsolete and remove most uses of them. This cleans up some ifdefs throughout the QtBluetooth code base. Change-Id: Ibe1e3fa271a29461e39fc3c0eeba7a910a250077 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
* add remoteName() method to QLowEnergyControllerKevron Rees2015-05-121-0/+11
| | | | | | Task-number: QTBUG-45435 Change-Id: I3ded6bf88d3980481e386073ce160d5d54520034 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
* Update copyright headersJani Heikkinen2015-02-161-7/+7
| | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I3822a6484e8f7a420330de1cb1aeb0c3d1cf41b7 Reviewed-by: Sergio Ahumada <sahumada@texla.cl>
* Document Android's caching of BTLE service data.Alex Blasche2014-11-261-0/+7
| | | | | | | | | | It can be confusing. As more platforms are supported, this behavior needs to be verified too. The Bluez implementation does not exhibit this cache behavior. Change-Id: I42dd003f2ac2632c32e48b1b1784e4ca529950f3 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-11-211-1/+3
|\ | | | | | | Change-Id: Ie8293c006bb74cdf324073044a0c622d44651324
| * Fix QLEController::connectToDevice() documentationAlex Blasche2014-11-111-1/+3
| | | | | | | | | | | | | | | | A logical condition was inverted. Change-Id: Ia7b54fe75a8cea4275e3c92c6283bc12f3423b64 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | Fixes for QLowEnergyController unit test on AndroidAlex Blasche2014-11-111-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It turns out mutliple connections to the sam remote device are possible. The limitations on Linux are implementation specific. We lift the general API limitation and document the insufficient behavior on Linux. A bug has been filed to track this limitation. On Android, unit tests require widgets support to run as we need a QGuiApplication. Change-Id: I37c487246ea6115d3441ca91a920279adbdf726e Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | Add enum for failure to connect to remote BTLE device.Alex Blasche2014-11-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | In addition we restrict the emission of disconnected() signal on Android to those cases when we had an established connection. [ChangeLog][QtBluetooth][QLowEnergyController] QLowEnergyController::ConnectionError enum value added. Change-Id: I3602e303e61a872855925a26e695f2bc880cf540 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* | Android: Add ability to (dis)connect to BTLE devices on AndroidAlex Blasche2014-11-041-0/+12
| | | | | | | | | | | | | | | | and keep tracking the connection state Change-Id: If4d05fa18c78802ae06096884fba78eed123e77f Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* | QLEController(QBtDeviceInfo, QObject*) ctor is new, mark it as suchAlex Blasche2014-10-281-1/+3
| | | | | | | | | | | | Change-Id: I861c69c0afc8a85a7c1127a9de4e76b9d486c0bc Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* | Add QLeController ctor that takes QBluetoothDeviceInfoAlex Blasche2014-10-171-0/+22
|/ | | | | | | | | | This ctor is required for OSX as the remote device address cannot be retrieved. On other platforms this ctor is syntactic sugar to be able to directly feed the device search results into the controller. Change-Id: I4839a48861ebc625740e37aee5a779deeb32f96d Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Make it more obvious that QLowEnergy* classes are Tech previewAlex Blasche2014-09-261-0/+3
| | | | | | | | Although no larger changes are expected the QLowEnergy* classes only provide a limited API commitment. Change-Id: I244403b8818c2b34a97c8d6f2633e4b94646e49b Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
* Support writing of long characteristic valuesAlex Blasche2014-09-081-1/+1
| | | | | | | | | | | | | | | | | In this context long means the characteristic value is longer than the maximal ATT message size. In such cases the Bluetooth spec demands a combination of PrepareWrite commands finished by an ExecuteWrite. This is very similar to reliable writes which use the same combination of prepare/execute but permit the atomic writing of multiple characteristics at the same time. Reliable writes are not (yet) supported by the public API. Also, this works for characteristics only. Long descriptor writes will follow. Change-Id: Id139ad1848c92ca5ebf1bd1dfe8e3da297312d4f Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Improve extended properties docs and fix qdoc errorv5.4.0-alpha1Alex Blasche2014-09-051-1/+1
| | | | | | | This adds some valuable piece of information from the Bluetooth spec. Change-Id: Idb0211e23a3fc03674f7878eaebea9c529dbd69d Reviewed-by: Topi Reiniƶ <topi.reinio@digia.com>
* Add a way to detect that the QLEController is performing a discoveryAlex Blasche2014-09-021-0/+5
| | | | | Change-Id: Ie3146c136461ad4ecde4169f3b30dda0c814ca7b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Add support for random vs public remote address connectionsAlex Blasche2014-09-021-0/+34
| | | | | | | | | | | | | | | | This is required to be able to connect to devices which use random device addresses. Some platforms can determine this flag based on their last device scan. The flag is likely to be provided as part of QBluetoothDeviceInfo once the information is available. Unfortunately non-le scan on BLuez doesn't inform about the flag. The LE device scan is currently not implemented and, even worse, requires root privileges on Linux. The new API element permits the selection of the correct type when the scan doesn't detect the type properly. Change-Id: I8e7118658a7c927e0ea07b0d639d57f9483cb33c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Update license headers and add new licensesJani Heikkinen2014-08-241-18/+10
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: I7a8b8b787fcae9a178794364efdefe1021d10b1b Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Add class documentation for QLowEnergyServiceAlex Blasche2014-08-181-1/+8
| | | | | | | This class is part of the new Bluetooth Low Energy feature in Qt 5.4 Change-Id: If10cac1ac1312cb63137c854a4456bf2d646f630 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
* Add class documentation for QLowEnergyControllerAlex Blasche2014-08-151-1/+205
| | | | | | | This class is part of the new Bluetooth Low Energy feature in Qt 5.4 Change-Id: Ib1a8000b4ad256400f18e241a296fe1ffa97414a Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
* Support reading of chars & descs if their value is larger than MTUAlex Blasche2014-08-131-9/+28
| | | | | Change-Id: I49945b13f9b2ee025541c7f689b55fa994c8057d Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Implement support for QLowEnergyService include hierarchies.Alex Blasche2014-08-131-0/+24
| | | | | Change-Id: Id11d2dcb06bd04bc1d911d746002fbbc53326ffa Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Rename QLowEnergyControllerNew -> QLowEnergyControllerAlex Blasche2014-07-231-0/+317
| | | | | | | | Moves the new API into its place and completes the removal of the old API. Change-Id: I10a285e24e288aeb747cb1606574e27a4bf57308 Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Remove old GATT APIAlex Blasche2014-07-231-261/+0
| | | | | | | | | The subsequent patches will rename QLowEnergyControllerNew to QLowEnergyController and fix up the documentation fragments which still point to the old API. Change-Id: I084e6b1a85a17f424702018f3ad7047bda35d46a Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Fix BTLE related qdoc errorsAlex Blasche2014-06-041-33/+32
| | | | | | Change-Id: Id1a56b0ed050fd9cebee8738351e560b442d748f Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Improve handling of QBluetoothUuid::CharacteristicType enumAlex Blasche2014-06-041-0/+1
| | | | | | | | | | | - Sort enum values based on their hex values - Add QBluetoothUuid::characteristicToString(CharacteristicType) - Rename QBluetoothUuid::CharacteristicDescriptor -> DescriptorType - Add a couple of missing \since tags Change-Id: I9724eb2f43c6978f07420bf6ec4c8557ad9efbaf Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Added and improved error handling in controller classNedim Hadzic2014-03-251-3/+26
| | | | | | | Error enums added and implemented together with examples. Change-Id: I912c396080ee9a6b87f41104eb7e41f8c62abf8b Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Bind QLowEnergyController to a particular local adapter.Alex Blasche2014-03-151-3/+19
| | | | | | | | | This simplifies the internal LEServiceInfo logic and let's us later deal with multiple adapters. Change-Id: I7d3e991207cd6571b5d644ae99c6bf1a2c99ec68 Reviewed-by: Nedim Hadzic <nhadzic@blackberry.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Bluez BLE write characteristic and descriptor value moved to controllerNedim Hadzic2014-03-131-0/+24
| | | | | | | | In the QLowEnergyController class write options for characteristic and descriptors are added. Change-Id: I5cc5dab1d3d2ef75d99eae045959f70524e65c91 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>