mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-01 13:36:48 +08:00
committed by
Mathew Sutcliffe
parent
229d7c6068
commit
978f3c88e5
@@ -7,130 +7,143 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation
|
||||
{
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
/**
|
||||
* Valid values?
|
||||
*/
|
||||
bool CTransponder::validValues() const
|
||||
{
|
||||
if (this->isDefaultValue()) return true; // special case
|
||||
if (this->m_transponderCode < 0 || this->m_transponderCode > 7777) return false;
|
||||
/*
|
||||
* Valid values?
|
||||
*/
|
||||
bool CTransponder::validValues() const
|
||||
{
|
||||
if (this->isDefaultValue()) return true; // special case
|
||||
if (this->m_transponderCode < 0 || this->m_transponderCode > 7777) return false;
|
||||
|
||||
// check each digit
|
||||
qint32 tc = this->m_transponderCode;
|
||||
qint32 d;
|
||||
while (tc > 7) {
|
||||
d = (tc % 10);
|
||||
if (d > 7) return false;
|
||||
tc /= 10;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// check each digit
|
||||
qint32 tc = this->m_transponderCode;
|
||||
qint32 d;
|
||||
while (tc > 7)
|
||||
{
|
||||
d = (tc % 10);
|
||||
if (d > 7) return false;
|
||||
tc /= 10;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate
|
||||
*/
|
||||
bool CTransponder::validate(bool strict) const
|
||||
{
|
||||
if (this->isDefaultValue()) return true;
|
||||
bool valid = this->validValues();
|
||||
if (!strict) return valid;
|
||||
Q_ASSERT_X(valid, "CTransponder::validate", "illegal values");
|
||||
if (!valid) throw std::range_error("Illegal values in CTransponder::validate");
|
||||
return true;
|
||||
}
|
||||
/*
|
||||
* Validate
|
||||
*/
|
||||
bool CTransponder::validate(bool strict) const
|
||||
{
|
||||
if (this->isDefaultValue()) return true;
|
||||
bool valid = this->validValues();
|
||||
if (!strict) return valid;
|
||||
Q_ASSERT_X(valid, "CTransponder::validate", "illegal values");
|
||||
if (!valid) throw std::range_error("Illegal values in CTransponder::validate");
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* String representation
|
||||
*/
|
||||
QString CTransponder::convertToQString(bool /* i18n */) const
|
||||
{
|
||||
QString s = this->getName();
|
||||
s = s.append(" ").append(this->getTransponderCodeFormatted()).append(" ").append(this->getModeAsString());
|
||||
return s;
|
||||
}
|
||||
/*
|
||||
* String representation
|
||||
*/
|
||||
QString CTransponder::convertToQString(bool /* i18n */) const
|
||||
{
|
||||
QString s = this->getName();
|
||||
s = s.append(" ").append(this->getTransponderCodeFormatted()).append(" ").append(this->getModeAsString());
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mode as readable string
|
||||
*/
|
||||
QString CTransponder::getModeAsString() const
|
||||
{
|
||||
QString m;
|
||||
switch (this->m_transponderMode) {
|
||||
case StateIdent:
|
||||
m = "Ident";
|
||||
break;
|
||||
case StateStandby:
|
||||
m = "Standby";
|
||||
break;
|
||||
case ModeC:
|
||||
m = "Mode C";
|
||||
break;
|
||||
case ModeMil1:
|
||||
m = "Mil.Mode 1";
|
||||
break;
|
||||
case ModeMil2:
|
||||
m = "Mil.Mode 2";
|
||||
break;
|
||||
case ModeMil3:
|
||||
m = "Mil.Mode 3";
|
||||
break;
|
||||
case ModeMil4:
|
||||
m = "Mil.Mode 4";
|
||||
break;
|
||||
case ModeMil5:
|
||||
m = "Mil.Mode 5";
|
||||
break;
|
||||
default:
|
||||
throw std::range_error("Illegal Transponder Mode");
|
||||
}
|
||||
return m;
|
||||
}
|
||||
/*
|
||||
* Mode as readable string
|
||||
*/
|
||||
QString CTransponder::getModeAsString() const
|
||||
{
|
||||
QString m;
|
||||
switch (this->m_transponderMode)
|
||||
{
|
||||
case StateIdent:
|
||||
m = "Ident";
|
||||
break;
|
||||
case StateStandby:
|
||||
m = "Standby";
|
||||
break;
|
||||
case ModeC:
|
||||
m = "Mode C";
|
||||
break;
|
||||
case ModeS:
|
||||
m = "Mode S";
|
||||
break;
|
||||
case ModeMil1:
|
||||
m = "Mil.Mode 1";
|
||||
break;
|
||||
case ModeMil2:
|
||||
m = "Mil.Mode 2";
|
||||
break;
|
||||
case ModeMil3:
|
||||
m = "Mil.Mode 3";
|
||||
break;
|
||||
case ModeMil4:
|
||||
m = "Mil.Mode 4";
|
||||
break;
|
||||
case ModeMil5:
|
||||
m = "Mil.Mode 5";
|
||||
break;
|
||||
default:
|
||||
throw std::range_error("Illegal Transponder Mode");
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formatted transponder code
|
||||
*/
|
||||
QString CTransponder::getTransponderCodeFormatted() const
|
||||
{
|
||||
QString f("0000");
|
||||
f = f.append(QString::number(this->m_transponderCode));
|
||||
return f.right(4);
|
||||
}
|
||||
/*
|
||||
* Formatted transponder code
|
||||
*/
|
||||
QString CTransponder::getTransponderCodeFormatted() const
|
||||
{
|
||||
QString f("0000");
|
||||
f = f.append(QString::number(this->m_transponderCode));
|
||||
return f.right(4);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Stream to DBus <<
|
||||
* \param argument
|
||||
*/
|
||||
void CTransponder::marshallToDbus(QDBusArgument &argument) const
|
||||
{
|
||||
this->CAvionicsBase::marshallToDbus(argument);
|
||||
argument << this->m_transponderCode;
|
||||
argument << static_cast<qint32>(this->m_transponderMode);
|
||||
}
|
||||
/*
|
||||
* Formatted transponder code + mode
|
||||
*/
|
||||
QString CTransponder::getTransponderCodeAndModeFormatted() const
|
||||
{
|
||||
QString s = this->getTransponderCodeFormatted();
|
||||
s.append(' ').append(this->getModeAsString());
|
||||
return s;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Stream from DBus >>
|
||||
* \param argument
|
||||
*/
|
||||
void CTransponder::unmarshallFromDbus(const QDBusArgument &argument)
|
||||
{
|
||||
this->CAvionicsBase::unmarshallFromDbus(argument);
|
||||
qint32 tm;
|
||||
argument >> this->m_transponderCode;
|
||||
argument >> tm;
|
||||
this->m_transponderMode = static_cast<TransponderMode>(tm);
|
||||
}
|
||||
/*
|
||||
* Stream to DBus <<
|
||||
*/
|
||||
void CTransponder::marshallToDbus(QDBusArgument &argument) const
|
||||
{
|
||||
this->CAvionicsBase::marshallToDbus(argument);
|
||||
argument << this->m_transponderCode;
|
||||
argument << static_cast<qint32>(this->m_transponderMode);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Register metadata of unit and quantity
|
||||
*/
|
||||
void CTransponder::registerMetadata()
|
||||
{
|
||||
qRegisterMetaType<CTransponder>(typeid(CTransponder).name());
|
||||
qDBusRegisterMetaType<CTransponder>();
|
||||
}
|
||||
/*!
|
||||
* Stream from DBus >>
|
||||
*/
|
||||
void CTransponder::unmarshallFromDbus(const QDBusArgument &argument)
|
||||
{
|
||||
this->CAvionicsBase::unmarshallFromDbus(argument);
|
||||
qint32 tm;
|
||||
argument >> this->m_transponderCode;
|
||||
argument >> tm;
|
||||
this->m_transponderMode = static_cast<TransponderMode>(tm);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
/*
|
||||
* Register metadata of unit and quantity
|
||||
*/
|
||||
void CTransponder::registerMetadata()
|
||||
{
|
||||
qRegisterMetaType<CTransponder>();
|
||||
qDBusRegisterMetaType<CTransponder>();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user