Index: denali.pro =================================================================== diff -u -r561055268da68e24fe91a1148b76bf1785dae14d -r188d7611230946fc5fde4e3e837a09202dd93eea --- denali.pro (.../denali.pro) (revision 561055268da68e24fe91a1148b76bf1785dae14d) +++ denali.pro (.../denali.pro) (revision 188d7611230946fc5fde4e3e837a09202dd93eea) @@ -74,7 +74,8 @@ sources/storage/logger.cpp \ sources/storage/settings.cpp \ sources/utility/crc.cpp \ - sources/utility/format.cpp + sources/utility/format.cpp \ + sources/utility/types.cpp RESOURCES += \ denali.qrc Index: sources/canbus/messageinterpreter.cpp =================================================================== diff -u -r12f922a6c61b7014345a441e2836e12fd3b0d00e -r188d7611230946fc5fde4e3e837a09202dd93eea --- sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 12f922a6c61b7014345a441e2836e12fd3b0d00e) +++ sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 188d7611230946fc5fde4e3e837a09202dd93eea) @@ -140,14 +140,16 @@ types::F32 mMotorSpeed ; types::F32 mMotorCtlSpeed ; types::F32 mMotorCtlCurrent ; - ok = getBloodFlowData(vMessage, mFlowSetPoint, mMeasuredFlow, mRotorSpeed, mMotorSpeed, mMotorCtlSpeed, mMotorCtlCurrent); + types::F32 mPWMDtCycle ; + ok = getBloodFlowData(vMessage, mFlowSetPoint, mMeasuredFlow, mRotorSpeed, mMotorSpeed, mMotorCtlSpeed, mMotorCtlCurrent, mPWMDtCycle); if (ok) { vData += mFlowSetPoint .value; vData += mMeasuredFlow .value; vData += mRotorSpeed .value; vData += mMotorSpeed .value; vData += mMotorCtlSpeed .value; vData += mMotorCtlCurrent.value; + vData += mPWMDtCycle .value; } break; } @@ -272,6 +274,14 @@ i++; } + p += 4; + j = 0; + while (i < p) { + vPWMDtCycle.bytes[j] = vMessage.data[i]; + j++; + i++; + } + return true; } Index: sources/gui/guiglobals.h =================================================================== diff -u -rfee7fabf49befb065c89248c19e15efc9ca194e4 -r188d7611230946fc5fde4e3e837a09202dd93eea --- sources/gui/guiglobals.h (.../guiglobals.h) (revision fee7fabf49befb065c89248c19e15efc9ca194e4) +++ sources/gui/guiglobals.h (.../guiglobals.h) (revision 188d7611230946fc5fde4e3e837a09202dd93eea) @@ -41,8 +41,17 @@ }; enum class GuiActionsIndx_Enum { - PowerOff_ShowHide = 0, - PowerOff_Response = 0, + PowerOff_ShowHide = 0, + PowerOff_Response = 0, + + BloodFlow_FlowSetPoint = 0, + BloodFlow_MeasuredFlow , + BloodFlow_RotorSpeed , + BloodFlow_MotorSpeed , + BloodFlow_MotorCtlSpeed , + BloodFlow_MotorCtlCurrent , + BloodFlow_PWMDtCycle , + }; enum class GuiActionsData_Enum /*: quint8 QML doesn't support*/ { Index: sources/gui/qml/pages/TreatmentStart.qml =================================================================== diff -u -r12f922a6c61b7014345a441e2836e12fd3b0d00e -r188d7611230946fc5fde4e3e837a09202dd93eea --- sources/gui/qml/pages/TreatmentStart.qml (.../TreatmentStart.qml) (revision 12f922a6c61b7014345a441e2836e12fd3b0d00e) +++ sources/gui/qml/pages/TreatmentStart.qml (.../TreatmentStart.qml) (revision 188d7611230946fc5fde4e3e837a09202dd93eea) @@ -94,6 +94,14 @@ color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle } + Text { + id: _F32_6 + text: qsTr("") + width: 250 + horizontalAlignment: Text.AlignRight + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + } } Connections { target: _GuiView Index: sources/utility/types.cpp =================================================================== diff -u -r5963f00ffd2c557d3ae06a5deea05032a3a3bd68 -r188d7611230946fc5fde4e3e837a09202dd93eea --- sources/utility/types.cpp (.../types.cpp) (revision 5963f00ffd2c557d3ae06a5deea05032a3a3bd68) +++ sources/utility/types.cpp (.../types.cpp) (revision 188d7611230946fc5fde4e3e837a09202dd93eea) @@ -18,11 +18,13 @@ // Project -using namespace types; +namespace types { bool floatCompare(float f1, float f2) { static constexpr auto epsilon = 1.0e-05f; if (qAbs(f1 - f2) <= epsilon) return true; return qAbs(f1 - f2) <= epsilon * qMax(qAbs(f1), qAbs(f2)); } + +} Index: sources/utility/types.h =================================================================== diff -u -rfee7fabf49befb065c89248c19e15efc9ca194e4 -r188d7611230946fc5fde4e3e837a09202dd93eea --- sources/utility/types.h (.../types.h) (revision fee7fabf49befb065c89248c19e15efc9ca194e4) +++ sources/utility/types.h (.../types.h) (revision 188d7611230946fc5fde4e3e837a09202dd93eea) @@ -13,8 +13,12 @@ */ #pragma once -namespace types { +// Qt +#include +// Project + +namespace types { /*! * \brief The F32 union * \details This is the union which will be used to extract the bytes of a float type value @@ -34,5 +38,16 @@ quint32 value = 0; quint8 bytes[sizeof(quint32)]; }; +/*! + * \brief The S32 union + * \details This is the union which will be used to extract the bytes of an signed int type value + * 4 bytes + */ +union S32 { + qint32 value = 0; + quint8 bytes[sizeof(qint32)]; +}; +extern bool floatCompare(float f1, float f2); + } Index: unittests/tst_canbus.cpp =================================================================== diff -u -r561055268da68e24fe91a1148b76bf1785dae14d -r188d7611230946fc5fde4e3e837a09202dd93eea --- unittests/tst_canbus.cpp (.../tst_canbus.cpp) (revision 561055268da68e24fe91a1148b76bf1785dae14d) +++ unittests/tst_canbus.cpp (.../tst_canbus.cpp) (revision 188d7611230946fc5fde4e3e837a09202dd93eea) @@ -71,8 +71,16 @@ }); connect(Can::_MessageDispatcher, &Can::MessageDispatcher::didActionReceive, [=](GuiActionType vAction , const QVariantList &vData ) { _emited = true; - QCOMPARE(vAction, _action); - QCOMPARE(vData , _data ); + QVERIFY(vAction == _action); + for (int i = 0; i < vData.length(); i++) { + if (! strcmp(vData[i].typeName(), "float")) { + float f1 = vData[i].toFloat(); + float f2 = _data[i].toFloat(); + QVERIFY(types::floatCompare(f1, f2)); + } else { + QVERIFY(vData[i] == _data[i]); + } + } }); } @@ -225,14 +233,15 @@ void tst_canbus::tst_FrameInterface_FrameReceived_LongFrame_BloodFlow() { _action = Gui::GuiActionType::BloodFlow; - _data = {500, 501.00, 100.00, 1000.00, -1001.25, 750.00}; + _data = { -400, -397.50f, -26.20f, -2000.00f, -2002.50f, 648.75f, 62.50f }; QCanBusFrame mFrame; mFrame.setFrameId(Can::Can_Id::eChlid_HD_Sync); QStringList mPayloadList { - "a5.05.00.18.f4.01.00.00", - "00.80.fa.43.00.00.c8.42", - "00.00.7a.44.00.50.7a.c4", - "00.80.3b.44.88.00.00.00", + "a5.05.00.1c.70.fe.ff.ff" , + "00.c0.c6.c3.9a.99.d1.c1" , + "00.00.fa.c4.00.50.fa.c4" , + "00.30.22.44.00.00.7a.42" , + "c4.00.00.00.00.00.00.00" , }; for ( QString payload : mPayloadList ) { mFrame.setPayload(QByteArray::fromHex(payload.remove(QLatin1Char('.')).toLatin1())); @@ -244,14 +253,14 @@ void tst_canbus::tst_FrameInterface_FrameReceived_LongFrame_BloodFlow_LessData() { _action = Gui::GuiActionType::BloodFlow; - _data = {500, 501.00, 100.00, 1000.00, -1001.25, 750.00}; + _data = { -400, -397.50f, -26.20f, -2000.00f, -2002.50f, 648.75f, 62.50f }; QCanBusFrame mFrame; mFrame.setFrameId(Can::Can_Id::eChlid_HD_Sync); QStringList mPayloadList { - "a5.05.00.15.f4.01.00.00", - "00.80.fa.43.00.00.c8.42", - "00.00.7a.44.00.50.7a.c4", - "00.19.00.00.00.00.00.00", + "a5.05.00.1c.70.fe.ff.ff" , + "00.c0.c6.c3.9a.99.d1.c1" , + "00.00.fa.c4.00.50.fa.c4" , + "00.30.22.44.00.00.7a.42" , }; for ( QString payload : mPayloadList ) { mFrame.setPayload(QByteArray::fromHex(payload.remove(QLatin1Char('.')).toLatin1()));