Index: drydemo.pro =================================================================== diff -u -r584874a724b2d3e8c98247d3b0e42d6a34ce9478 -r260229a756a3ee29c681132bdc4d32204c215ceb --- drydemo.pro (.../drydemo.pro) (revision 584874a724b2d3e8c98247d3b0e42d6a34ce9478) +++ drydemo.pro (.../drydemo.pro) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -65,6 +65,7 @@ sources/Threads.h \ sources/MainTimer.h \ sources/ApplicationPost.h \ # TODO clean up + sources/MessageGlobals.h \ \ # Controllers sources/ApplicationController.h \ sources/storage/Settings.h \ @@ -76,7 +77,6 @@ sources/canbus/CanInterface.h \ sources/canbus/FrameInterface.h \ \ # Denali Message - sources/canbus/MessageGlobals.h \ sources/canbus/MessageAcknowModel.h \ sources/canbus/MessageBuilder.h \ sources/canbus/MessageInterpreter.h \ Index: drydemo.pro.user =================================================================== diff -u -r1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c -r260229a756a3ee29c681132bdc4d32204c215ceb --- drydemo.pro.user (.../drydemo.pro.user) (revision 1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c) +++ drydemo.pro.user (.../drydemo.pro.user) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -1,6 +1,6 @@ - + EnvironmentId @@ -470,6 +470,7 @@ /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Release/denali + /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Release/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali @@ -478,15 +479,14 @@ /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali - /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Release/denali - /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Release/denali /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali + /home/denali/Projects/tmp/build/build-denali-Qt_5_15_10_iMX8-Debug/denali - 192.168.137.25 192.168.137.30 + 192.168.137.25 192.168.10.186 192.168.10.167 192.168.137.170 @@ -495,15 +495,15 @@ 192.168.10.228 192.168.10.228 192.168.10.138 + 192.168.137.202 192.168.137.36 192.168.137.125 - 192.168.137.202 192.168.137.247 192.168.137.3 - 192.168.137.24 - 192.168.40.23 192.168.137.26 192.168.137.170 + 192.168.40.23 + 192.168.137.24 192.168.10.186 @@ -551,47 +551,47 @@ /opt/b2qt/3.1.18/sysroots - 2023-02-02T02:13:54.596 2023-02-02T02:30:48.337 + 2023-02-02T02:13:54.596 2023-01-18T17:47:08.797 2023-02-02T19:40:15.813 2023-01-27T10:15:15.423 2023-02-02T01:52:20.307 2023-01-24T18:19:13.179 - 2023-01-17T18:06:25.579 2023-01-17T18:18:03.749 + 2023-01-17T18:06:25.579 2023-02-02T09:06:00.862 + 2023-02-02T01:46:50.167 2023-02-01T03:23:15.710 2023-02-02T02:07:25.922 - 2023-02-02T01:46:50.167 2023-02-02T02:26:33.738 2023-02-02T02:40:56.627 - 2023-02-02T02:05:29.947 - 2023-01-24T17:29:54.849 2023-02-01T05:00:56.449 2023-01-27T09:45:11.898 + 2023-01-24T17:29:54.849 + 2023-02-02T02:05:29.947 2023-01-18T20:13:36.296 - 2023-02-02T02:14:08.000 2023-02-02T02:31:01.000 + 2023-02-02T02:14:08.000 2023-01-18T17:47:04.000 2023-02-02T19:39:36.000 2023-01-27T10:15:08.000 2023-02-02T01:52:16.000 2023-01-24T18:18:58.000 - 2023-01-17T18:05:42.000 2023-01-17T18:17:25.000 + 2023-01-17T18:05:42.000 2023-02-02T09:05:22.000 + 2023-02-02T01:47:02.000 2023-02-01T03:23:28.000 2023-02-02T02:07:21.000 - 2023-02-02T01:47:02.000 2023-02-02T02:26:46.000 2023-02-02T02:41:10.000 - 2023-02-02T02:05:42.000 - 2023-01-24T17:30:03.000 2023-02-01T05:00:51.000 2023-01-27T09:44:58.000 + 2023-01-24T17:30:03.000 + 2023-02-02T02:05:42.000 2023-01-18T20:13:33.000 Index: drydemoxmlstates.scxml =================================================================== diff -u -r1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c -r260229a756a3ee29c681132bdc4d32204c215ceb --- drydemoxmlstates.scxml (.../drydemoxmlstates.scxml) (revision 1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c) +++ drydemoxmlstates.scxml (.../drydemoxmlstates.scxml) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -1,25 +1,25 @@ - + - + - - + + - + - + Index: sources/MessageGlobals.h =================================================================== diff -u --- sources/MessageGlobals.h (revision 0) +++ sources/MessageGlobals.h (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -0,0 +1,176 @@ +/*! + * + * Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file MessageGlobals.h + * \author (last) Dara Navaei + * \date (last) 08-May-2024 + * \author (original) Behrouz NematiPour + * \date (original) 26-Aug-2020 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "types.h" + +namespace Can { + +/*! + * \brief Sequence + * \details the messages sequence type + */ +typedef qint16 Sequence; +typedef Types::S16 Sequence_Bytes; +#define SEQUENCE_MAX INT16_MAX + +/*! + * \brief FrameCount + * \details The maximum unsigned integer value to be used as the frame count + */ +typedef quint64 FrameCount; + +/*! + * \brief The Payload_Data enum + * \details Global information for message packet. + */ +enum Payload_Data : quint8 { + ePayload_None = 0x00, + ePayload_Sync = 0xA5, +}; + +/*! + * \brief The Frame_Data enum + * \details Global information for each message frame. + */ +enum Frame_Data : quint8 { + eLenCanFrame = 8, ///< The length of each can frame. Should be padded by 0x00 if is less. + eLenHeaderInfo = 5, ///< The Header length witch is included in CRC after Sync byte (it's the sum of eLenSequence + eLenActionId + eLenLength) + eLenMaxHeaderData = 3, ///< Maximum data byte can be in one frame as header data portion + eLenMaxData = 255, ///< Maximum data length in a Can Message since data length value kept in one byte + + eLenSyncByte = 1, ///< The length of Sync byte at the beginning of each header frame + eLenSequence = 2, ///< The length of Sequence number bytes (2) at the beginning of each header frame after sync + eLenActionId = 2, ///< The length of MessageID bytes + eLenLength = 1, ///< The length of data length value byte at the beginning of each header frame after MessageID + + eLenCRCDigits = 2, ///< The length of CRC value byte in each Denali message + eLenChannelDigits = 3, ///< The length of channel value byte in each Denali message + eLenMessageIDDigits = 4, ///< The length of message id value byte in each Denali message + +}; + +/*! + * \brief The Can_Id enum + * \details The Valid CANBus MessageID of each frame + */ +enum Can_Id : quint16 { + eChlid_LOWEST = 0x7FF, + eChlid_NONE = 0x7FF, + + // Broadcasts + //// Alarm + eChlid_HD_Alarm = 0x001, ///< HD alarm broadcast + eChlid_DG_Alarm = 0x002, ///< DG alarm broadcast + eChlid_UI_Alarm = 0x004, ///< UI alarm broadcast [Out] + //// Sync + eChlid_HD_Sync = 0x040, ///< HD sync broadcast + eChlid_DG_Sync = 0x080, ///< DG sync broadcast + eChlid_UI_Sync = 0x200, ///< UI sync broadcast [Out] + + // UI not listening + eChlid_HD_DG = 0x008, ///< HD => DG + eChlid_DG_HD = 0x010, ///< DG => HD + + // UI is listening + eChlid_HD_UI = 0x020, ///< HD => UI + eChlid_UI_HD = 0x100, ///< UI => HD [Out] + + // UI listens occasionally + eChlid_DG_UI = 0x070, ///< DG => UI + eChlid_UI_DG = 0x110, ///< UI => DG [Out] + + // Dialing channel has been requested by V&V team for CANBus testing + // and clarify the source of the unexpected channel message + // UI still does not do anything with the messages on these channels. + eDialin_HD = 0x400, ///< dialin => HD + eHD_Dialin = 0x401, ///< HD => dialin + eDialin_DG = 0x402, ///< dialin => DG + eDG_Dialin = 0x403, ///< DG => dialin + eDialin_UI = 0x404, ///< dialin => UI + eUI_Dialin = 0x405, ///< UI => dialin +}; + +/*! + * \brief The Can_Source enum + * \details The allowable sources of the CANBus messages. + */ +enum Can_Source { + eCan_Unknown = -1, + eCan_HD = 0, + eCan_DG = 1, + eCan_DI = 2, + eCan_UI = 3, +}; + +enum Message_ID_Enum { + ID_NONE = 0x0000, + ID_HD_OP_MODE = 0x2500, + ID_HD_NEW_PARAMS_RESP = 0x3600, + ID_UI_RQST_TX = 0x3800, +}; + +enum HD_OP_MODE { + MODE_FAUL = 0, ///< Fault mode + MODE_SERV, ///< Service mode + MODE_INIT, ///< Initialization & POST mode + MODE_STAN, ///< Standby mode + MODE_TPAR, ///< Treatment Parameters mode + MODE_PRET, ///< Pre-Treatment mode + MODE_TREA, ///< Treatment mode + MODE_POST, ///< Post-Treatment mode + MODE_NLEG, ///< Not legal - an illegal mode transition occurred +}; + +/*! + * \brief The Message struct + * \details The message structure after it's been converted form hex bytes to meaningful struct for UI. + */ +struct Message { // TODO : Should be converted to MessageModel class // no time left for now !!! + Can_Id can_id = eChlid_NONE; + Sequence sequence = 0; // seq 0 is invalid + int actionId = 0; + int length = 0; + QByteArray head; + QByteArray data; + bool initialized = false; + + bool isEmpty () { + // disabled coco begin validated:Has been validated manually. + // Since the crc is part of the data and there is no message without crc + // initialized flag and data.length() == 0 became the same. + // It is preferred to keep it as is so that the initialization is independent of data. + return !initialized || !data.length(); + // disabled coco end + } + bool isComplete() { + // disabled coco begin validated:Has been validated manually. + // Since the crc is part of the data and there is no message without crc + // then a message would never be empty. + // It is preferred to keep it as is so that the initialization is independent of data. + //qDebug() << data.length() << length; + return !isEmpty() && data.length() == length; + // disabled coco end + } +}; + +typedef QList MessageList; +typedef QList FrameList; +typedef Message_ID_Enum MessageID; +} Index: sources/StateController.cpp =================================================================== diff -u -r1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c -r260229a756a3ee29c681132bdc4d32204c215ceb --- sources/StateController.cpp (.../StateController.cpp) (revision 1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c) +++ sources/StateController.cpp (.../StateController.cpp) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -6,13 +6,17 @@ void StateController::init() { + startTimer(1000); connect(&_ApplicationController, SIGNAL(didUnhandledMsgAppController(const QVariantList &)), - this , SLOT(onStateControllerUnhandledMsgReceived(const QVariantList &))); + this , SLOT(doStateControllerUnhandledMsgReceived(const QVariantList &))); - _dryDemo.connectToState("Idle" , this, &StateController::onIdleStateChange ); - _dryDemo.connectToState("Treatment" , this, &StateController::onTreatmentStateChange ); - _dryDemo.connectToState("Disinfect" , this, &StateController::onDisinfectStateChange ); + _dryDemo.connectToState("Idle" , this, &StateController::onIdleStateChange ); + _dryDemo.connectToState("Tx_Params" , this, &StateController::onTreatmentParamsStateChange ); + _dryDemo.connectToState("Disinfect" , this, &StateController::onDisinfectStateChange ); + + initReceivedMessagesHash(); // Todo move this? + initBroadcastMessagesHash(); } void StateController::quit() @@ -21,71 +25,106 @@ } -void StateController::onStateControllerUnhandledMsgReceived(const QVariantList &msg) +void StateController::doStateControllerUnhandledMsgReceived(const QVariantList &msg) { - qDebug() << "Message With new" << msg[0]; - - quint16 receivedMsgID = msg[0].toUInt(); - - if (!_dryDemo.isRunning()) { _dryDemo.start(); // TODO why cannot start the state machine somewhere else? } - qDebug() << "Active states" << _dryDemo.activeStateNames(); + MessageID receivedMsgID = static_cast(msg[0].toUInt()); - switch(receivedMsgID) - { - case 0x2500: // TODO enum for this - //qDebug() << "Right here"; - //_dryDemo.connectToState("Idle", _dryDemo.onEntry([&]() { - // qDebug() << "In onEntry" << _dryDemo.activeStateNames();})); - //qDebug() << "New state" << _dryDemo.activeStateNames(); - //QVariantList list; - //list.append(static_cast(0x2A00)); - //list.append(Can_Id::eChlid_HD_UI); - //list.append(68); - //list.append(34.56); - //emit _ApplicationController.didActionTransmit(list); - break; - case 0x2700: - if ( _dryDemo.activeStateNames()[0] == "Idle" ) { - qDebug() << "Current active"; - _dryDemo.submitEvent("Tx_Start_Rqst"); - } + if (_dryDemoMsgTable.contains(receivedMsgID)) { + _activeMessageID = receivedMsgID; - qDebug() << "Active state in 0x2700" << _dryDemo.activeStateNames()[0]; - - if (_dryDemo.activeStateNames()[0] == "Treatment") - { - qDebug() << "Active state in treatment" << _dryDemo.activeStateNames()[0]; - _dryDemo.submitEvent("Transition_back_2_idle"); - } - break; + _dryDemo.submitEvent("Transition_back_2_idle"); } +} - //qDebug() << "Msg Received" << msg; // TODO remove +void StateController::timerEvent(QTimerEvent *) +{ + if (_dryDemo.activeStateNames().size() > 0) { + QString currentState = _dryDemo.activeStateNames()[0]; + + if (_dryDemoBroadcast.contains(currentState)) { + //_dryDemoBroadcast[currentState][0].toUInt() += 1; + qDebug() << "In timer event" << currentState << _dryDemoBroadcast[currentState][0]; + QVariantList msg = _dryDemoBroadcast[currentState].mid(RESP_MSG_START_INDEX); + emit _ApplicationController.didActionTransmit(msg); + } + } } // ---------------------- Private methods ------------------ // +void StateController::initReceivedMessagesHash() +{ + // TODO these should be config + _dryDemoMsgTable[ID_UI_RQST_TX].append("Transition_2_Tx_Parms"); + _dryDemoMsgTable[ID_UI_RQST_TX].append(static_cast(ID_HD_OP_MODE)); + _dryDemoMsgTable[ID_UI_RQST_TX].append(Can_Id::eChlid_HD_UI); + _dryDemoMsgTable[ID_UI_RQST_TX].append(MODE_TPAR); + _dryDemoMsgTable[ID_UI_RQST_TX].append(0); +} + +void StateController::initBroadcastMessagesHash() +{ + _dryDemoBroadcast["Tx_Params"].append(0); + _dryDemoBroadcast["Tx_Params"].append(ID_HD_NEW_PARAMS_RESP); + _dryDemoBroadcast["Tx_Params"].append(Can_Id::eChlid_HD_UI); + _dryDemoBroadcast["Tx_Params"].append(1); + _dryDemoBroadcast["Tx_Params"].append(0); + _dryDemoBroadcast["Tx_Params"].append(275); + _dryDemoBroadcast["Tx_Params"].append(250); + _dryDemoBroadcast["Tx_Params"].append(60); + + _dryDemoBroadcast["Tx_Params"].append(0); + _dryDemoBroadcast["Tx_Params"].append(100); + _dryDemoBroadcast["Tx_Params"].append(0); + _dryDemoBroadcast["Tx_Params"].append(0); + _dryDemoBroadcast["Tx_Params"].append(0); + _dryDemoBroadcast["Tx_Params"].append(0); + _dryDemoBroadcast["Tx_Params"].append(0); + + _dryDemoBroadcast["Tx_Params"].append(250); + _dryDemoBroadcast["Tx_Params"].append(120); + _dryDemoBroadcast["Tx_Params"].append(100); + _dryDemoBroadcast["Tx_Params"].append(20); + _dryDemoBroadcast["Tx_Params"].append(0.000); + _dryDemoBroadcast["Tx_Params"].append(0.000); + _dryDemoBroadcast["Tx_Params"].append(36.00); +} + +void StateController::transitionToStandBy() +{ + QVariantList list; + list.append(static_cast(ID_HD_OP_MODE)); + list.append(Can_Id::eChlid_HD_UI); + list.append(MODE_STAN); + list.append(0); + emit _ApplicationController.didActionTransmit(list); +} + void StateController::onIdleStateChange(bool active) { if (active) { - REMOVE_THIS++; - qDebug() << "Idle from function" << REMOVE_THIS << active; + qDebug() << "Idle on entry"; + transitionToStandBy(); - if (REMOVE_THIS == 2) { - _dryDemo.submitEvent("Disinfect_Rqst"); - } + if (_activeMessageID != ID_NONE) { + QString transitionEvent = _dryDemoMsgTable[_activeMessageID][TRANSITION_EVENT_INDEX].toString(); + _dryDemo.submitEvent(transitionEvent); + } } + else { + QVariantList msg = _dryDemoMsgTable[_activeMessageID].mid(RESP_MSG_START_INDEX); + emit _ApplicationController.didActionTransmit(msg); + } } -void StateController::onTreatmentStateChange(bool active) +void StateController::onTreatmentParamsStateChange(bool active) { - qDebug() << "Calling treatment function"; if (active) { - qDebug() << "Treatment active"; + qDebug() << "In treatment params on entry"; } else { qDebug() << "Treatment inactive"; Index: sources/StateController.h =================================================================== diff -u -r1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c -r260229a756a3ee29c681132bdc4d32204c215ceb --- sources/StateController.h (.../StateController.h) (revision 1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c) +++ sources/StateController.h (.../StateController.h) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -2,37 +2,45 @@ #include +#include #include "main.h" #include "MessageGlobals.h" #include "drydemoxmlstates.h" -// TODO maybe the DryDemoStates in the scxml not needed? - #define _StateController StateController::I() +// TODO check illegal state transition + class StateController : public QObject { Q_OBJECT - SINGLETON(StateController) public: - void init(); // TODO these in slots + void init(); // TODO move these in slots void quit(); public slots: - void onStateControllerUnhandledMsgReceived(const QVariantList &msg); + void doStateControllerUnhandledMsgReceived(const QVariantList &msg); +protected: + void timerEvent(QTimerEvent *) override; + private: + #define TRANSITION_EVENT_INDEX 0 + #define RESP_MSG_START_INDEX 1 + + QHash _dryDemoMsgTable; + QHash _dryDemoBroadcast; drydemoXMLstates _dryDemo; - QString _previoustStateName; + Can::MessageID _activeMessageID = Can::ID_NONE; - quint16 REMOVE_THIS = 0; + void initReceivedMessagesHash(); + void initBroadcastMessagesHash(); + void transitionToStandBy(); - void buildRespondMessage(); - void onIdleStateChange(bool active); - void onTreatmentStateChange(bool active); + void onTreatmentParamsStateChange(bool active); void onDisinfectStateChange(bool active); }; Index: sources/canbus/FrameInterface.cpp =================================================================== diff -u -rc0b30f1fa82d0121706351057ab52b3bb1141459 -r260229a756a3ee29c681132bdc4d32204c215ceb --- sources/canbus/FrameInterface.cpp (.../FrameInterface.cpp) (revision c0b30f1fa82d0121706351057ab52b3bb1141459) +++ sources/canbus/FrameInterface.cpp (.../FrameInterface.cpp) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -202,8 +202,9 @@ case eChlid_HD_Sync : // disabled coco begin validated: The UI/DG communication has not been defined and implemented yet. case eChlid_DG_Alarm : - case eChlid_DG_UI : + case eChlid_DG_UI : case eChlid_DG_Sync : + case eChlid_UI_HD : // This is for dry demo // disabled coco end //case eChlid_DG_UI : // has duplicate value as eChlid_DG_Alarm channelGroup = ChannelGroup::eChannel_Listens; Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -r1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c -r260229a756a3ee29c681132bdc4d32204c215ceb --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -246,7 +246,6 @@ for (int i = 2; i < vData.size(); ++i) { mData += Format::fromVariant(vData[i]); - qDebug() << "Data" << mData << vData[i]; } FrameList frameList; @@ -438,7 +437,6 @@ if ( ! checkAcknowReceived(vMessage, srcText) ) { // check if the message was an acknowledge. checkAcknowTransmit(vMessage, srcText); // then if needs acknow send it immediately. } - // disabled coco begin validated: Has been validated manually. If MessageInterpreter::interpretMessage fails, this also returns false if ( _interpreter.interpretMessage( vMessage, mData ) ) { ok = true; Fisheye: Tag 260229a756a3ee29c681132bdc4d32204c215ceb refers to a dead (removed) revision in file `sources/canbus/MessageGlobals.h'. Fisheye: No comparison available. Pass `N' to diff? Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c -r260229a756a3ee29c681132bdc4d32204c215ceb --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 1cfa9a2d55e3bf954e5d02f12b73d3a8deda9e5c) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -245,6 +245,11 @@ if (vText) *vText = "DI"; return Can_Source::eCan_DI; + case eChlid_UI_HD : // 0x100, ///< UI for dry demo + if (vText) *vText = "UI"; + return Can_Source::eCan_UI; + // TODO why no break? + default: if (vText) *vText = "XX"; return Can_Source::eCan_Unknown; @@ -320,7 +325,7 @@ else { Q_UNUSED (vData ); printUnhandled (vMessage ); - //qDebug() << "1" <<__FUNCTION__; + //qDebug() << "1" <<__FUNCTION__ << vMessage.actionId; } return ok; } @@ -496,8 +501,12 @@ } } LOG_APPED(logString); - qDebug() << "Message" << logString; - emit didUnhandledMsgReady(logVariant); + if ((id != 0x700) && (id != 0xFFFF) ) { + // Message 0x0700 is UI check in. It is not needed to be processed for dry demo + // Message 0xFFFF is the ack message and it is not needed to be processed for dry demo + qDebug() << "Message" << logString; + emit didUnhandledMsgReady(logVariant); + } } else { if ( gDisableUnhandledReport ) { // if the unhandled message error has been disabled, return. Index: sources/utility/format.cpp =================================================================== diff -u -r6abfb957108b171a8a5ab6770ad9b463235c210b -r260229a756a3ee29c681132bdc4d32204c215ceb --- sources/utility/format.cpp (.../format.cpp) (revision 6abfb957108b171a8a5ab6770ad9b463235c210b) +++ sources/utility/format.cpp (.../format.cpp) (revision 260229a756a3ee29c681132bdc4d32204c215ceb) @@ -127,7 +127,6 @@ Types::S32 s32; s32.value = vData.toInt(); Types::setValue(s32, mData); - qDebug() << "Variant in Int" << vData << mData; return mData; }