summaryrefslogtreecommitdiffstats
path: root/src/serialbus/qcanbusdevice.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/serialbus/qcanbusdevice.h')
-rw-r--r--src/serialbus/qcanbusdevice.h35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/serialbus/qcanbusdevice.h b/src/serialbus/qcanbusdevice.h
index a47fac4..5d2d976 100644
--- a/src/serialbus/qcanbusdevice.h
+++ b/src/serialbus/qcanbusdevice.h
@@ -41,6 +41,8 @@
#include <QtSerialBus/qcanbusframe.h>
#include <QtSerialBus/qcanbusdeviceinfo.h>
+#include <functional>
+
QT_BEGIN_NAMESPACE
class QCanBusDevicePrivate;
@@ -58,7 +60,9 @@ public:
WriteError,
ConnectionError,
ConfigurationError,
- UnknownError
+ UnknownError,
+ OperationError,
+ TimeoutError
};
Q_ENUM(CanBusError)
@@ -70,6 +74,15 @@ public:
};
Q_ENUM(CanBusDeviceState)
+ enum class CanBusStatus {
+ Unknown,
+ Good,
+ Warning,
+ Error,
+ BusOff
+ };
+ Q_ENUM(CanBusStatus)
+
enum ConfigurationKey {
RawFilterKey = 0,
ErrorFilterKey,
@@ -78,12 +91,24 @@ public:
BitRateKey,
CanFdKey,
DataBitRateKey,
+ ProtocolKey,
UserKey = 30
};
Q_ENUM(ConfigurationKey)
struct Filter
{
+ friend constexpr bool operator==(const Filter &a, const Filter &b) noexcept
+ {
+ return a.frameId == b.frameId && a.frameIdMask == b.frameIdMask
+ && a.type == b.type && a.format == b.format;
+ }
+
+ friend constexpr bool operator!=(const Filter &a, const Filter &b) noexcept
+ {
+ return !operator==(a, b);
+ }
+
enum FormatFilter {
MatchBaseFormat = 0x0001,
MatchExtendedFormat = 0x0002,
@@ -109,6 +134,10 @@ public:
qint64 framesAvailable() const;
qint64 framesToWrite() const;
+ void resetController();
+ bool hasBusStatus() const;
+ QCanBusDevice::CanBusStatus busStatus() const;
+
enum Direction {
Input = 1,
Output = 2,
@@ -140,6 +169,7 @@ Q_SIGNALS:
protected:
void setState(QCanBusDevice::CanBusDeviceState newState);
void setError(const QString &errorText, QCanBusDevice::CanBusError);
+ void clearError();
void enqueueReceivedFrames(const QVector<QCanBusFrame> &newFrames);
@@ -152,6 +182,9 @@ protected:
virtual bool open() = 0;
virtual void close() = 0;
+ void setResetControllerFunction(std::function<void()> resetter);
+ void setCanBusStatusGetter(std::function<CanBusStatus()> busStatusGetter);
+
static QCanBusDeviceInfo createDeviceInfo(const QString &name,
bool isVirtual = false,
bool isFlexibleDataRateCapable = false);