summaryrefslogtreecommitdiffstats
path: root/src/serialbus/qcanbusframe.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/serialbus/qcanbusframe.h')
-rw-r--r--src/serialbus/qcanbusframe.h31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/serialbus/qcanbusframe.h b/src/serialbus/qcanbusframe.h
index 486d996..2c32cd8 100644
--- a/src/serialbus/qcanbusframe.h
+++ b/src/serialbus/qcanbusframe.h
@@ -74,9 +74,12 @@ public:
explicit QCanBusFrame(FrameType type = DataFrame) Q_DECL_NOTHROW :
isExtendedFrame(0x0),
- version(0x0),
- isFlexibleDataRate(0x0)
+ version(Qt_5_9),
+ isFlexibleDataRate(0x0),
+ isBitrateSwitch(0x0),
+ reserved0(0x0)
{
+ Q_UNUSED(reserved0);
memset(reserved, 0, sizeof(reserved));
setFrameId(0x0);
setFrameType(type);
@@ -103,8 +106,10 @@ public:
explicit QCanBusFrame(quint32 identifier, const QByteArray &data) :
format(DataFrame),
isExtendedFrame(0x0),
- version(0x0),
+ version(Qt_5_9),
isFlexibleDataRate(data.length() > 8 ? 0x1 : 0x0),
+ isBitrateSwitch(0x0),
+ reserved0(0x0),
load(data)
{
memset(reserved, 0, sizeof(reserved));
@@ -221,6 +226,16 @@ public:
void setFlexibleDataRateFormat(bool isFlexibleData) Q_DECL_NOTHROW
{
isFlexibleDataRate = (isFlexibleData & 0x1);
+ if (!isFlexibleData)
+ isBitrateSwitch = 0x0;
+ }
+
+ bool hasBitrateSwitch() const Q_DECL_NOTHROW { return (isBitrateSwitch & 0x1); }
+ void setBitrateSwitch(bool bitrateSwitch) Q_DECL_NOTHROW
+ {
+ isBitrateSwitch = (bitrateSwitch & 0x1);
+ if (bitrateSwitch)
+ isFlexibleDataRate = 0x1;
}
#ifndef QT_NO_DATASTREAM
@@ -229,6 +244,11 @@ public:
#endif
private:
+ enum Version {
+ Qt_5_8 = 0x0,
+ Qt_5_9 = 0x1
+ };
+
quint32 canId:29; // acts as container for error codes too
quint8 format:3; // max of 8 frame types
@@ -237,8 +257,11 @@ private:
quint8 isValidFrameId:1;
quint8 isFlexibleDataRate:1;
+ quint8 isBitrateSwitch:1;
+ quint8 reserved0:7;
+
// reserved for future use
- quint8 reserved[3];
+ quint8 reserved[2];
QByteArray load;
TimeStamp stamp;