| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Task-number: QTBUG-41175
Change-Id: I62d74236faf9161681306d952e409e23e0cea24d
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android can only handle a defined count of simultaneously connections to bluetooth le
devices. Every Android device have a different defined amount of possible simultaneously connections.
If we do not close the connection and reconnect to the device or another device,
the count of used connections get up. If we exceed the maximum connection count we can not connect
to bluetooth le devices anymore.
The only way to recover is to restart the application to reset the open connection count.
This patch closes the connection after it has been disconnected.
Change-Id: Id96a69ef07eb973216495a0ba8e46fd639338165
Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
handleFor(Characteristic|Descriptor)() find a handle for a given
char and desc. We should reuse it inside the read notifier for
chars and descs.
In addition, under certain circumstances the read/write queue operation
was finished although the queue was not empty yet. This happened when
the last read operation failed with a certain type of error.
Now we always finish with a call to performNextIO().
Change-Id: Ifdb66c0b03d25ae19db7c49bcbe70eeec2665b6e
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The BluetoothGatt.[read|write][Characteristic|Descriptor]() functions
may immediately return under certain circumstances such as writing a
read-only characteristic. So far, this "synchronous" form of error
reporting was not handled.
Any read error during the initial service dioscovery and its related
cache population continues to surpress any read errors.
Change-Id: I4987f67f4a0d2afe58cd144a577a19e0f0d43b33
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
|
|
|
|
|
|
| |
Change-Id: I5652075b4fde4d4927e86f5394baf176f263104f
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In general we extend the concept of the write queue. Not only do we
queue up write requests but also read requests.
The handling of read errors is still missing. Right now the
QLEService::error() signal is not emitted when a readCharacteristic()
and readDescriptor() call fails.
Change-Id: I4b4f086c351c4a29d6e48e8ee9079e9f33f36539
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
These points were raised by Android-studio's Code analyzer
Change-Id: I5481b7ca74ec902b289a71096879e32301ee6494
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
In addition we update the documentation to reflect the slightly changed
API behavior.
Change-Id: Ieddee750aa35a32d3c01213dfbf678ee2a1d88d7
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
| |
Change-Id: I9c26aaa11857db8dc33a99d42347a9b7f6281ad7
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some BTLE devices enable notifications be default. However since
Android's BTLE API requires a call to
BluetoothGatt.setCharacteristicNotification(..) to forward them,
we have to peek at the ClientCharacteristicConfigurations during the
service detail discovery and tell Android to forward the notification
when required.
Change-Id: Ief419404694d70a1373218c1b8275ef868a49ddb
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At this point in time characteristic indication is very much under-
documented. We have to make some guesses along the way notifications work.
Also, it turns out the code already supported indications but was not
very future proof. If the ClientCharacteristicConfiguration is expanded
by future Bluetooth specifications the notifications could have been
enabled despite the two relevant bits not being set. All that was
required was to write {0xFC FF} and the notifications would have been
enabled. This was due to assumption that only the byte array {0x00 0xFF}
being the disabling data set.
Change-Id: I6c54d557f51977418f91baf658b62e1121785029
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
Unfortunately it is not possible to say whether a service is
primary or secondary on Android. The platform doesn't expose this
information.
Change-Id: I9b0aad191308120d2d1992a5e7736b985a375e30
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
| |
Change-Id: I4c50df7d758390989c2e2127f7646e5d2dc34712
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
| |
Change-Id: Ib4f8381a1975e17b5b142f49e0f3f32398a46bfb
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
| |
This covers code optimizations and one minor corner case bug.
Change-Id: I9c4df9462e8610ea37a6e43e20840e537c295684
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
| |
Change-Id: I1c7f0491506c6f0512d097a419660c5f5e7fb144
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
| |
Currently only the WriteWithResponse mode works and has been tested.
Change-Id: I7947b67f737f5878a01704c09d3a9a532a41b820
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Quick disconnecting and reconnecting caused some bugs and revealed some
unreliabe API behavior on Android.
The internal data structures were never cleaned up when disconnecting
from the remote device. If multiple QLEService objects of the same
QLEController instance requested a service discovery, every request
but the first failed. This was fixed by queueing up the service
discovery requests.
Last but not least, reusing the same BluetoothGatt
instance for the reconnect is very error prone. It may well be caused
by Android API bugs. The reconnect would sometimes fail
or toggle the connect/disconnect flag a couple of times which
is not a problem for the Qt API itself but the stability of the related
unit test (see tst_QLowEnergyController::tst_concurrentDiscovery()).
Therefore we won't reuse the same BluetoothGatt instance but rather
request a new one.
Change-Id: I314f2a30960284b9bcd4926f4944c415a6d75788
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
| |
We jump out and that's it. We expect the exception in those cases.
Change-Id: I0fa1b42a0eb5893dec6f68a5353dfb5da3caa137
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the same time this fixes bugs the following bugs:
1.) Non-readable characteristics were not visible
2.) Crashes when descriptor/characteristic values were empty
3.) QLEService::discoverServiceDetails always finished with an
UnknownError
Missing/incorrect are still service details such as included services and
the service type (which currently always defaults to primary service).
Change-Id: Id73013a3784cd3c3f632102f13f5459ab37e95a6
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
Although this makes the lowenergyscanner example functionally complete,
descriptor data and service meta data are still not accessable via the
Qt API.
Change-Id: Ifb84010b4fea054357c07424ac30116d1e4f9de0
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
Primarily the change adds the required data structures and interfaces
on the Java side. What is missing is the reporting of the discovery
details back to Qt.
Change-Id: I37f2e17bb0f87b4c526f1b43a933b9b09b22be72
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
|
|
|
|
|
| |
Change-Id: Ia39e2ad21b0e84cb16a355337370ba82a11b75d0
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: Ibbb1e9f141d494327082aebaf9e34ffe44039115
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
|
|
|
|
|
|
|
|
|
| |
- 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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is no API to get the list of connected Bluetooth devices on
Android. However there are service API's which return a list
of their current clients. In this particular case we find the
GATT related service connections. We use that info to complement
the internal list of connected devices.
Note that although this is using Bluetooth Low Energy related API's
the Qt API does not support this feature at this point in time.
Task-number: QTBUG-36764
Change-Id: Ia8266f3a9d24fd16afdd636ca2d3d0a0c6b2b499
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BroadcastReceiver.onReceive() is executed in the main thread whereas
the Qt classes are in a different thread. This created issues whereby
Java's qtObject pointer was reset by the Qt classes/thread but
onReceive still trying to access the same object later on.
In most cases the Qt classes using BroadcastReceiver were half way
through their object tear down. This patch fixes the problem by
guarding qtObject against concurrent thread access and ensures that
the qtObject pointer is reset before the object tear down starts.
Change-Id: Iab97b0af8e10686d97419ac8504f2fe69e9536f3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous QThread did not always properly resume when
InputStream.read() was interrupted by BluetoothSocket.close().
This patch converts the QThread to a Java thread which works
as the Android API docs suggested.
Task-number: QTBUG-37061
Change-Id: Id6ac9b57a28f3b532cbe49ff1dfdc9d1e6432aaa
Reviewed-by: Nedim Hadzic <nedimhadzija@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Java's BluetoothSocketServer.accept() is meant to be interrupted
via BluetoothSocketServer.close(). Unfortunately if the surrounding
thread is a QThread the returning accept call crashes the thread. This
does not happen if it is a Java Thread.
This commit changes the server's private backend to a Java thread.
Task-number: QTBUG-36754
Change-Id: I5aacc5444bbcd1275a11743b6aa04d2b11a5b22b
Reviewed-by: Nedim Hadzic <nedimhadzija@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
|
This is a feature merge to dev targeting Qt 5.3.
Known issues:
-QTBUG-36754: QBluetoothServer::close() crashes
-QTBUG-36763: QBluetothTransferManager port to Android not possible
-QTBUG-36764: Improve QBluetoothLocalDevice::connectedDevices()
-QTBUG-36810: Remove direct use of Android action strings
The above issues and some other minor TODO's will be addressed
until final release time.
Task-number: QTBUG-33792
[ChangeLog][QtBluetooth][Android] QtBluetooth has been ported to
Android.
Change-Id: I31ba83e3b7d6aa68e7258b7e43235de7d1a6e68a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
|