Index: scripts/run.sh =================================================================== diff -u -r2377ce5af68abfa265482f9ce2feb8b81b16bfa4 -r7d23aecac8db9b7495e7d505f55bba5a0d510360 --- scripts/run.sh (.../run.sh) (revision 2377ce5af68abfa265482f9ce2feb8b81b16bfa4) +++ scripts/run.sh (.../run.sh) (revision 7d23aecac8db9b7495e7d505f55bba5a0d510360) @@ -33,6 +33,8 @@ #setting up can interface ip link set can0 up type can bitrate 250000 +ifconfig can0 txqueuelen 4000 +sysctl net/core/netdev_max_backlog=4000 if [ $? -eq 0 ]; then echo ":: Can interface setup" fi Index: sources/applicationcontroller.cpp =================================================================== diff -u -rc6a09899d2e46dc0bda5a6b994aa257953626f97 -r7d23aecac8db9b7495e7d505f55bba5a0d510360 --- sources/applicationcontroller.cpp (.../applicationcontroller.cpp) (revision c6a09899d2e46dc0bda5a6b994aa257953626f97) +++ sources/applicationcontroller.cpp (.../applicationcontroller.cpp) (revision 7d23aecac8db9b7495e7d505f55bba5a0d510360) @@ -25,8 +25,10 @@ #include "filehandler.h" /*! - * \brief ApplicationController Constructor - * \param parent + * \brief ApplicationController::ApplicationController + * \details Constructor + * \param parent - QObject parent owner object. + * Qt handles the children destruction by their parent objects life-cycle. */ ApplicationController::ApplicationController(QObject *parent) : QObject(parent) { @@ -141,6 +143,7 @@ * \brief Process the requested action * \details Processes the requested action * \param vAction - User requested Action + * \param vData - Action data to be transmitted. */ void ApplicationController::onActionTransmit(GuiActionType vAction, const QVariantList &vData) { Index: sources/canbus/caninterface.h =================================================================== diff -u -rc6a09899d2e46dc0bda5a6b994aa257953626f97 -r7d23aecac8db9b7495e7d505f55bba5a0d510360 --- sources/canbus/caninterface.h (.../caninterface.h) (revision c6a09899d2e46dc0bda5a6b994aa257953626f97) +++ sources/canbus/caninterface.h (.../caninterface.h) (revision 7d23aecac8db9b7495e7d505f55bba5a0d510360) @@ -46,19 +46,22 @@ friend class ::tst_canbus; // constants - const char *_canType = "socketcan"; - QString _canInterface = "can0"; - const int _canBitRate = 250000; + const char *_canType = "socketcan"; + QString _canInterface = "can0"; + const int _canBitRate = 250000; // member variables QCanBusDevice *_canDevice = nullptr; - qint64 _numberFramesWritten = 0; QString _canStatus = ""; bool _enableConsoleOut = false; QThread *_thread = nullptr; bool _init = false; + typedef quint64 FrameCount; + FrameCount _rxFrameCount = 0; + FrameCount _txFrameCount = 0; + // Singleton SINGLETON(CanInterface) @@ -85,8 +88,11 @@ void status (const QString &vDescription, QString vError = ""); bool transmit (const QCanBusFrame &vFrame); - void consoleOut (const QCanBusFrame &vFrame); + void consoleOut (const QCanBusFrame &vFrame, const QString &vFrameCount); + FrameCount rxCount(); + FrameCount txCount(); + static QString frameFlags(const QCanBusFrame &vFrame); signals: Index: sources/storage/logger.h =================================================================== diff -u -rc6a09899d2e46dc0bda5a6b994aa257953626f97 -r7d23aecac8db9b7495e7d505f55bba5a0d510360 --- sources/storage/logger.h (.../logger.h) (revision c6a09899d2e46dc0bda5a6b994aa257953626f97) +++ sources/storage/logger.h (.../logger.h) (revision 7d23aecac8db9b7495e7d505f55bba5a0d510360) @@ -25,11 +25,40 @@ // Define #define _Logger Storage::Logger::I() -#define LOG_EVENT(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogEvent) -#define LOG_ERROR(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogError) -#define LOG_DATUM(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogDatum) + #define LOG_EXPORT _Logger.concurrentExport() +#define LOG_EVENT(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogEvent) +#define LOG_EVENT_ONCE_LOGGED \ + bLOG_EVENT_ONCE_LOGGED +#define LOG_EVENT_ONCE(vCONTENT) \ + static bool LOG_EVENT_ONCE_LOGGED = false; \ + if ( ! LOG_EVENT_ONCE_LOGGED ) { \ + LOG_EVENT_ONCE_LOGGED = true; \ + LOG_EVENT(vCONTENT); \ + } + +#define LOG_ERROR(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogError) +#define LOG_ERROR_ONCE_LOGGED \ + bLOG_ERROR_ONCE_LOGGED +#define LOG_ERROR_ONCE(vCONTENT) \ + static bool LOG_ERROR_ONCE_LOGGED = false; \ + if ( ! LOG_ERROR_ONCE_LOGGED ) { \ + LOG_ERROR_ONCE_LOGGED = true; \ + LOG_ERROR(vCONTENT); \ + } + +#define LOG_DATUM(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogDatum) +#define LOG_DATUM_ONCE_LOGGED \ + bLOG_DATUM_ONCE_LOGGED +#define LOG_DATUM_ONCE(vCONTENT) \ + static bool LOG_DATUM_ONCE_LOGGED = false; \ + if ( ! LOG_DATUM_ONCE_LOGGED ) { \ + LOG_DATUM_ONCE_LOGGED = true; \ + LOG_DATUM(vCONTENT); \ + } + + // forward declarations class tst_logging; @@ -127,9 +156,9 @@ // ----- logging structure private slots: - void onLog(const QString &vContent, LogType vLogType); + void onLog (const QString &vContent, LogType vLogType); private: - void log (const QString &vContent, LogType vLogType); + void log (const QString &vContent, LogType vLogType); signals: /*! * \brief didLog