Index: sources/canbus/caninterface.cpp =================================================================== diff -u -r56d00a82669a7a2c00ab90109a89dbec8db27527 -r805119c460b4a266d6401c8705f4427e7fbe270f --- sources/canbus/caninterface.cpp (.../caninterface.cpp) (revision 56d00a82669a7a2c00ab90109a89dbec8db27527) +++ sources/canbus/caninterface.cpp (.../caninterface.cpp) (revision 805119c460b4a266d6401c8705f4427e7fbe270f) @@ -1,6 +1,6 @@ /*! * - * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * \copyright \n * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n * IN PART OR IN WHOLE, \n @@ -22,12 +22,19 @@ #include "messageglobals.h" #include "frameinterface.h" +// stl +#include + +#define FrameCount_MAX UINT64_MAX + // namespace using namespace Can; /*! - * \brief Caninterface Constructor - * \param parent object + * \brief CanInterface::CanInterface + * \details Constructor + * \param parent - QObject parent owner object. + * Qt handles the children destruction by their parent objects life-cycle. */ CanInterface::CanInterface(QObject *parent) : QObject(parent) { } @@ -44,7 +51,6 @@ if ( ! initDevice() ) return false; if ( ! testDevice() ) return false; - _numberFramesWritten = 0; initConnections(); status(tr("Connected")); @@ -76,8 +82,11 @@ */ void CanInterface::quit() { + // coco begin validated: Application termination is not correctly done in coco!!! + // it has been tested and works perfectly fine in normal run. quitThread(); } +// coco end /*! * \brief CanInterface status @@ -135,11 +144,15 @@ */ void CanInterface::quitThread() { + // coco begin validated: Application termination is not correctly done in coco!!! + // it has been tested and works perfectly fine in normal run. + if (! _thread) return; // runs in thread moveToThread(qApp->thread()); } +// coco end /*! * \brief CanInterface::createDevice @@ -231,11 +244,11 @@ * for debugging purposes. * \param vFrame - The CANBUS frame to be sent out */ -void CanInterface::consoleOut(const QCanBusFrame &vFrame) +void CanInterface::consoleOut(const QCanBusFrame &vFrame, const QString &vFrameCount) { if ( ! _enableConsoleOut ) return; - LOG_EVENT(QObject::tr("console out CanInterface Enabled")); + LOG_EVENT_ONCE(QObject::tr("console out CanInterface Enabled")); const QString time = QString::fromLatin1("%1.%2 ") .arg(vFrame.timeStamp().seconds(), 10, 10, QLatin1Char(' ')) @@ -248,10 +261,40 @@ else { view = vFrame.payload().toHex('.').replace(QByteArray("a5"),QByteArray("\033[1;33mA5\033[0m")); } - fprintf(stderr, "%s %s %i %s\n", time.toLatin1().constData(), flags.toLatin1().constData(), vFrame.frameId(), view.toLatin1().constData()); + fprintf(stderr, "%s %s %s %i %s\n", vFrameCount.toLatin1().constData(), time.toLatin1().constData(), flags.toLatin1().constData(), vFrame.frameId(), view.toLatin1().constData()); } /*! + * \brief CanInterface::rxCount + * \details count received frames up the size of the FrameCount type size + * \return frame count + */ +CanInterface::FrameCount CanInterface::rxCount() +{ + if ( _rxFrameCount <= FrameCount_MAX ) { + ++_rxFrameCount; + } else { + _rxFrameCount = 1; + } + return _rxFrameCount; +} + +/*! + * \brief CanInterface::txCount + * \details count transmitted frames up the size of the FrameCount type size + * \return frame count + */ +CanInterface::FrameCount CanInterface::txCount() +{ + if ( _txFrameCount <= FrameCount_MAX ) { + ++_txFrameCount; + } else { + _txFrameCount = 1; + } + return _txFrameCount; +} + +/*! * \brief frameFlags * \details CANBUS message frame type as flags * \param vFrame - CANBUS message frame @@ -302,7 +345,7 @@ */ void CanInterface::onFrameWrittern(qint64 /*vFramesCount*/) { - //_numberFramesWritten = vFramesCount; + //_txFrameCount = vFramesCount; //qDebug() << "onFrameWrittern::FramesCount : " << vFramesCount; } @@ -315,10 +358,10 @@ if (!_canDevice) return; while (_canDevice->framesAvailable()) { - //int i = _canDevice->framesAvailable(); const QCanBusFrame frame = _canDevice->readFrame(); - //qDebug() << "frame: #" << i << frame.toString(); - consoleOut(frame); + rxCount(); + if ( _enableConsoleOut ) + consoleOut(frame, QString("Rx:%1").arg(_rxFrameCount)); emit didFrameReceive(frame); } } @@ -332,6 +375,8 @@ void CanInterface::onFrameTransmit(const QCanBusFrame &vFrame) { bool ok = transmit(vFrame); - consoleOut(vFrame); + txCount(); + if ( _enableConsoleOut ) + consoleOut(vFrame, QString("Tx:%1").arg(_txFrameCount)); emit didFrameTransmit(ok); }