Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+205
@@ -0,0 +1,205 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* HMI Plugin for Observer Controller - SelfTest Dialog
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2018-01-17
|
||||
*/
|
||||
|
||||
#include "osc_selftest.h"
|
||||
#include "ui_osc_selftest.h"
|
||||
|
||||
#include <QTimer>
|
||||
#include <QStorageInfo>
|
||||
|
||||
#include <LtsUtilsSettings/settings.h>
|
||||
|
||||
namespace OcSituationClient
|
||||
{
|
||||
|
||||
SelfTest::SelfTest(LtsSession::LtsSession *session, QWidget *parent)
|
||||
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly)
|
||||
, m_timer(nullptr)
|
||||
, m_lastStatesTime(0)
|
||||
, m_session(session)
|
||||
, m_tabocDtc(nullptr)
|
||||
, m_escDtc(nullptr)
|
||||
, m_ui(new Ui::SelfTest)
|
||||
, m_logger(getLogger("SelfTestDialog"))
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
if ( m_session->getDtc<TrainingAreaBaseOC::DataInterface>(m_tabocDtc))
|
||||
{
|
||||
WARNING_LOG(m_logger) << "load tab settings";
|
||||
connect(m_tabocDtc.get(), &TrainingAreaBaseOC::Interface::Dtc::technicalStateSfmChanged,
|
||||
this, &SelfTest::onSfmStatusChanged);
|
||||
|
||||
onSfmStatusChanged(m_tabocDtc->technicalStateSfm(1), DataModification());
|
||||
}
|
||||
|
||||
LtsUtils::ProjectSettings *ps = LtsUtils::ProjectSettings::getInstance();
|
||||
const bool enableEffectShowManagement = ps->value(QStringLiteral("esm"), QStringLiteral("enableEffectShowManagement")).toBool();
|
||||
if (!enableEffectShowManagement)
|
||||
{
|
||||
m_ui->lblEsc->hide();
|
||||
m_ui->leEsc->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_timer = new QTimer(this);
|
||||
if ( m_escDtc.get() != nullptr) {
|
||||
connect(m_escDtc.get(), &EffectShowClient::Interface::Dtc::operatingConditionEntityChanged, this, &SelfTest::onEscOperationConditionChanged);
|
||||
onEscOperationConditionChanged(m_escDtc->operatingConditionEntity(), DataModification());
|
||||
connect(m_timer, &QTimer::timeout, this, &SelfTest::onCheckLastCondition);
|
||||
m_timer->start(3000);
|
||||
}
|
||||
}
|
||||
|
||||
setOnlineHelpFilename(QStringLiteral("OC-Self_Test"));
|
||||
|
||||
} // end of ctor()
|
||||
|
||||
void SelfTest::onCheckLastCondition()
|
||||
{
|
||||
if ((m_session->partitionTime() - 10*1000) > m_lastStatesTime )
|
||||
{
|
||||
m_ui->leEsc->setText(tr("No Effect Show Connected"));
|
||||
}
|
||||
}
|
||||
|
||||
SelfTest::~SelfTest()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void SelfTest::retranslate()
|
||||
{
|
||||
translate(m_ui, tr("Self Test") );
|
||||
}
|
||||
|
||||
QString SelfTest::getTechStatError(u_char errorID) const
|
||||
{
|
||||
switch (errorID)
|
||||
{
|
||||
case 1:
|
||||
return tr("Error ROM");
|
||||
case 2:
|
||||
return tr("Error RAM");
|
||||
case 3:
|
||||
return tr("Error SCC1");
|
||||
case 4:
|
||||
return tr("Error SCC2");
|
||||
case 5:
|
||||
return tr("Error SCP");
|
||||
case 10:
|
||||
return tr("Error EEPROM");
|
||||
case 11:
|
||||
return tr("Error A/D-Converter");
|
||||
case 12:
|
||||
return tr("Error CAN");
|
||||
case 13:
|
||||
return tr("Error DUART A");
|
||||
case 14:
|
||||
return tr("Error DUART B");
|
||||
case 20:
|
||||
return tr("Error GPS");
|
||||
case 21:
|
||||
return tr("Error PUMA/T");
|
||||
case 30:
|
||||
return tr("Error Equipment Configuration");
|
||||
case 31:
|
||||
return tr("Error Exercise Configuration");
|
||||
case 40:
|
||||
return tr("Error Login");
|
||||
case 41:
|
||||
return tr("Error TETRA Registration");
|
||||
case 42:
|
||||
return tr("Error Transparent Channel O/C");
|
||||
case 43:
|
||||
return tr("Error Transparent Channel DMF");
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return tr("Unknown Error (%1)").arg(errorID);
|
||||
}
|
||||
|
||||
void SelfTest::onStatusHDD()
|
||||
{
|
||||
QStorageInfo storage(QCoreApplication::applicationFilePath());
|
||||
if (storage.isValid() && storage.isReady())
|
||||
{
|
||||
quint64 freeBytesAvailable = storage.bytesAvailable();
|
||||
quint64 bytesAvailable = storage.bytesTotal();
|
||||
|
||||
double percent = bytesAvailable ? 100.0 * freeBytesAvailable / bytesAvailable : 0;
|
||||
|
||||
m_ui->leDisk->setText(tr("%1% available (%2)").arg(QString::number(percent, 'f', 2), readableSize(freeBytesAvailable)));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui->leDisk->setText(tr("Error reading available disk space"));
|
||||
}
|
||||
}
|
||||
|
||||
void SelfTest::onSfmStatusChanged(const TrainingAreaBaseOC::TechnicalStateSfm &data, DataModification modType)
|
||||
{
|
||||
|
||||
Q_UNUSED(modType)
|
||||
m_ui->leRadio->setText(data.radioAvailable() ? tr("Available") : tr("Not Available"));
|
||||
m_ui->leLicense->setText(data.licensed() ? tr("Yes") : tr("No"));
|
||||
m_ui->leSfm->setText(data.sfmConnected() ? tr("Connected") : tr("Not Connected"));
|
||||
m_ui->leSfmMani->setText(data.manipulationSfm() ? tr("Yes") : tr("No"));
|
||||
m_ui->leEquipmentMani->setText(data.manipulationEquipment() ? tr("Yes") : tr("No"));
|
||||
m_ui->lblErrorCodes->setText(data.errorCode() > 0 ? getTechStatError(data.errorCode()) : QLatin1String(""));
|
||||
onStatusHDD();
|
||||
|
||||
}
|
||||
|
||||
void SelfTest::onEscOperationConditionChanged(const EffectShowClient::OperatingConditionEntity &data, DataModification modType)
|
||||
{
|
||||
Q_UNUSED(modType)
|
||||
|
||||
QString feature = tr("Effect Show Connected: ");
|
||||
switch (data.vehicleFeature().underlying())
|
||||
{
|
||||
case EffectShowManagement::Feature_e::Smoke:
|
||||
feature += tr("Smoke");
|
||||
break;
|
||||
case EffectShowManagement::Feature_e::Explosion24:
|
||||
feature += tr("Explosion (24)");
|
||||
break;
|
||||
case EffectShowManagement::Feature_e::Explosion48:
|
||||
feature += tr("Explosion (48)");
|
||||
break;
|
||||
case EffectShowManagement::Feature_e::NotSpecified:
|
||||
feature.clear();
|
||||
break;
|
||||
}
|
||||
|
||||
if (feature.isEmpty())
|
||||
m_ui->leEsc->setText(tr("No Effect Show Connected"));
|
||||
else
|
||||
m_ui->leEsc->setText(feature);
|
||||
|
||||
m_lastStatesTime = m_session->partitionTime();
|
||||
}
|
||||
|
||||
|
||||
QString SelfTest::readableSize(quint64 bytes) const
|
||||
{
|
||||
if (bytes > TB)
|
||||
return tr("%1 TB").arg((double) bytes / TB, 0, 'f', 2);
|
||||
else if (bytes > GB)
|
||||
return tr("%1 GB").arg((double) bytes / GB, 0, 'f', 2);
|
||||
else if (bytes > MB)
|
||||
return tr("%1 MB").arg((double) bytes / MB, 0, 'f', 2);
|
||||
else if (bytes > KB)
|
||||
return tr("%1 KB").arg((double) bytes / KB, 0, 'f', 2);
|
||||
else
|
||||
return tr("%1 Bytes").arg(bytes);
|
||||
}
|
||||
|
||||
|
||||
} // namespace OcSituationClient
|
||||
Reference in new issue
Block a user