diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/canbus/socketcan/socketcanbackend.cpp | 24 | ||||
-rw-r--r-- | src/serialbus/qcanbus.cpp | 2 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/plugins/canbus/socketcan/socketcanbackend.cpp b/src/plugins/canbus/socketcan/socketcanbackend.cpp index 122b546..48a2aaf 100644 --- a/src/plugins/canbus/socketcan/socketcanbackend.cpp +++ b/src/plugins/canbus/socketcan/socketcanbackend.cpp @@ -48,6 +48,30 @@ #include <sys/ioctl.h> #include <sys/time.h> +#ifndef CANFD_MTU +// CANFD support was added by Linux kernel 3.6 +// For prior kernels we redefine the missing defines here +// they are taken from linux/can/raw.h & linux/can.h + +enum { + CAN_RAW_FD_FRAMES = 5 +}; + +#define CAN_MAX_DLEN 8 +#define CANFD_MAX_DLEN 64 +struct canfd_frame { + canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ + __u8 len; /* frame payload length in byte */ + __u8 flags; /* additional flags for CAN FD */ + __u8 __res0; /* reserved / padding */ + __u8 __res1; /* reserved / padding */ + __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8))); +}; +#define CAN_MTU (sizeof(struct can_frame)) +#define CANFD_MTU (sizeof(struct canfd_frame)) + +#endif + QT_BEGIN_NAMESPACE SocketCanBackend::SocketCanBackend(const QString &name) : diff --git a/src/serialbus/qcanbus.cpp b/src/serialbus/qcanbus.cpp index 6399fd0..bc81408 100644 --- a/src/serialbus/qcanbus.cpp +++ b/src/serialbus/qcanbus.cpp @@ -64,7 +64,7 @@ public: Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, qFactoryLoader, (QCanBusFactory_iid, QLatin1String("/canbus"))) -typedef QHash<QByteArray, QCanBusPrivate> QCanBusPluginStore; +typedef QMap<QByteArray, QCanBusPrivate> QCanBusPluginStore; Q_GLOBAL_STATIC(QCanBusPluginStore, qCanBusPlugins) static QCanBus *globalInstance = Q_NULLPTR; |