summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.12.6' into 5.12Qt Forward Merge Bot2020-01-073-20/+20
|\ | | | | | | Change-Id: I78703f2da399d804af6fe20ad3149899fa3e6fae
| * Avoid conflicting class names if the plugins are linked staticallyAndy Shaw2019-11-053-20/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QtSerialBus is already using QtSerialPort which has a WriteNotifier and ReadNotifier class in place. Therefore it is possible that if these were linked in together into one application that there would be multiple instances of the same class name which caused problems as it would think that the WriteNotifier in QtSerialPort was a QTimer and not a QSocketNotifier. So keep the names unique to be on the safe side. Change-Id: I8667e3d4230b316d47e266ad1b4319cf5e74444b Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit f129107e472c179e47b37d8fdaff120d1eccc7f8) Reviewed-by: André Hartmann <aha_1980@gmx.de>
* | VirtualCAN: Fix disconnecting from busAndre Hartmann2019-11-221-0/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | While the client sent a disconnect command to the server, this was not handled on server side. Thus, the client was never really Unconnected and in turn it was not possible to connect again. Fix that by closing the socket, that leads to VirtualCanBackend::clientDisconnected() being called and that sets the plugin to Unconnected. In any case, the server keeps running until the plugin is unloaded, even after the last client is disconnected. [ChangeLog][VirtualCAN] Fixed that the plugin stayed forever in closing state and subsequent connect calls always failed. Change-Id: I7a490c55a3cb6bd193ba4783b48d1385aa85bcde Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Rolf Eike Beer <eb@emlix.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit f47b712057676de6115d7320cbbc2eb9b20c9817)
* CAN: Avoid symbol clashes on static buildsAndre Hartmann2019-09-238-8/+8
| | | | | | | | | | | | | | | | Having the same function name in a global namespace can lead the linker to pick an arbitrary one instead the right one. [ChangeLog] Fixed problems on static builds where an arbitrary version of resolveSymbol() was used instead the correct one. Fixes: QTBUG-78546 Change-Id: I0ff9bc3e5905b3b9694dfe9d446b2a52700f213f Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io> (cherry picked from commit 80144b89ca1adede0db9d6e485037f5e431216c3) Reviewed-by: André Hartmann <aha_1980@gmx.de>
* Doc: Add precision to QCanBusFrame::setFrameId descriptionPaul Wicking2019-07-221-3/+9
| | | | | | | | | Done-with: Jochen Bauer Fixes: QTBUG-75502 Change-Id: I3a91c9b0c52985f5fe3ea357c8813c27ddbfd28d Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
* PeakCAN: Update documentation for added CAN FD functionsAndre Hartmann2019-07-181-2/+17
| | | | | | | | | | When adding the CAN FD functions to the PeakCAN plugin in ac8509d992f4, the documentation was not updated properly. This patch catches up on that. Change-Id: Ib3d05d4aa8405226ede9616bd56ead1a8f98ea88 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* SocketCAN: Fix compiler error "‘SIOCGSTAMP’ was not declared"Andre Hartmann2019-07-091-0/+1
| | | | | | | Fixes: QTBUG-76957 Change-Id: I8c4c86aa23137d67f5d20eedfe1c46a241c0632b Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* Systec: Fix error message "Cannot configure TxEcho for open device"Andre Hartmann2019-04-111-3/+3
| | | | | | | | | | | | | | | | | | | When using the QCanBusDevice::ReceiveOwnKey, it has to be applied before the device is opened. While this already correctly happened in SystecCanBackendPrivate::open(), the parameter was applied again in SystecCanBackendPrivate::setConfigurationParameter() which led to the error message. Solution is to skip ReceiveOwnKey when applying all configuration parameters in SystecCanBackend::open(), like already done there for BitRateKey. [ChangeLog][SystecCAN] Fixed the error message "Cannot configure TxEcho for open device" when QCanBusDevice::ReceiveOwnKey was used. Change-Id: I37c1732798a3ce205a65ca803a99b5b7b9306d2a Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* QModbusReply: Add some more documentation cross linksAndre Hartmann2019-03-281-0/+6
| | | | | Change-Id: I9f7d2bd5724266463af473d714b452de5390349e Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* VirtualCAN: Slightly adopt debug outputAndre Hartmann2019-03-251-4/+4
| | | | | | | | | | | | | | | | | | | Remove the colons from a few places to make their output similar to the debug output in other lines. Example (omitting qt.canbus.plugins.virtualcan prefix): Server [0x7f19684903c0] constructed. Server [0x7f19684903c0] could not be started, port 35468 is already in use. Client [0x5586262ecaa0] socket created. Client [0x5586262ecaa0] socket connected. Client [0x5586262ecaa0] received: '0##f9ffad71e96cb5ee'. Client [0x5586262ecaa0] socket disconnected. Client [0x5586262ecaa0] socket destructed. Server [0x7f19684903c0] destructed. Change-Id: I6d91282a262c58e2c983ee6db5c030698197c9f6 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix typosKarsten Heimrich2019-03-212-2/+2
| | | | | | Change-Id: Ic7f032217e641bf573f66f1231987828ea078709 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Correct typos in qmodbuspdu.cpp's docThibaut Cuvelier2019-03-201-7/+7
| | | | | Change-Id: I8bbb3baaa568c1331d8945df158d062d68d2eed4 Reviewed-by: André Hartmann <aha_1980@gmx.de>
* Merge remote-tracking branch 'origin/5.11' into 5.12Qt Forward Merge Bot2018-12-111-2/+3
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Ia0da4c27d820778cb156a73cbad4fe79f0694267
| * Make pduFromStream work on big endianDmitry Shachnev2018-11-111-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | (char *) (&code) is pointing to the correct byte on little endian systems, but on big endian it is pointing to the wrong byte. This caused tst_QModbusPdu::testQModbusResponseStreamOperator to fail on big endian. Change-Id: Icf374ed71429154b362fb074fbeb5501ea6095e0 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
* | Improve QModbusDevice connect/open documentationAlex Blasche2018-11-141-5/+11
| | | | | | | | | | | | | | | | | | | | QModbusDevice::open() & connectDevice() can cover asynchronous and synchronous connect behavior. This was not very obvious in the documentation. This patch fixes this uncertainty. Fixes: QTBUG-71282 Change-Id: I554ea7a8073f9b72027208f5deac4ac3ecc4ccee Reviewed-by: André Hartmann <aha_1980@gmx.de>
* | remove pointless PLUGIN_EXTENDS stanzasOswald Buddenhagen2018-11-077-7/+0
| | | | | | | | | | | | | | | | there is no point in putting the owning module there. Change-Id: I9bc49ae323a4bbc8cd35d10493c899466645bd44 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Ensure QModbusReply::finished() is emitted after disconnect from serialAlex Blasche2018-10-291-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | If the user or remote end closed the serial connection while a QModbusReply is currently pending the reply was never concluded by emitting the finished() or error() signal. QModbusReply::setError() emits both signals. Fixes: QTBUG-68543 Change-Id: Ic93194b0bf28b7147934452889de8c9aa55ff983 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* | Fix incorrect reading and writing of QModbusServer registersAlex Blasche2018-10-241-5/+6
| | | | | | | | | | | | | | | | | | | | | | Prior to this change the startAddress of the current value mapping was not taken into account. Therefore shifted reads and write (with non-zero startAddresses) were accessing the wrong register indexes. Fixes: QTBUG-64843 Change-Id: Iaf1f91705586f45db059d6dd54b68a84d16926a0 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* | Fix RTU Master ignoring responses due to being in Send stateAlex Blasche2018-10-241-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The fix for QTBUG-62299 limits the processing of serial responses in RTU serial master to cases when the state machine is in receive mode only. So far the Receive state was triggered by the sendTimer. However modern kernels accept serial packages faster then the sendTimer can fire. This patches addresses the problem by setting the Receive state even before sendTimer fires. If the bytesWritten() callback detects that the entire PDU/ADU was written it stops sendTimer and immediately progresses the state machine to the Receive state. Fixes: QTBUG-69188 Change-Id: I1657973ef99f1b3e4008e887029b30890d825d59 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* | Permit dropping of RTU slave request buffer under certain scenariosAlex Blasche2018-10-231-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If there is a wrong character in between individual modbus PDUs the request buffer becomes longer and longer w/o ever being cleared. As a consequence the only possible way to recover is to reset the RTU slave. The patch ensures that request buffer processing waits for chunked PDUs (due to low baud rates) while at the same time does not block if it contains garbage. The timer is based on the modbus spec which specifies that every modbus package is separated by at least 3.5 chars. Using the current baud rate of the serial port permits the exact caluclation of the implied delay/timeout. For baud rates above 19200 the timeout drops below 2 ms which is not measurable by Qt anymore. Furthermore the modbus spec specifies a minimal delay of 1.75 ms as well. Hence the timeout is bound to at least 2ms. Fixes: QTBUG-59286 Change-Id: Ie43ff3f5819519abe2081757150d367820d50020 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into 5.12Qt Forward Merge Bot2018-10-231-1/+3
|\| | | | | | | Change-Id: I0e27751095de662c15633dae25b71b76f1ab97e2
| * Fix case of accessing deleted memoryAlex Blasche2018-10-221-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | If the current QModbusRtuSerialMaster instance is deleted, the interFrameDelay timer may still be active and trigger the associated lambda. Since the lambda calls back into the deleted class instance, a crash may occur. Adding the public class instance as context to the singleshot connect ensures that the lambda is not called if the class instance was deleted already. Fixes: QTBUG-65684 Change-Id: Ic7d90ba68a1533e6de50c61117f5de8dc5e048b4 Reviewed-by: André Hartmann <aha_1980@gmx.de>
* | Fix various QDoc warnings/errors in QtSerialBusv5.12.0-beta3Alex Blasche2018-10-155-4/+21
| | | | | | | | | | Change-Id: Iee3a9942657abf67c74aabd687b18af5f3e731f2 Reviewed-by: André Hartmann <aha_1980@gmx.de>
* | Merge remote-tracking branch 'origin/5.11' into 5.12v5.12.0-beta2Qt Forward Merge Bot2018-10-061-3/+5
|\| | | | | | | Change-Id: I0286e29c47be19444c4240c382171ab8c48be33e
| * Modbus: Fix documentation for QModbusClient::timeoutChanged()Andre Hartmann2018-10-021-3/+5
| | | | | | | | | | | | | | | | | | It is not the response for an timeout, but rather the response whenever the timeout was changed. Change-Id: Id687429f7acdd487f87a63c4c1d51d2fc3cea1f9 Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Doc: Fix \code usagev5.12.0-beta1Topi Reinio2018-09-131-1/+3
| | | | | | | | | | | | | | | | | | | | | | As QDoc now accept parameters for \code, following inline use: /code ... /endcode no longer works (and it never was documented to work). Change-Id: If4ee0eb9af0e6a115216398b52f2592ea709276b Reviewed-by: Martin Smith <martin.smith@qt.io>
* | QCanBusDevice: Don't return a bool value from clear()Andre Hartmann2018-09-132-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | As pointed out in the API review, this could lead to confusion when reading statements like this: if (device->clear(QCanBusDevice::Input)) { // ... } Change-Id: Ic039d3ed32f9ef8e7c3fb8b5f0659b8c9afd8038 Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* | Add missing Q_DECLARE_OPERATORS_FOR_FLAGS(QCanBusDevice::Directions)Andre Hartmann2018-09-101-0/+1
| | | | | | | | | | | | | | | | | | Amends 77b48d3d956b6de9dab7cb89bc3285eead63f734 Change-Id: I429dd2d827aa9dab30a7813833f5c388afda535c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-08-175-21/+55
|\| | | | | | | | | | | | | Conflicts: src/serialbus/doc/src/peakcan.qdoc Change-Id: I2fe21e838d2da73b2b9c4d1c98752f48f003706a
| * Doc: Improve plugin overview pagesAndre Hartmann2018-08-095-23/+57
| | | | | | | | | | | | | | | | | | | | * Rename "backend" to "plugin" for consistence * Improve the connection snippets regarding error handling * Add a hint to QCanBus::availableDevices() Change-Id: I6fc24add5f9cb34e9ffad8b58f6134124f456cdd Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-08-071-0/+1
|\| | | | | | | Change-Id: I49dff945874682d5443dd886f89f6cad8aca4680
| * Doc: add missing since to enum QCanBusDevice::DataBitRateKeyAndre Hartmann2018-08-061-0/+1
| | | | | | | | | | | | | | Introduced by d4bbdb83. Change-Id: I9af02b34f2c75eae8b7f43fb5ddb3dd310269657 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Add a virtual CAN bus pluginAndre Hartmann2018-08-018-0/+690
| | | | | | | | | | | | | | | | | | | | | | Based on a TCP/IP server/client infrastructure, to allow testing programs against a second program without CAN hardware connected. [ChangeLog][QCanBus] Added a generic virtual CAN bus plugin. Task-number: QTBUG-61837 Change-Id: I7acf04bd476b65b4d1d04254463d61a4dc9042d5 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | PeakCAN: Fix Clang warning about sign conversionAndre Hartmann2018-05-181-1/+1
| | | | | | | | | | | | | | | | | | | | Introduced by e0e89f0719497d43fcbd14a2c8d17bcaaf595a78 which changed the constants PCAN_CHANNEL_AVAILABLE and FEATURE_FD_CAPABLE to unsigned integers. Change-Id: I0d9278d2842180230ac3d744595151762de77794 Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-122-26/+22
|\| | | | | | | Change-Id: I1ab92643c96792ee03cc3f77a6eaa1fd239890ae
| * Fix compilation with MSVC 2017v5.11.0-rc2v5.11.0Thiago Macieira2018-05-092-26/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | std::bitset<8> fails to compile with MSVC 2017. I don't know why nor do I care. Just use a regular byte for one byte, QBitArray for multiple. bitset(271): error C2666: 'operator /': 10 overloads have similar conversions [...] bitset(271): note: or 'built-in C++ operator/(size_t, )' bitset(271): note: while trying to match the argument list '(size_t, )' bitset(267): note: while compiling class template member function 'std::bitset<8> &std::bitset<8>::set(size_t,bool)' bitset(40): note: see reference to function template instantiation 'std::bitset<8> &std::bitset<8>::set(size_t,bool)' being compiled Change-Id: I5d0ee9389a794d80983efffd152cc64b1e99d236 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* | Add configuration options to canbusutilAndre Hartmann2018-04-173-0/+52
| | | | | | | | | | | | | | | | | | | | | | [ChangeLog][canbusutil] Added configuration options to canbusutil, e.g. for bitrate setting or to enable CAN FD operation mode. Task-number: QTBUG-67164 Change-Id: I43690cfd3e0c24f3d5ad79d11b1a60e7fbec3dc1 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Rolf Eike Beer <eb@emlix.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-04-074-7/+5
|\| | | | | | | Change-Id: I86832cdc609485aa902cde78c18638c4656cfcfa
| * Improve QCanBusDeviceInfo documentationv5.11.0-beta4v5.11.0-beta3Andre Hartmann2018-04-032-1/+3
| | | | | | | | | | | | | | | | | | * Add a link to QCanBusDeviceInfo on the "Qt CAN Bus" page * Add an example for channel() Change-Id: I95e7a36b998c2bb27abdd6839c9653a7c14568e9 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
| * Doc: Remove last remaining \since < Qt 5.8Andre Hartmann2018-04-032-6/+2
| | | | | | | | | | | | | | | | | | | | | | The binary compatibility promise started with Qt 5.8, so any history before must not be kept. Amends a31a7e0b2b7b3de3e1867ad954ac7fad9531cc99 Change-Id: I45917e2e17ae6c79d2e9f0118873fd421c742e01 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-275-14/+14
|\| | | | | | | Change-Id: I8ec4976a7699f3979a60227cf97664f67f311566
| * Doc: Fix documentation warningsTopi Reinio2018-03-265-14/+14
| | | | | | | | | | | | | | | | | | | | | | QDoc in Qt 5.11 uses Clang to parse C++ documentation, and it's capable of resolving templated function signatures; adjust the \fn commands accordingly. Also fix a couple of other minor documentation warnings. Change-Id: I867713a9e805b75bbd57e183aad91d7e21021f0a Reviewed-by: Martin Smith <martin.smith@qt.io>
* | QCanBusDevice: Simplify d-ptr usageAndre Hartmann2018-03-231-3/+3
| | | | | | | | | | | | | | Amends 77b48d3d Change-Id: I050861a9b01a3072c6f21c34e8dec452e94b3f0b Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-201-1/+1
|\| | | | | | | Change-Id: I02db5c1b8c8445ec96c79cc26bdf4fbb84720d5e
| * VectorCAN: Fix receiving frames with multiple open channelsAndre Hartmann2018-03-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As reason for the fix, see section "3.4.1 XLevent" in the Vector documentation XL_Driver_Library_Manual_EN.pdf, which states: "portHandle: Internal use only". This portHandle seems to be always zero and therefore channels greater then zero could not receive frames. Tested with Vectors simulated channels by sending frames to one channel which in turn were received by both channels. The sending channel had the local echo flag set, the other one not. [ChangeLog][QCanBus][VectorCAN] Fixed a receive problem in the VectorCAN plugin. When multiple channels were open, only the first one could receive frames. Task-number: QTBUG-67030 Change-Id: Ib76a04bc06e7b810d1c1cb092b79c4bc1aacf23a Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Mihai Baneu <bdmihai@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | PeakCAN: Adopt symbols file to latest pcanbasic.hAndre Hartmann2018-03-191-149/+177
| | | | | | | | | | | | Change-Id: I802c68d7ea6422640a83d7e5ea17c591a8e3d078 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | PeakCAN: Add CAN FD functionalityAndre Hartmann2018-03-154-52/+272
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tested on Windows 7 with PCAN-USB Pro, both channels connected, one side connected to PCAN-View, other side to CAN-Example. The bitrate handling is done according the information in the following threads: https://www.peak-system.com/forum/viewtopic.php?f=41&t=1756 https://www.peak-system.com/forum/viewtopic.php?f=177&t=1257 [ChangeLog][QCanBus][Plugins] Added CAN FD functionality to the PeakCAN plugin. Therefore the minimum required PCAN-Basic version is now 4.0.0. Task-number: QTBUG-62959 Change-Id: I76180d3e251969bfaa324708de6b7e39487b45f3 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-101-0/+3
|\| | | | | | | Change-Id: I2f548dce2bba78a757355addb35ad80f072701c0
| * Ensure QModbusDevice::close() handles being unconnected alreadyv5.11.0-beta2Alex Blasche2018-03-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | Prior to this change, an unconnected device would transition into the Closing state if disconnectDevice() was called. Since the transition to Unconnected is bound to sockets being closed the already unconnected ModbusDevice would forever hang in CLosing. Task-number: QTBUG-66648 Change-Id: Ia439f6b63b7d4ab7f377a45fb09cb5f5b99627f7 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-02-283-3/+3
|\| | | | | | | Change-Id: If041fd380305b2fa40106998b036079a76b971d3