11using namespace swift::config;
13using namespace swift::misc::aviation;
14using namespace swift::misc::network;
16namespace swift::core::fsd
23 static QStringList s_invalidAtcRatings;
24 static QStringList s_invalidPilotRatings;
25 static QStringList s_invalidSimType;
26 static QStringList s_invalidFacilityType;
27 static QStringList s_invalidQueryType;
30 void logUnknownType(
const QString &message)
35 const QByteArray msg = message.
toLatin1();
39 CLogMessage(
CLogCategories::fsd()).info(u
"%1. Please report this to the DEVELOPERS!") << message;
100 if (!Private::s_invalidAtcRatings.contains(str))
102 Private::s_invalidAtcRatings.push_back(str);
103 const QString msg = QStringLiteral(
"FSD unknown ATC rating '%1'").arg(str);
104 Private::logUnknownType(msg);
147 if (!Private::s_invalidPilotRatings.contains(str))
149 Private::s_invalidPilotRatings.push_back(str);
150 const QString msg = QStringLiteral(
"FSD Unknown Pilot rating '%1'").arg(str);
151 Private::logUnknownType(msg);
157 QString toQString(
const SimType &value)
193 SimType fromQString(
const QString &str)
219 else if (str ==
"10")
221 else if (str ==
"11")
223 else if (str ==
"12")
225 else if (str ==
"13")
227 else if (str ==
"14")
229 else if (str ==
"16")
231 else if (str ==
"25")
234 else if (str ==
"30")
238 if (!Private::s_invalidSimType.contains(str))
240 Private::s_invalidSimType.push_back(str);
241 const QString msg = QStringLiteral(
"FSD unknown SimType '%1'").arg(str);
242 Private::logUnknownType(msg);
248 QString toQString(
const CFacilityType &value)
267 CFacilityType fromQString(
const QString &str)
287 if (!Private::s_invalidFacilityType.contains(str))
289 Private::s_invalidFacilityType.push_back(str);
290 const QString msg = QStringLiteral(
"FSD unknown CFacilityType '%1'");
291 Private::logUnknownType(msg);
317 return "Unknown query type";
369 if (!Private::s_invalidQueryType.contains(str))
371 Private::s_invalidQueryType.push_back(str);
372 const QString msg = QStringLiteral(
"FSD unknown ClientQueryType '%1'").arg(str);
373 Private::logUnknownType(msg);
397 if (str == QLatin1String(
"I"))
399 else if (str == QLatin1String(
"V"))
401 else if (str == QLatin1String(
"S"))
403 else if (str == QLatin1String(
"D"))
415 case CTransponder::ModeMil1:
416 case CTransponder::ModeMil2:
417 case CTransponder::ModeMil3:
418 case CTransponder::ModeMil4:
420 case CTransponder::ModeA:
421 case CTransponder::ModeC:
422 case CTransponder::ModeS:
return QStringLiteral(
"N");
427 return QStringLiteral(
"S");
436 return CTransponder::ModeC;
467 if (str ==
"ATCINFO")
469 else if (str ==
"SECPOS")
471 else if (str ==
"MODELDESC")
473 else if (str ==
"ONGOINGCOORD")
475 else if (str ==
"INTERIMPOS")
477 else if (str ==
"FASTPOS")
479 else if (str ==
"VISUPDATE")
481 else if (str ==
"STEALTH")
483 else if (str ==
"ACCONFIG")
485 else if (str ==
"ICAOEQ")
495 return AtisLineType::VoiceRoom;
497 return AtisLineType::ZuluLogoff;
499 return AtisLineType::TextMessage;
501 return AtisLineType::LineCount;
503 return AtisLineType::Unknown;
static bool isLocalDeveloperDebugBuild()
Local build for developers.
static const QString & fsd()
FSD specific.
TransponderMode
Transponder codes.
@ StateStandby
not a real mode, more a state
@ StateIdent
not a real mode, more a state
FacilityType getFacilityType() const
Get type.
@ DVFR
Defense visual Flight Rules.
@ SVFR
Special visual flight rules.
@ VFR
Visual flight rules.
AtisLineType
ATIS line type.
SimType
Flight simulator type.
@ MSFS95
MS Flight Simulator 95.
@ MSCFS2
MS Combat Flight Simulator 2.
@ MSFS2000
MS Flight Simulator 2000.
@ MSFS
MS Flight Simulator 2020.
@ MSFS2002
MS Flight Simulator 2002.
@ Unknown
Unknown simulator type.
@ MSFS2024
MS Flight Simulator 2024.
@ MSCFS
MS Combat Flight Simulator.
@ MSFS2004
MS Flight Simulator 2004.
@ MSCFS3
MS Combat Flight Simulator 3.
@ MSFSX
MS Flight Simulator X.
@ MSFS98
MS Flight Simulator 98.
PilotRating
Pilot ratings.
ClientQueryType
Client query types.
@ PublicIP
What is my public IP address?
@ FP
Send Cached Flight Plan.
@ EuroscopeSimData
Broadcast to announce we request SIMDATA packets.
@ Capabilities
What capabilities does this client have?
@ Unknown
Unknown client query type.
@ INF
Supervisor Privileged Information Request.
@ Server
What server are you on?
@ AircraftConfig
Aircraft Configuration.
@ RealName
What is your real-name (and other ATC data).
@ Com1Freq
What is your COM1 Frequency?
@ IsValidATC
Is this client working ATC or just an observer.
Capabilities
Client capability flags */.
@ SecondaryPos
Can send/receive secondary visibility center points (ATC/Server only).
@ AtcInfo
Can accept ATIS responses.
@ IcaoEquipment
Process aircraft ICAO in flightplan as ICAO equipment code (e.g.
@ FastPos
Can send/receive fast position updates (pilot only).
@ OngoingCoord
Can send/receive inter-facility coordination packets (ATC only).
@ AircraftConfig
Aircraft Config.
@ VisPos
Can send/receive visual position updates (pilot only).
@ InterminPos
Can send/receive Interim position updates (pilot only).
@ AircraftInfo
Can send/receive modern model packets.
Free functions in swift::misc.
bool isEmpty() const const
QByteArray toLatin1() const const
#define SWIFT_VERIFY_X(COND, WHERE, WHAT)
A weaker kind of assert.