/*! * * 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. * * \file MAlarmTriggered.cpp * \author (last) Behrouz NematiPour * \date (last) 16-Oct-2020 * \author (original) Behrouz NematiPour * \date (original) 02-Jul-2020 * */ #include "MAlarmTriggered.h" // Qt // Project #include "GuiGlobals.h" #include "MAlarmStatusData.h" using namespace Model; QVariantList MAlarmTriggered::parameters() const { 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 _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; } } /*! * \brief MAlarmTriggered::data * \details Provides model's Data from the received messages data values * \return Data */ MAlarmTriggered::Data MAlarmTriggered::data() const { Data data; 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; } QString MAlarmTriggeredReq::toString() { return toString({}); } QString MAlarmTriggeredReq::toString(const QVariantList &vParameters) { QString alarmText = ""; if (vParameters.count()) { bool ok; GuiAlarmID alarmID = static_cast(vParameters[0].toInt(&ok)); alarmText = Model::MAlarmStatus::toText(alarmID); } return MModel::toString("AlarmTriggered", alarmText); } Can::Can_Id MAlarmTriggeredReq::canid() { return Can::Can_Id::eChlid_UI_Sync; }