/*! * * Copyright (c) 2021-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 MAbstractDynamic.cpp * \author (last) Behrouz NematiPour * \date (last) 28-Mar-2022 * \author (original) Behrouz NematiPour * \date (original) 07-Oct-2021 * */ #include "MAbstractDynamic.h" // Qt // Project #include "GuiGlobalsAutoGen.h" using namespace Model; QVariantList MAbstractDynamic::parameters() const { Gui::GuiAlarmDataTypes fieldType; fieldType = static_cast(_data.mFieldDescriptor1.value); quint32 zero = 0; QVariantList params = { _data.mID.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.mFieldDescriptor2.value, _data.mDataFieldU2.value}; break; case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_S32 : params += {_data.mFieldDescriptor2.value, _data.mDataFieldS2.value}; break; case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_F32 : params += {_data.mFieldDescriptor2.value, _data.mDataFieldF2.value}; break; case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_BOOL : params += {_data.mFieldDescriptor2.value, _data.mDataFieldB2.value}; break; default: params += {zero, zero}; break; } lOut: return params; } bool MAbstractDynamic::fromByteArray(const QByteArray &vByteArray, int *vIndex) { bool ok = true; int index = 0; // message data start position _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.mID )) if (GetValue(vByteArray, index, _data.mFieldDescriptor1 )) { Gui::GuiAlarmDataTypes field1Type = static_cast(_data.mFieldDescriptor1.value); switch (field1Type) { case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_NONE : ok = true ; goto lOut; case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_U32 : if (GetValue(vByteArray, index, _data.mDataFieldU1)) break; else { ok = false; goto lOut; } case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_S32 : if (GetValue(vByteArray, index, _data.mDataFieldS1)) break; else { ok = false; goto lOut; } case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_F32 : if (GetValue(vByteArray, index, _data.mDataFieldF1)) break; else { ok = false; goto lOut; } case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_BOOL : if (GetValue(vByteArray, index, _data.mDataFieldB1)) break; else { ok = false; goto lOut; } default: return true; } if (GetValue(vByteArray, index, _data.mFieldDescriptor2 )) { Gui::GuiAlarmDataTypes field2Type = static_cast(_data.mFieldDescriptor2.value); switch (field2Type) { case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_NONE : ok = true ; goto lOut; case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_U32 : if (GetValue(vByteArray, index, _data.mDataFieldU2)) break; else { ok = false; goto lOut; } case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_S32 : if (GetValue(vByteArray, index, _data.mDataFieldS2)) break; else { ok = false; goto lOut; } case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_F32 : if (GetValue(vByteArray, index, _data.mDataFieldF2)) break; else { ok = false; goto lOut; } case Gui::GuiAlarmDataTypes::ALARM_DATA_TYPE_BOOL : if (GetValue(vByteArray, index, _data.mDataFieldB2)) break; else { ok = false; goto lOut; } default: ok = true; goto lOut; } ok = true; goto lOut; } else { ok = false; goto lOut; } } else { ok = false; goto lOut; } else { ok = false; goto lOut; } lOut: if ( vIndex ) *vIndex = index; return ok; }