summaryrefslogtreecommitdiff
path: root/src/bluetooth/qbluetoothsocket.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Bluez5: Fix serial service discovery inside QBluetoothSocketAlex Blasche2016-04-291-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Add comment that QBluetoothSocket only supports asynch read/writeAlex Blasche2015-11-021-0/+3
| | | | | | Task-number: QTBUG-38916 Change-Id: Ibd425ca24a1a98433f7b9d8b1fa11a7c287de871 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
* QBluetoothSocket's securityFlag exists since Qt 5.6 and not 5.5Alex Blasche2015-09-151-2/+2
| | | | | Change-Id: I13c7ec6b588280f01ce13699199177c45040645e Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
* Add preferredSecurityFlags to QBluetoothSocketAlex Blasche2015-07-031-0/+54
| | | | | | | | | This permits the API user to determine the security parameters for the connect attempt to the remote SPP service. Task-number: QTBUG-46377 Change-Id: I1ed5ea0f5a32aa08dcedc46a34b0377654e420b2 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
* Remove QNX/BlackBerry implementation for QtBluetoothAlex Blasche2015-06-171-11/+10
| | | | | | | | | [ChangeLog][QtBluetooth][Platform Specific Changes] Removed support for Blackberry 10. Change-Id: I431c4f34bb10aa3668542df7a8b3403b61bf4705 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Merge branch '5.4' into 5.5Alex Blasche2015-04-011-0/+14
|\ | | | | | | Change-Id: I177affc6c60fd3cc55e914a7ea2a9aeba260906f
| * Fix crash in QBluetoothServiceDiscoveryAgent on Bluez 5.xAlex Blasche2015-03-231-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The list of internally discovered devices was already cleared. It should not be referenced anymore. Furthermore the QBluetoothSocket is killed while its internal QBluetoothServiceDiscoveryAgent is still running. This change stops the agent as well and thereby prevents more QBluetoothSocket slots froms being invoked and a more controlled termination of QBluetoothServiceDiscoveryAgent. [ChangeLog][QtBluetooth][Android] Fixed crash in QBluetoothServiceDiscoveryAgent on Bluez 5 when using single device discovery. Single device discovery is used during QBluetoothSocket::connectToService(). Task-number: QTBUG-44930 Change-Id: Ib3129c492151a3fe12b0c451cf5ffdddc62d001c Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.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>
* | Merge remote-tracking branch 'gerrit/5.4' into HEADAlex Blasche2014-10-161-5/+14
|\ \ | |/ | | | | Change-Id: Ic6549b3d728fbc9ad2425d0d6902aeac8c81e6be
| * Fix QBluetoothSocket::isReadable()/isOpen()/isWritable()Alex Blasche2014-10-131-5/+5
| | | | | | | | | | | | | | Change-Id: Ifd6b5ed8176aa7959ed8da0edc762266aa2bd6fa Task-number: QTBUG-32704 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
| * Improve QBluetoothSocket::close() documentationAlex Blasche2014-10-101-0/+9
| | | | | | | | | | | | | | | | | | | | The disconnected() and stateChanged() signals are delayed which may easily overlooked by API users. This change specifically points out this behavior difference. Change-Id: I3a9e9c656da50c9efe455cd2dbf903a2849e36da Task-number: QTBUG-41770 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
* | Merge branch '5.4' into btleAlex Blasche2014-10-011-0/+9
|\ \ | |/ | | | | Change-Id: I3c00855a33c1015d159a67e5548fd29164668929
| * Don't permit write of non-existing or empty data via socketAlex Blasche2014-09-261-0/+7
| | | | | | | | | | | | Change-Id: Ic8387dd411a9784b6163a15d423cdeaa5e63ea30 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
| * Add \since to all Qt Bluetooth classes which didn't have the tag yetAlex Blasche2014-09-261-0/+2
| | | | | | | | | | | | Change-Id: I50d818294cb53962bca2b08edbfdc4558890777c Task-number: QTBUG-36775 Reviewed-by: Topi Reiniƶ <topi.reinio@digia.com>
* | Port QBluetoothSocket to OS X.Timur Pocheptsov2014-09-261-1/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement QBluetoothSocket using IOBluetooth framework on OS X (will implement Qt's API as close as possible with a given Apple's API). Update 0: add (empty for now) delegate classes (L2CAP/RFCOMM). Update 1: add service discovery (called doDeviceDiscovery though). Update 2: implement the public class' logic (QBluetoothSocket, connectToService). Update 3: more public logic implemented (since it's easy :) ) Update 4: L2CAP delegate - initial logic. Update 5: connectToService - L2CAP "socket". Update 6: fix pivate header files. Update 7: fix dependency after the previous patch was merged. Update 8: writeData - initial version for L2CAP. Update 9: since RFCOM/L2CAP delegates have the same interface, no need in duplicating the same class - add a "generic" ChannelDelegate instead. Update 10: more RFCOMM logic. Update 11: function to build a service description from QBluetoothServiceInfo (to be registered on SDP server). Update 12: QBluetoothSocket::close/abort. Update 13: Create a dictioinary out of QBluetoothServiceInfo to register a service. Update 14: Add service registration. Update 15: Convert attributes (sequences and 'scalars') from QBluetoothServiceInfor into NSDictionary. Update 16: Update QBluetoothServiceInfo with a real PSM/ChannelID after a service was registered. Update 17: Move a private class (bluetooth socket) into the separate private header file (to make it visible for bluetooth_server_osx) Update 18: Add an interface to create a bluetooth socket (private class) from a channel, reported by a notification (found by a listening server). Update 19: Fix an invalid assert - any state (Inactive/ServiceDiscovery/DeviceDiscovery) is possible, not only Inactive. Implement the missing 'readData' and 'writeData' for RFCOMM. Set SDP query as non-active after query finished. Temporary (!) workaround - can not invokeMethod on a private socket (d_ptr). Update 20: When creating a socket wrapper from an incoming notification/channel, set: socket type + channel's delegate. Change-Id: Idd6d5478597206ed759f49e282baed948d105ddf Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Merge remote-tracking branch 'origin/5.3' into 5.4Frederik Gladhorn2014-08-281-1/+3
|\ | | | | | | | | | | | | Conflicts: src/bluetooth/qbluetoothdevicediscoveryagent_p.cpp Change-Id: Ie8bf1903f9c7c1ccd5b05a3f97049ae0882b88b8
| * Fix L2CP socket connectionsv5.3.25.3.2Alex Blasche2014-08-271-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | L2CP's psm (the RFCOMM port equivalent) was never published via SDP. Therefore the service client could not get the required information to connect to the server. After this patch Qt properly publishes the psm. Also, QBluetoothSocket::connect() initiated a service discovery to obtain the missing psm. Since the published SDP entry didn't contain one, protocolServiceMultiplexer() always returned 0 and another service discovery was initiated. This caused a crash inside QBluetoothSocket because the 1st QBluetoothServiceDiscoveryAgent instance was deleted in favor of the 2nd. The patch changes the client behavior such that it doesn't crash if the service discovery didn't turn up a valid psm/port. It improves the robustness in case of an error and avoids a second service discovery (which wouldn't turn up more information anyway). The bug only affected Bluez as it is the only platform supporting pure L2CP sockets. Last but not least a capability to test L2CP sockets was added to bttestui. Change-Id: I46c88a67c2baa4782ea908e645dcd4db9422dbba Reviewed-by: Fabian Bumberger <fbumberger@rim.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>
* Refactor disconnection signals emittance in QBluetoothSocketOleg Shparber2014-04-151-0/+9
| | | | | | | | | | | This fixes duplicate switching to the unconnected state in case the disconnect() signal is used to reconnect. [ChangeLog][QtBluetooth][QBluetoothSocket] Fixed duplicate emission of unconnected state in the reconnection case. Change-Id: If449420d936c96e62518fc408e6a1e35b79988a8 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Remove QBluetoothSocketPrivate::socketDescriptor()Alex Blasche2014-02-261-0/+1
| | | | | | | | | The function is not required as the public accessor function directly returns the socket descriptor. Change-Id: I6d64bec7b4f0542ce213dc90dcfe30c3885ed21d Reviewed-by: Nedim Hadzic <nedimhadzija@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Don't refuse the connect attempt while in ServiceLookupState.Alex Blasche2014-02-201-1/+1
| | | | | | | | | QBluetoothSocket::connectToService can be called by itself when it does an SDP discovery. This affects Bluez only but the bug was introduced by the Android port. Change-Id: I1c9b0504acaafc7dbf2fc3d94b0c2c20a0cb8c65 Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Merge remote-tracking branch 'gerrit/stable' into devAlex Blasche2014-02-141-0/+1
|\ | | | | | | | | | | | | | | Conflicts: src/bluetooth/qbluetoothserver.cpp src/bluetooth/qbluetoothserver.h Change-Id: Ia99c341ab6b4fb30d9ceb9e4516c7083eed1c547
| * Fix missing QBluetoothSocket::state update after unsuccessful SDP searchold/5.2Alex Blasche2014-02-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | When connectToService() triggers an SDP discovery the search may fail. At the beginning of the discovery the socket state was set to ServiceLookupState. This patch ensures that the socket state resets to Unconnected if the SDP discovery failed. Currently only Bluez uses this discovery mechanism and therefore is the only affected platform. Change-Id: I982dafc1f5466071bbf910ed3cf7cf7abda14fe4 Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* | Port QtBluetooth to AndroidAlex Blasche2014-02-131-27/+70
|/ | | | | | | | | | | | | | | | | | | | | | 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>
* Synchronize setting of QBluetoothSocket's error string, code and signalAlex Blasche2014-01-301-3/+6
| | | | | | | | | | | This fixes a few cases where errorString, error signal and error code where out of sync because one was set but not the other. This was addressed by unifying the usage pattern for error activation to a pattern where errorString is set and setSocketError() is called afterwards. Change-Id: Ibfb04772cf560936aa4ce8ea9643d6a410cc9ee2 Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Refine documentation for QBluetoothSocket::localXYZ() functions.Alex Blasche2014-01-281-1/+12
| | | | | | | | Bluez never returns anything until the connection has been established. BlackBerry and the future Android port are much quicker. Change-Id: Ic465a9b68176e7fff5f0c88b4fb602f8665f7197 Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Fix broken SDP discovery on QBluetoothSocketAlex Blasche2014-01-281-1/+3
| | | | | | | | | | | | | | | | ThHis is only used on Bluez at this stage. THe SDP agent was initialized with the local adapter being the remote address of the remote service. This could never work. The remote address is now properly set (being the handed over bt address to QBluetoothSocket::connectToService()). [ChangeLog][QtBluetooth][QtBluetoothSocket] Fixed incorrect invocation of QBluetoothDiscoveryAgent where the remote service address was incorrectly assumed to be the local Bt adapter address. This prevented the detection of the remote service. This bug only affects the Bluez backend. Change-Id: Ice2b9c351bfd42f1f4398b14ac68f76315f01fa8 Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Use QLoggingCategory to categorize the various debug output streamsAlex Blasche2013-12-201-10/+13
| | | | | | | Task-number: QTBUG-32253 Change-Id: I193162407d0fc7eca83689e31f03e1641a494ab0 Reviewed-by: Fabian Bumberger <fbumberger@rim.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Emit ServiceLookup signal in QBluetoothSocket/Bluez when required.Alex Blasche2013-09-251-0/+4
| | | | | | Change-Id: Ide9d2cf7fd469e28c584c557ad9e1307aec37f1d Reviewed-by: Fabian Bumberger <fbumberger@rim.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Error handling for QBluetoothServerFabian Bumberger2013-09-201-8/+0
| | | | | | Task-number: QTBUG-32669 Change-Id: I0f12b19f7989972b7c8305f6e11a95f7f25a281d Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* QNX: Fix compilation and a compiler warningFabian Bumberger2013-09-201-1/+1
| | | | | Change-Id: Id3de289238013edfc9737f444d3db95be3bd761b Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Unify QBluetoothSoket, QBluetoothServer and QBluetoothServiceInfo protocol enumFabian Bumberger2013-09-201-30/+19
| | | | | Change-Id: I6e66196a599e2cceabc7d93d728ba97361d8999f Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* QNX: Take socketType and serverType into accountFabian Bumberger2013-09-191-1/+19
| | | | | | | Also add a serverType member function in QBluetoothServer Change-Id: I107f73b3943dc84f5c4d2afcb00e303567a67b5d Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Lower the verbosity of bluetoothFabian Bumberger2013-09-181-7/+7
| | | | | | | | | Remove some qDebug statements and change qDebugs to qWarning in case of an error. Task-number: QTBUG-32253 Change-Id: Ia647d3f485cae56cc9f9c6725400f5b4617b7bf7 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* BlackBerry: Add some platform documentationFabian Bumberger2013-09-181-7/+13
| | | | | Change-Id: If2a8d289578f3bc7622cedd9faf35893880a2157 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Remove QtBluetooth and QtNfc namespace.Alex Blasche2013-09-091-2/+2
| | | | | | | | This is based on namespace discussions on the Qt project dev mailing list. We continue to use the Qt namespace. Change-Id: I6119d06662f7682c11f42d759f3218be1f5a7d6c Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Merge QRfcommServer and QL2capServer to QBluetoothServerFabian Bumberger2013-08-291-1/+1
| | | | | | | Task-number: QTBUG-32722 Change-Id: Ia75ad5af2f81b737a8cca09dba919a7dc0fa0f8a Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* QNX: Change name of platform define to QT_QNX_BLUETOOTHFabian Bumberger2013-08-231-3/+3
| | | | | | | To be aligned with the bluez implementation Change-Id: I8d3fbd0c23298f984e2c99cbf4131cf8fc0a0a64 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* QNX: Fix compiler warningsFabian Bumberger2013-07-311-1/+1
| | | | | Change-Id: Ia73b3a89464d5913bec4cc528047283475297083 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Update Copyright headersAlex Blasche2013-06-251-1/+1
| | | | | | | | | - Update Digia's copyright year - Add copyright to files without it - Convert old BSD to new LGPL license for auto test code Change-Id: I47f5c871c436f9c2731b235026434448719cc671 Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Rename NFC and Bluetooth namespace macros.Aaron McCarthy2013-02-141-2/+2
| | | | | | | | Renamed to the namespace macros to follow what syncqt expects. This fixes missing namespace macro warnings printed by syncqt. Change-Id: I7be5a700e8435a559cb4c2e74938851233095887 Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
* QNX: Adding SPP supportFabian Bumberger2012-11-231-3/+24
| | | | | | | This commit adds the SPP server and socket to the QNX Bluetooth port Change-Id: I0868f4cbc32fc84f0688eafdd2c3350dc8506b65 Reviewed-by: Alex <ablasche@gmail.com>
* Qt Bluetooth: Created \qmlmodule and \module pagesJerome Pasion2012-09-291-3/+2
| | | | | | | | These pages will list the C++ classes and the QML types in Qt Bluetooth. Removed extra groups. Change-Id: I27d7004d804cc0cc29af997f3a11fcc9f9477efb Reviewed-by: Alex <ablasche@gmail.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-231-24/+24
| | | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: I4f07028d0bf0b3ba4c4649897b80687ea5e51abc Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Language edits to the QDoc markupVenugopal Shivashankar2012-02-291-11/+10
| | | | | Change-Id: I13206b25dbd87ce0d066cb21842dfbd516bd2bbc Reviewed-by: Alex <alex.blasche@nokia.com>
* Modified the \brief text for the Bluetooth C++ classes and the QML elements.veshivas2012-02-281-1/+1
| | | | | | Change-Id: I3c455739afe9d63eb822a0462c7e786bd83259ee Reviewed-by: Gary Aish <gary.aish@nokia.com> Reviewed-by: Alex <alex.blasche@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I84f8c423bd7748bbae495fedae696990414cee83 Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* added documentation and examplesMichael Zanetti2012-01-231-2/+1
| | | | | | Change-Id: Ia99e5f8f9579c189379bce1a22de3d58b12ce5fc Reviewed-by: Alex <alex.blasche@nokia.com> Sanity-Review: Alex <alex.blasche@nokia.com>
* Update obsolete contact address.Jason McDonald2012-01-201-1/+1
| | | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I1c6ba5c87f0eca30b6f01f4245a032262d30f8ce Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
| | | | | | Change-Id: I76920b22a5b386a0f85ec28076da20505c022b6f Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>