Filter Struct
struct QCanBusDevice::FilterThe QCanBusDevice::Filter struct defines a filter for CAN bus frames. More...
Public Types
enum | FormatFilter { MatchBaseFormat, MatchExtendedFormat, MatchBaseAndExtendedFormat } |
flags | FormatFilters |
Public Variables
QCanBusDevice::Filter::FormatFilter | format |
QCanBusFrame::FrameId | frameId |
QCanBusFrame::FrameId | frameIdMask |
QCanBusFrame::FrameType | type |
Related Non-Members
bool | operator!=(const QCanBusDevice::Filter &a, const QCanBusDevice::Filter &b) |
bool | operator==(const QCanBusDevice::Filter &a, const QCanBusDevice::Filter &b) |
Detailed Description
A list of QCanBusDevice::Filter instances is passed to QCanBusDevice::setConfigurationParameter() to enable filtering. If a received CAN frame matches at least one of the filters in the list, the QCanBusDevice will accept it.
The example below demonstrates how to use the struct:
QCanBusDevice::Filter filter; QList<QCanBusDevice::Filter> filterList; // filter all CAN bus packages with id 0x444 (base) or 0xXXXXX444 (extended) filter.frameId = 0x444u; filter.frameIdMask = 0x7FFu; filter.format = QCanBusDevice::Filter::MatchBaseAndExtendedFormat; filter.type = QCanBusFrame::InvalidFrame; filterList.append(filter); // filter all DataFrames with extended CAN bus package format filter.frameId = 0x0; filter.frameIdMask = 0x0; filter.format = QCanBusDevice::Filter::MatchExtendedFormat; filter.type = QCanBusFrame::DataFrame; filterList.append(filter); // apply filter device->setConfigurationParameter(QCanBusDevice::RawFilterKey, QVariant::fromValue(filterList));
Member Type Documentation
enum Filter::FormatFilter
flags Filter::FormatFilters
This enum describes the format pattern, which is used to filter incoming CAN bus frames.
Constant | Value | Description |
---|---|---|
QCanBusDevice::Filter::MatchBaseFormat | 0x0001 | The CAN bus frame must use the base frame format (11 bit identifier). |
QCanBusDevice::Filter::MatchExtendedFormat | 0x0002 | The CAN bus frame must use the extended frame format (29 bit identifier). |
QCanBusDevice::Filter::MatchBaseAndExtendedFormat | 0x0003 | The CAN bus frame can have a base or an extended frame format. |
The FormatFilters type is a typedef for QFlags<FormatFilter>. It stores an OR combination of FormatFilter values.
Member Variable Documentation
QCanBusDevice::Filter::FormatFilter Filter::format
This variable holds the frame format of the matching CAN bus frame.
By default this field is set to QCanBusDevice::Filter::MatchBaseAndExtendedFormat.
QCanBusFrame::FrameId Filter::frameId
This variable holds the frame id used to filter the incoming frames.
The frameId is used in conjunction with frameIdMask. The matching is successful if the following evaluates to true
:
(receivedFrameId & frameIdMask) == (frameId & frameIdMask)
By default this field is set to 0x0
.
See also frameIdMask.
QCanBusFrame::FrameId Filter::frameIdMask
This variable holds the bit mask that is applied to the frame id of the filter and the received frame.
The two frame ids are matching if the following evaluates to true
:
(receivedFrameId & frameIdMask) == (frameId & frameIdMask)
By default this field is set to 0x0
.
See also frameId.
QCanBusFrame::FrameType Filter::type
This variable holds the type of the frame to be filtered.
Any CAN bus frame type can be matched by setting this variable to QCanBusFrame::InvalidFrame. The filter object is invalid if type is equal to QCanBusFrame::UnknownFrame.
By default this field is set to QCanBusFrame::InvalidFrame.
See also QCanBusFrame::FrameType.
Related Non-Members
[constexpr noexcept]
bool operator!=(const QCanBusDevice::Filter &a, const QCanBusDevice::Filter &b)
Returns true
, if the filter a is not equal to the filter b, otherwise returns false
.
[constexpr noexcept]
bool operator==(const QCanBusDevice::Filter &a, const QCanBusDevice::Filter &b)
Returns true
, if the filter a is equal to the filter b, otherwise returns false
.
© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.