Index: sources/canbus/messagedispatcher.cpp =================================================================== diff -u -r0a2ca0373a422201d5316df8fb891ef38799e3f9 -r213ca3711cd2ea573946055137532abfb55f908b --- sources/canbus/messagedispatcher.cpp (.../messagedispatcher.cpp) (revision 0a2ca0373a422201d5316df8fb891ef38799e3f9) +++ sources/canbus/messagedispatcher.cpp (.../messagedispatcher.cpp) (revision 213ca3711cd2ea573946055137532abfb55f908b) @@ -2,13 +2,14 @@ * * Copyright (c) 2019-2020 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. + * 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 messagepacker.cpp - * \date 12/9/2019 - * \author Behrouz NematiPour + * \file messagedispatcher.cpp + * \author (last) Behrouz NematiPour + * \date (last) 20-Aug-2020 + * \author (original) Behrouz NematiPour + * \date (original) 09-Dec-2019 * */ #include "messagedispatcher.h" @@ -195,10 +196,8 @@ void MessageDispatcher::onFailedTransmit(Sequence vSequence) { - // coco begin validated: Is a placeholder and has not beed implemented yet - Q_UNUSED(vSequence) - // may requires showing an alarm screen - // but we don't know yet. + // coco begin validated: Is a placeholder and has not been implemented yet + emit didFailedTransmit(vSequence); } // coco end @@ -232,7 +231,7 @@ /*! * \brief MessageDispatcher::onAdjustment * \details This method transmits the treatment duration Adjustment Denali message. - * \param vData - Data model contains treatment duration adjustment value in minuts + * \param vData - Data model contains treatment duration adjustment value in minutes * \return void */ void MessageDispatcher::onAdjustment(const AdjustDurationRequestData &vData) @@ -282,8 +281,115 @@ onActionTransmit(GuiActionType::ID_AdjustUltrafiltrationConfirmReq, mData); } +/*! + * \brief MessageDispatcher::onAdjustment + * \details This method transmits the StartTreatment request message. + * \param vData - Data model contains the start treatment request information. + * \return void + */ +void MessageDispatcher::onAdjustment(const StartTreatmentRequestData &vData) +{ + QVariantList mData; + mData += vData.request; + onActionTransmit(GuiActionType::ID_StartTreatmentReq, mData); +} /*! + * \brief MessageDispatcher::onAdjustment + * \details This method transmits the Alarm Request Silence message. + * \param vData - Data model contains the silence request information. + * \return void + */ +void MessageDispatcher::onAdjustment(const AlarmSilenceRequestData &vData) +{ + QVariantList mData; + mData += vData.state; + onActionTransmit(GuiActionType::ID_AlarmSilenceReq, mData); +} + +/*! + * \brief MessageDispatcher::onAdjustment + * \details This method transmits the Alarm Acknowledge Request message. + * \param vData - Data model contains the user acknowledge request information. + * \return void + */ +void MessageDispatcher::onAdjustment(const AlarmAcknowledgeRequestData &vData) +{ + QVariantList mData; + mData += vData.alarmID; + onActionTransmit(GuiActionType::ID_AlarmUserAckReq, mData); +} + +/*! + * \brief MessageDispatcher::onAdjustment + * \details This method transmits the Confirm Treatment request message. + * \param vData - Data model contains the confirm treatment request + * \return void + */ +void MessageDispatcher::onAdjustment(const ConfirmTreatmentRequestData &vData) +{ + Q_UNUSED(vData) + QVariantList mData; + onActionTransmit(GuiActionType::ID_ConfirmTreatmentReq, mData); +} + +/*! + * \brief MessageDispatcher::onAdjustment + * \details This method transmits the End Treatment request message. + * \param vData - Data model contains the end treatment request + * \return void + */ +void MessageDispatcher::onAdjustment(const EndTreatmentRequestData &vData) +{ + Q_UNUSED(vData) + QVariantList mData; + onActionTransmit(GuiActionType::ID_EndTreatmentReq, mData); +} + + +/** + * \details This method transmits the Saline Bolus Adjustment Denali message. + * \param vData - Data model contains treatment Saline Bolus adjustment state. + * \return void + */ +void MessageDispatcher::onAdjustment(const AdjustSalineRequestData &vData) +{ + QVariantList mData; + mData += vData.requestedState; + onActionTransmit(GuiActionType::ID_AdjustSalineReq, mData); +} + +/** + * \details This method transmits the Treatment Parameter request message. + * \param vData - Data model contains treatment parameter adjustment data structure + * \return void + */ +void MessageDispatcher::onAdjustment(const AdjustTreatmentParametersRequestData &vData) +{ + QVariantList mData; + mData += vData.bloodFlowRate ; + mData += vData.dialysateFlowRate ; + mData += vData.duration ; + mData += vData.heparinStopTime ; + mData += vData.salineBolus ; + mData += vData.acidConcentrate ; + mData += vData.bicarbonateConcentrate ; + mData += vData.dialyzerType ; + mData += vData.bloodPressureMeasureInterval ; + mData += vData.rinsebackFlowRate ; + mData += vData.arterialPressureLimitLow ; + mData += vData.arterialPressureLimitHigh ; + mData += vData.venousPressureLimitLow ; + mData += vData.venousPressureLimitHigh ; + mData += vData.heparinDispensingRate ; + mData += vData.heparinBolusVolume ; + mData += vData.dialysateTemp ; + + onActionTransmit(GuiActionType::ID_CreateTreatmentReq, mData); +} + + +/*! * \brief MessageDispatcher::actionTransmit * \details This method is called by slot MessageDispatcher::onActionTransmit * which emits didFrameTransmit on successful interpretation of the requested message @@ -302,6 +408,7 @@ } QByteArray mData; + if (! _interpreter.interpretMessage(vActionId, vData, mData)) { LOG_DEBUG(QString("Incorrect Message, can't be interpreted, %1").arg(Format::toHexString(vActionId))); // TODO : LOGGINF IMPROVEMENT return; @@ -319,10 +426,13 @@ #endif } + // coco begin validated: Has been tested manually but in this function this can't be false because the message interpreter is doing the same validation. + // still checking here in case the logic has changed therefore buildFrame should still validate the message for developer safety. if ( ! _builder.buildFrames(vActionId, mData, frameList, mSequence) ) { - LOG_DEBUG(QString("Incorrect Message can't be built")); // TODO : LOGGINF IMPROVEMENT + LOG_DEBUG(QString("Incorrect Message can't be built")); // TODO : LOGGINFO IMPROVEMENT return; } + // coco end if (mNeedsAcknow) { // NOTE : here vSequence should be used which is not negative // because when we get the Acknow it is not the negative @@ -357,7 +467,7 @@ bool MessageDispatcher::buildMessage(Can_Id vCan_Id, const QByteArray &vPayload) { if (vPayload.length() < eLenCanFrame) { - // Each frame has to have exactly 8 (eLenCanFrame) bytes of data and not used bytes should be passed as 00. + // Each frame has to have exactly 8 (eLenCanFrame) bytes of data and unused bytes should be passed as 00. LOG_DEBUG(QString("Incorrect frame length. Exp:%1,got:%2").arg(eLenCanFrame).arg(vPayload.length())); return false; } @@ -381,7 +491,9 @@ bool ok = false; QVariantList mData; Sequence mSequence = vMessage.sequence; + // coco begin validated: Has been validated manually. If MessageInterpreter::interpretMessage fails, this also returns false if (_interpreter.interpretMessage(vMessage, mData)) { + // coco end ok = true; GuiActionType mActionId = vMessage.actionId; switch (mActionId) {