199 lines
5.2 KiB
C++
Executable File
199 lines
5.2 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* Class SidcBuilder
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*/
|
|
#pragma once
|
|
|
|
// Own
|
|
#include "sidc_builder_base.h"
|
|
#include "sidc_codec.h"
|
|
#include "symbol_dictionary.h"
|
|
|
|
// Qt
|
|
#include <QString>
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
namespace AdvancedSymbology
|
|
{
|
|
|
|
class ADVANCED_SYMBOLOGY_EXPORT SidcBuilder : SidcBuilderBase
|
|
{
|
|
public:
|
|
|
|
explicit SidcBuilder(AdvancedSymbology::SymbolDictionary *symbolDictionary = nullptr);
|
|
|
|
bool setSidc(const QString &sidc)
|
|
{
|
|
if (SidcCodec::isEncoded(sidc))
|
|
{
|
|
switch (SidcCodec::decodeSymbologyType(sidc))
|
|
{
|
|
case SymbologyType::APP6B : return initFromApp6B(sidc);
|
|
case SymbologyType::APP6D : return initFromApp6D(sidc);
|
|
case SymbologyType::MIL2525C : return false; // return initFromMil2525C(sidc);
|
|
case SymbologyType::MIL2525D : return initFromMil2525D(sidc);
|
|
case SymbologyType::None : return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (m_symbolDictionary)
|
|
{
|
|
switch (m_symbolDictionary->symbologyType())
|
|
{
|
|
case SymbologyType::APP6B : return initFromApp6B(SidcCodec::encodeComplete(SymbologyType::APP6B, sidc));
|
|
case SymbologyType::APP6D : return initFromApp6D(SidcCodec::encodeComplete(SymbologyType::APP6D, sidc));
|
|
case SymbologyType::MIL2525C : return false; // return initFromMil2525C(sidc);
|
|
case SymbologyType::MIL2525D : return initFromMil2525D(SidcCodec::encodeComplete(SymbologyType::MIL2525D, sidc));
|
|
case SymbologyType::None : return false;
|
|
}
|
|
}
|
|
return initFromMil2525D(SidcCodec::encodeComplete(SymbologyType::MIL2525D, sidc));
|
|
}
|
|
return false;
|
|
} // setSidc
|
|
|
|
bool initFromSymbologyType(SymbologyType symbologyType, const QString &sidc);
|
|
bool initFromSymbologyTypeBaseSymbolCode(SymbologyType symbologyType, const QString &baseSymbolCode);
|
|
|
|
bool initFromMil2525D(const QString &sidcMil2525D);
|
|
bool initFromMil2525DBaseSymbolCode(const QString &sidcMil2525D_baseSymbolCode);
|
|
|
|
bool initFromApp6B(const QString &sidcApp6B);
|
|
bool initFromApp6BBaseSymbolCode(const QString &sidcApp6B_baseSymbolCode);
|
|
|
|
bool initFromApp6D(const QString &sidcAPP6D);
|
|
bool initFromApp6DBaseSymbolCode(const QString &sidcAPP6D_baseSymbolCode);
|
|
|
|
~SidcBuilder() = default;
|
|
|
|
QString toSidc() const;
|
|
QString toRawSidc() const;
|
|
|
|
|
|
// !!! Attention: digit count starts with 1, not with 0!!!
|
|
|
|
//
|
|
// Set A, digit 1,2
|
|
//
|
|
// Version
|
|
|
|
|
|
//
|
|
// Set A, digit 3,4
|
|
//
|
|
// StandardIdentity
|
|
SidcDefinitions::StandardIdentity standardIdentity() const; // 1st and 2nd
|
|
void setStandardIdentity(const SidcDefinitions::StandardIdentity &standardIdentity);
|
|
|
|
SidcDefinitions::Context context() const;
|
|
void setContext(SidcDefinitions::Context context);
|
|
|
|
SidcDefinitions::Identity identity() const;
|
|
void setIdentity(SidcDefinitions::Identity identity);
|
|
|
|
|
|
bool isIdentityAssumed() const;
|
|
|
|
//
|
|
// Set A, digit 5,6
|
|
//
|
|
// SymbolSet
|
|
SidcDefinitions::SymbolSet symbolSet() const;
|
|
void setSymbolSet(const SidcDefinitions::SymbolSet &symbolSet);
|
|
|
|
//
|
|
// Set A, digit 7
|
|
//
|
|
// Status
|
|
SidcDefinitions::Status status() const;
|
|
void setStatus(const SidcDefinitions::Status &status);
|
|
|
|
//
|
|
// Set A, digit 8
|
|
//
|
|
// HQTFDummy
|
|
SidcDefinitions::HQTFDummy hqTfFd() const;
|
|
uint hqTfFd_UInt() const;
|
|
void setHqTfFd(const SidcDefinitions::HQTFDummy &hqTfFd);
|
|
|
|
bool headquarters() const;
|
|
bool taskForce() const;
|
|
bool feintDummy() const;
|
|
|
|
|
|
//
|
|
// Set A, digit 9, 10
|
|
//
|
|
SidcDefinitions::AmplifierGroup amplifierGroup() const; // digit 9
|
|
void setAmplifierGroup(const SidcDefinitions::AmplifierGroup &lifierGroup);
|
|
|
|
unsigned int amplifier2ndDigit() const; // digit 10
|
|
void setAmplifier2ndDigit(unsigned int amplifierSecondDigit);
|
|
|
|
//
|
|
// Set B, digit 11 - 16
|
|
//
|
|
QString symbolEntityCode() const;
|
|
void setSymbolEntityCode(const QString &);
|
|
|
|
|
|
unsigned int sectorModifier1Digit(); // Set B, digit 17 - 18
|
|
unsigned int sectorModifier2Digit(); // set B, digit 19 - 20
|
|
|
|
void setSectorModifier1Digit(unsigned int); // Set B, digit 17 - 18
|
|
void setSectorModifier2Digit(unsigned int); // set B, digit 19 - 20
|
|
|
|
private:
|
|
void init();
|
|
void initAmplifier();
|
|
|
|
QString m_first10_mil2525D;
|
|
QString m_second10_mil2525D;
|
|
|
|
QString m_app6bRawSidc;
|
|
|
|
//
|
|
// SET A :
|
|
//
|
|
|
|
|
|
// Amplifier (Echelon/Mobility/TowedArray)
|
|
SidcDefinitions::AmplifierGroup m_amplifierGroup;
|
|
SidcDefinitions::EchelonBrigadeAndBelow m_e_BrigadeAndBelow;
|
|
SidcDefinitions::EchelonDivisionAndAbove m_e_DivisionAndAbove;
|
|
SidcDefinitions::MobilityOnLand m_e_MobilityOnLand;
|
|
SidcDefinitions::MobilityOnSnow m_e_MobilityOnSnow;
|
|
SidcDefinitions::MobilityOnWater m_e_MobilityOnWater;
|
|
SidcDefinitions::NavalTowedArray m_e_NavalTowedArray;
|
|
|
|
|
|
//
|
|
// : SET A
|
|
//
|
|
|
|
|
|
//
|
|
// SET B :
|
|
//
|
|
|
|
// not implemented yes
|
|
|
|
//
|
|
// : SET B
|
|
//
|
|
|
|
|
|
static qint32 _smallest;
|
|
static qint32 _specialPartA;
|
|
static qint32 _invalidPartB;
|
|
static qint32 _retiredPartB;
|
|
};
|
|
|
|
|
|
} // namespace AdvancedSymbology
|