Index: sources/model/hd/alarm/MAlarmTriggered.cpp =================================================================== diff -u -rf1e100d1368bfd132d88e09680f833dc53b4d0b0 -re8ffaa51e4eb9b55efebebc13899f79d9a5ca946 --- sources/model/hd/alarm/MAlarmTriggered.cpp (.../MAlarmTriggered.cpp) (revision f1e100d1368bfd132d88e09680f833dc53b4d0b0) +++ sources/model/hd/alarm/MAlarmTriggered.cpp (.../MAlarmTriggered.cpp) (revision e8ffaa51e4eb9b55efebebc13899f79d9a5ca946) @@ -8,25 +8,147 @@ * \file MAlarmTriggered.cpp * \author (last) Behrouz NematiPour * \date (last) 16-Oct-2020 - * \author (original) Behrouz NemaiPour + * \author (original) Behrouz NematiPour * \date (original) 02-Jul-2020 * */ #include "MAlarmTriggered.h" +#include "GuiGlobals.h" using namespace Model; QVariantList MAlarmTriggered::parameters() const { - return { - _data.mAlarmID.value - }; + Gui::GuiAlarmDataTypes fieldType; + fieldType = static_cast(_data.mFieldDescriptor1.value); + quint32 zero = 0; + QVariantList params = { _data.mAlarmID.value }; + switch (fieldType) { + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_NONE : + params += {zero, zero, zero, zero}; + goto lOut; + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_U32 : + params += {_data.mFieldDescriptor1.value, _data.mDataFieldU1.value}; + break; + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_S32 : + params += {_data.mFieldDescriptor1.value, _data.mDataFieldS1.value}; + break; + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_F32 : + params += {_data.mFieldDescriptor1.value, _data.mDataFieldF1.value}; + break; + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_BOOL : + params += {_data.mFieldDescriptor1.value, _data.mDataFieldB1.value}; + break; + default: + params += {zero, zero, zero, zero}; + goto lOut; + } + + fieldType = static_cast(_data.mFieldDescriptor2.value); + switch (fieldType) { + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_NONE : + params += {zero, zero}; + break; + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_U32 : + params += {_data.mFieldDescriptor1.value, _data.mDataFieldU2.value}; + break; + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_S32 : + params += {_data.mFieldDescriptor1.value, _data.mDataFieldS2.value}; + break; + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_F32 : + params += {_data.mFieldDescriptor1.value, _data.mDataFieldF2.value}; + break; + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_BOOL : + params += {_data.mFieldDescriptor1.value, _data.mDataFieldB2.value}; + break; + default: + params += {zero, zero}; + break; + } + +lOut: + return params; } bool MAlarmTriggered::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position - if (GetValue(vByteArray, index, _data.mAlarmID)) - return true ; + _data.mFieldDescriptor1 .value = 0; + _data.mDataFieldU1 .value = 0; + _data.mDataFieldS1 .value = 0; + _data.mDataFieldF1 .value = 0; + _data.mDataFieldB1 .value = 0; + _data.mFieldDescriptor2 .value = 0; + _data.mDataFieldU2 .value = 0; + _data.mDataFieldS2 .value = 0; + _data.mDataFieldF2 .value = 0; + _data.mDataFieldB2 .value = 0; + if (GetValue(vByteArray, index, _data.mAlarmID )) + if (GetValue(vByteArray, index, _data.mFieldDescriptor1 )) + { + Gui::GuiAlarmDataTypes field1Type = static_cast(_data.mFieldDescriptor1.value); + switch (field1Type) { + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_NONE : + return true; + + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_U32 : + if (GetValue(vByteArray, index, _data.mDataFieldU1)) + break; + else { if(vIndex) *vIndex = index; return false; } + + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_S32 : + if (GetValue(vByteArray, index, _data.mDataFieldS1)) + break; + else { if(vIndex) *vIndex = index; return false; } + + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_F32 : + if (GetValue(vByteArray, index, _data.mDataFieldF1)) + break; + else { if(vIndex) *vIndex = index; return false; } + + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_BOOL : + if (GetValue(vByteArray, index, _data.mDataFieldB1)) + break; + else { if(vIndex) *vIndex = index; return false; } + + default: + return true; + } + + if (GetValue(vByteArray, index, _data.mFieldDescriptor2 )) + { + Gui::GuiAlarmDataTypes field1Type = static_cast(_data.mFieldDescriptor2.value); + switch (field1Type) { + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_NONE : + return true; + + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_U32 : + if (GetValue(vByteArray, index, _data.mDataFieldU2)) + break; + else { if(vIndex) *vIndex = index; return false; } + + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_S32 : + if (GetValue(vByteArray, index, _data.mDataFieldS2)) + break; + else { if(vIndex) *vIndex = index; return false; } + + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_F32 : + if (GetValue(vByteArray, index, _data.mDataFieldF2)) + break; + else { if(vIndex) *vIndex = index; return false; } + + case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_BOOL : + if (GetValue(vByteArray, index, _data.mDataFieldB2)) + break; + else { if(vIndex) *vIndex = index; return false; } + + default: + return true; + } + return true; + } + else { if(vIndex) *vIndex = index; return false; } + } else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } } /*! @@ -36,6 +158,16 @@ */ MAlarmTriggered::Data MAlarmTriggered::data() const { Data data; - data.mAlarmID = _data.mAlarmID.value; + data.mAlarmID = _data.mAlarmID .value; + data.mFieldDescriptor1 = _data.mFieldDescriptor1 .value; + data.mDataFieldU1 = _data.mDataFieldU1 .value; + data.mDataFieldS1 = _data.mDataFieldS1 .value; + data.mDataFieldF1 = _data.mDataFieldF1 .value; + data.mDataFieldB1 = _data.mDataFieldB1 .value ? true : false; + data.mFieldDescriptor2 = _data.mFieldDescriptor2 .value; + data.mDataFieldU2 = _data.mDataFieldU2 .value; + data.mDataFieldS2 = _data.mDataFieldS2 .value; + data.mDataFieldF2 = _data.mDataFieldF2 .value; + data.mDataFieldB2 = _data.mDataFieldB2 .value ? true : false; return data; }