Index: denali.pro.user =================================================================== diff -u -r4836b003eb45d7f8cb98ea4c7999d068f0beb0d2 -rf7dfb1584c0cef395be168832f809fc0f8c863d8 --- denali.pro.user (.../denali.pro.user) (revision 4836b003eb45d7f8cb98ea4c7999d068f0beb0d2) +++ denali.pro.user (.../denali.pro.user) (revision f7dfb1584c0cef395be168832f809fc0f8c863d8) @@ -1,6 +1,6 @@ - + EnvironmentId @@ -68,7 +68,7 @@ Qt 5.12.5 (iMX8) Qt 5.12.5 (iMX8) {5d6458ef-f917-4aef-a092-c77bbe106149} - 0 + 1 0 0 Index: scripts/autostart =================================================================== diff -u -r3b9a656e9672a3db74f14b476bf1df249f016805 -rf7dfb1584c0cef395be168832f809fc0f8c863d8 --- scripts/autostart (.../autostart) (revision 3b9a656e9672a3db74f14b476bf1df249f016805) +++ scripts/autostart (.../autostart) (revision f7dfb1584c0cef395be168832f809fc0f8c863d8) @@ -1,5 +1,7 @@ #!/bin/sh - +# +# This script will be in the /etc/init.d/ as an autostart. +# case "$1" in start) logger "Starting autostart scripts" Index: scripts/run.sh =================================================================== diff -u -r7d23aecac8db9b7495e7d505f55bba5a0d510360 -rf7dfb1584c0cef395be168832f809fc0f8c863d8 --- scripts/run.sh (.../run.sh) (revision 7d23aecac8db9b7495e7d505f55bba5a0d510360) +++ scripts/run.sh (.../run.sh) (revision f7dfb1584c0cef395be168832f809fc0f8c863d8) @@ -1,5 +1,9 @@ #!/bin/sh - +# +# This script will be called by autostart script in the /etc/init.d/ +# to initialize the Denali UI Application Software environment +# and finaly calls the Application itself in background. +# HOME=/home/root SDCARD_DEV=/dev/mmcblk1p1 SDCARD_MNT=/media/sd-card @@ -32,9 +36,9 @@ fi #setting up can interface -ip link set can0 up type can bitrate 250000 -ifconfig can0 txqueuelen 4000 -sysctl net/core/netdev_max_backlog=4000 +# current settings can be retrieved by the command below +# $ ip -details -statistics link show can0 +ip link set can0 up type can bitrate 250000 restart-ms 100 if [ $? -eq 0 ]; then echo ":: Can interface setup" fi Index: scripts/setupSD.sh =================================================================== diff -u -r174d5078531f9dfbe9cdc45274b852984bb72647 -rf7dfb1584c0cef395be168832f809fc0f8c863d8 --- scripts/setupSD.sh (.../setupSD.sh) (revision 174d5078531f9dfbe9cdc45274b852984bb72647) +++ scripts/setupSD.sh (.../setupSD.sh) (revision f7dfb1584c0cef395be168832f809fc0f8c863d8) @@ -1,5 +1,7 @@ #!/bin/sh - +# +# This script is a utility script and not ment ot be on target. +# IP=$1 if [ "$1" = "" ]; then echo "Usage : $0 " Index: sources/canbus/caninterface.cpp =================================================================== diff -u -r4836b003eb45d7f8cb98ea4c7999d068f0beb0d2 -rf7dfb1584c0cef395be168832f809fc0f8c863d8 --- sources/canbus/caninterface.cpp (.../caninterface.cpp) (revision 4836b003eb45d7f8cb98ea4c7999d068f0beb0d2) +++ sources/canbus/caninterface.cpp (.../caninterface.cpp) (revision f7dfb1584c0cef395be168832f809fc0f8c863d8) @@ -349,7 +349,6 @@ } else { mFrameCount = vFramesCount - (FrameCount_MAX - vFramesCount); } - qDebug() << "0 - Frame written #" << mFrameCount; emit didFrameWritten(vFramesCount); } Index: sources/canbus/frameinterface.cpp =================================================================== diff -u -r4836b003eb45d7f8cb98ea4c7999d068f0beb0d2 -rf7dfb1584c0cef395be168832f809fc0f8c863d8 --- sources/canbus/frameinterface.cpp (.../frameinterface.cpp) (revision 4836b003eb45d7f8cb98ea4c7999d068f0beb0d2) +++ sources/canbus/frameinterface.cpp (.../frameinterface.cpp) (revision f7dfb1584c0cef395be168832f809fc0f8c863d8) @@ -45,9 +45,8 @@ initConnections(); - startTimer(10); + startTimer(1, Qt::PreciseTimer); // _interval - LOG_EVENT(QObject::tr("%1 Initialized").arg(metaObject()->className())); return true; @@ -148,9 +147,6 @@ */ void FrameInterface::transmitFrame(Can_Id vFrameId, const QByteArray &vData) { - qDebug() << " + " << _fc; - ++_fc; - qDebug() << " + " << _fc; QCanBusFrame mFrame; mFrame.setFrameId(vFrameId); if (vData.length() > Can::eLenCanFrame) { @@ -215,52 +211,54 @@ */ void FrameInterface::onFrameTransmit(Can_Id vCan_Id, const QByteArray &vData) { - //QMutexLocker locker(&_mutexTransmit1); - QString mtime = QTime::currentTime().toString("HH:mm:ss.zzz"); - _frameList.append(Frame(vCan_Id, vData)); - qDebug() << mtime << "1 - Send Queued #" << _frameList.count(); - - //transmitFrame(vCan_Id, vData); - - //qDebug() << " ~ " << _fc; - //if ( _waitSend ) { - // _frameList.append(Frame(vCan_Id, vData)); - // qDebug() << mtime << "2 - Send postponed #" << _frameList.count(); - //} else { - // if (_frameList.isEmpty()) { - // transmitFrame(vCan_Id, vData); - // qDebug() << mtime << "1 - Send immediate #" << _frameList.count(); - // } else { - // Frame frame = _frameList.first(); - // transmitFrame(frame.can_Id, frame.data); - // qDebug() << mtime << "3 - Send From Q #" << _frameList.count(); - // } - //} - //qDebug() << " ~ " << _fc; + appendHead(vCan_Id, vData); + qDebug() << _time << "apnd #" << _frameList.count(); } void FrameInterface::onFrameWritten(qint64 vCount) { - //QMutexLocker locker(&_mutexTransmit2); - QString mtime = QTime::currentTime().toString("HH:mm:ss.zzz"); - qDebug() << mtime << "4 - Send frame #" << _frameList.count() << vCount; - if (!_frameList.isEmpty()) _frameList.removeFirst(); - // qDebug() << " - " << _fc; - // _fc -= vCount; - // qDebug() << " - " << _fc; + _transmitted = true; + removeHead(); + qDebug() << _time << "Sent #" << _frameList.count() << vCount; } void FrameInterface::timerEvent(QTimerEvent *) { - //QMutexLocker locker(&_mutexTransmit3); - //transmitFrame(eChlid_LOWEST, QByteArray()); - if (_frameList.isEmpty()) return; - QString mtime = QTime::currentTime().toString("HH:mm:ss.zzz"); + static quint8 count = 0; + _time = QTime::currentTime().toString("HH:mm:ss.zzz"); + + + if (++count != _interval) return; + qDebug() << _time; + count = 0; + _transmitted = false; + trnsmtHead(); +} + +void FrameInterface::trnsmtHead() +{ + if (_frameList.isEmpty() ) { + transmitFrame(eChlid_LOWEST,QByteArray()); + return; + } Frame frame = _frameList.first(); transmitFrame(frame.can_Id, frame.data); - qDebug() << mtime << "2 - Send From Q #" << _frameList.count(); + qDebug() << _time << "Tsmt #" << _frameList.count(); } +void FrameInterface::removeHead() +{ + if (!_frameList.isEmpty() ) { + _frameList.removeFirst(); + } +} + +void FrameInterface::appendHead(Can_Id vCan_Id, const QByteArray &vData) +{ + Frame frame = Frame(vCan_Id, vData); + _frameList.append(frame); +} + /*! * \brief FrameInterface::onFrameReceive * \details This the slot connected to the CanInterface didFrameReceive signal. @@ -275,7 +273,7 @@ quint32 mFrameId = vFrame.frameId(); ChannelGroup channelGroup = checkChannel(mFrameId, &ok); - if (!ok){ + if (!ok) { LOG_ERROR("Unexpected Channel\r\n" + Format::toHexString(mFrameId, false, eLenChannelDigits) + " -- " + vFrame.payload().toHex(' ')); return; Index: sources/canbus/frameinterface.h =================================================================== diff -u -r4836b003eb45d7f8cb98ea4c7999d068f0beb0d2 -rf7dfb1584c0cef395be168832f809fc0f8c863d8 --- sources/canbus/frameinterface.h (.../frameinterface.h) (revision 4836b003eb45d7f8cb98ea4c7999d068f0beb0d2) +++ sources/canbus/frameinterface.h (.../frameinterface.h) (revision f7dfb1584c0cef395be168832f809fc0f8c863d8) @@ -71,12 +71,10 @@ } }; QList _frameList; - bool _waitSend = false; - QMutex _mutexTransmit1; - QMutex _mutexTransmit2; - QMutex _mutexTransmit3; - qint64 _fc = 0; + bool _transmitted = false; + const quint8 _interval = 7; + QString _time ; // Singleton SINGLETON(FrameInterface) @@ -97,6 +95,11 @@ void transmitFrame(Can_Id vCan_Id, const QByteArray &vData = 0); ChannelGroup checkChannel(quint32 vFrameId, bool *vOK = nullptr); + void appendHead(Can_Id vCan_Id, const QByteArray &vData); + void trnsmtHead(); + void removeHead(); + + private slots: // Should be private for thread safety and is connected internally. void onFrameTransmit(Can_Id vCan_Id, const QByteArray &vData ); // GUI => CAN void onFrameReceive ( const QCanBusFrame &vFrame ); // GUI <= CAN Index: sources/storage/logger.cpp =================================================================== diff -u -ra19a0f20e804dc797a725b6ed6f93455ecdab731 -rf7dfb1584c0cef395be168832f809fc0f8c863d8 --- sources/storage/logger.cpp (.../logger.cpp) (revision a19a0f20e804dc797a725b6ed6f93455ecdab731) +++ sources/storage/logger.cpp (.../logger.cpp) (revision f7dfb1584c0cef395be168832f809fc0f8c863d8) @@ -99,8 +99,8 @@ connect(&_exportWatcher, SIGNAL(finished()), this , SLOT(onExport())); - // connect(this, SIGNAL(didLog(QString,LogType)), - // this, SLOT( onLog(QString,LogType))); + connect(this, SIGNAL(didLog(QString,LogType)), + this, SLOT( onLog(QString,LogType))); } /*!