Skip to content

Commit c44f871

Browse files
committed
feat: Summary of all changes to the new model loader
1 parent 14ff206 commit c44f871

File tree

73 files changed

+8684
-963
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+8684
-963
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,4 @@ cmake-build-*/
5151
/out/
5252
/dist/
5353
CMakeUserPresets.json
54-
/third_party/externals
54+
/third_party/externals

src/core/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,6 @@ add_library(core SHARED
170170
fsd/pong.h
171171
fsd/rehost.cpp
172172
fsd/rehost.h
173-
fsd/revbclientparts.cpp
174-
fsd/revbclientparts.h
175173
fsd/serializer.cpp
176174
fsd/serializer.h
177175
fsd/servererror.cpp

src/core/aircraftmatcher.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1710,6 +1710,14 @@ namespace swift::core
17101710
const QString &livery)
17111711
{
17121712
Q_UNUSED(livery)
1713+
// TODO TZ remove after testing
1714+
CLogMessage(this).info(u"CAircraftMatcher::onIcaoCodesReceived CHECK:"
1715+
u"callsign %1 "
1716+
u"aircraftIcao %2 "
1717+
u"airlineIcao %3 "
1718+
u"livery %4 ")
1719+
<< callsign << aircraftIcao << airlineIcao << livery;
1720+
17131721
Q_ASSERT_X(sApp && sApp->hasWebDataServices(), Q_FUNC_INFO, "Missing web data services");
17141722
if (m_modelSet.isEmpty()) { return; } // ignore empty sets to not create silly stats
17151723
if (sessionId.isEmpty()) { return; }

src/core/airspacemonitor.cpp

Lines changed: 52 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ namespace swift::core
9090
connect(m_fsdClient, &CFSDClient::serverResponseReceived, this, &CAirspaceMonitor::onServerReplyReceived);
9191
connect(m_fsdClient, &CFSDClient::aircraftConfigReceived, this, &CAirspaceMonitor::onAircraftConfigReceived);
9292
connect(m_fsdClient, &CFSDClient::connectionStatusChanged, this, &CAirspaceMonitor::onConnectionStatusChanged);
93-
connect(m_fsdClient, &CFSDClient::revbAircraftConfigReceived, this,
94-
&CAirspaceMonitor::onRevBAircraftConfigReceived);
9593

9694
Q_ASSERT_X(sApp && sApp->hasWebDataServices(), Q_FUNC_INFO, "Missing data reader");
9795

@@ -546,9 +544,21 @@ namespace swift::core
546544

547545
void CAirspaceMonitor::sendReadyForModelMatching(const CCallsign &callsign, MatchingReadinessFlag rf)
548546
{
547+
549548
if (!this->isConnectedAndNotShuttingDown()) { return; }
550549
Q_ASSERT_X(!callsign.isEmpty(), Q_FUNC_INFO, "missing callsign");
551550

551+
// TODO TZ remove when testing is done
552+
// CLogMessage(this).info(u"CAirspaceMonitor::sendReadyForModelMatching "
553+
// u"callsign %1 Flag %2 ")
554+
// << callsign << rf;
555+
556+
CStatusMessageList reverseLookupMessages;
557+
CCallsign::addLogDetailsToList(&reverseLookupMessages, callsign,
558+
QStringLiteral("CAirspaceMonitor::sendReadyForModelMatching Flag: %1").arg(rf),
559+
CAirspaceMonitor::getLogCategories());
560+
// TODO remove
561+
552562
// set flag and init ts
553563
Readiness &readiness = this->addMatchingReadinessFlag(callsign, rf);
554564

@@ -668,6 +678,14 @@ namespace swift::core
668678

669679
// normally we should never get here
670680
CLogMessage(this).info(u"Verified '%1' again, has ICAO codes, ready for matching!") << callsign;
681+
682+
// TODO TZ remove when testing is done
683+
CStatusMessageList reverseLookupMessages;
684+
CCallsign::addLogDetailsToList(&reverseLookupMessages, callsign,
685+
QStringLiteral("CAirspaceMonitor::verifyReceivedIcaoData"),
686+
CAirspaceMonitor::getLogCategories());
687+
// end TZ remove
688+
671689
this->sendReadyForModelMatching(callsign, Verified);
672690
}
673691

@@ -773,6 +791,15 @@ namespace swift::core
773791
const QString &aircraftIcaoDesignator,
774792
const QString &combinedAircraftType, const QString &modelString)
775793
{
794+
// TODO TZ remove when testing is done
795+
CLogMessage(this).info(u"CAirspaceMonitor::onCustomFSInnPacketReceived CHECK:"
796+
u"callsign %1 "
797+
u"airlineIcaoDesignator %2 "
798+
u"aircraftIcaoDesignator %3 "
799+
u"combinedAircraftType %4 "
800+
u"modelString %5 ")
801+
<< callsign << airlineIcaoDesignator << aircraftIcaoDesignator << combinedAircraftType << modelString;
802+
776803
// it can happen this is called before any queries
777804
// ES sends FsInn packets for callsigns such as ACCGER1, which are hard to distinguish
778805
// 1) checking if they are already in the list checks again ATC position which is safe
@@ -818,7 +845,7 @@ namespace swift::core
818845
usedModelString.clear();
819846
CCallsign::addLogDetailsToList(
820847
pReverseLookupMessages, callsign,
821-
QStringLiteral("FsInn modelstring '%1' ignored because of setuo").arg(modelString));
848+
QStringLiteral("FsInn modelstring '%1' ignored because of setup").arg(modelString));
822849
}
823850
else if (!CAircraftMatcher::isKnownModelString(modelString, callsign, pReverseLookupMessages))
824851
{
@@ -846,6 +873,15 @@ namespace swift::core
846873
void CAirspaceMonitor::onIcaoCodesReceived(const CCallsign &callsign, const QString &aircraftIcaoDesignator,
847874
const QString &airlineIcaoDesignator, const QString &livery)
848875
{
876+
// TODO TZ remove logmessage when testing is done
877+
CLogMessage(this).info(u"CAirspaceMonitor::onIcaoCodesReceived CHECK:"
878+
u"callsign %1 "
879+
u"aircraftIcaoDesignator %2 "
880+
u"airlineIcaoDesignator %3 "
881+
u"livery %4 ")
882+
<< callsign << aircraftIcaoDesignator << airlineIcaoDesignator << livery;
883+
// End TODO TZ
884+
849885
Q_ASSERT_X(CThreadUtils::isInThisThread(this), Q_FUNC_INFO, "not in main thread");
850886
if (!this->isConnectedAndNotShuttingDown()) { return; }
851887
if (CBuildConfig::isLocalDeveloperDebugBuild())
@@ -865,13 +901,18 @@ namespace swift::core
865901
CAirspaceMonitor::getLogCategories());
866902

867903
const CClient client = this->getClientOrDefaultForCallsign(callsign);
868-
this->addOrUpdateAircraftInRange(callsign, aircraftIcaoDesignator, airlineIcaoDesignator, livery,
869-
client.getQueriedModelString(), CAircraftModel::TypeQueriedFromNetwork,
870-
pReverseLookupMessages);
871-
this->addReverseLookupMessages(callsign, reverseLookupMessages);
872-
this->sendReadyForModelMatching(callsign, ReceivedIcaoCodes); // ICAO codes received
904+
const CSimulatedAircraft aircraft = this->addOrUpdateAircraftInRange(
905+
callsign, aircraftIcaoDesignator, airlineIcaoDesignator, livery, client.getQueriedModelString(),
906+
CAircraftModel::TypeQueriedFromNetwork, pReverseLookupMessages);
907+
908+
// we do not change manually assigned models
909+
if (aircraft.getModel().getModelType() != CAircraftModel::TypeManuallySet)
910+
{
911+
this->addReverseLookupMessages(callsign, reverseLookupMessages);
912+
this->sendReadyForModelMatching(callsign, ReceivedIcaoCodes); // ICAO codes received
873913

874-
emit this->requestedNewAircraft(callsign, aircraftIcaoDesignator, airlineIcaoDesignator, livery);
914+
emit this->requestedNewAircraft(callsign, aircraftIcaoDesignator, airlineIcaoDesignator, livery);
915+
}
875916
}
876917

877918
CAircraftModel CAirspaceMonitor::reverseLookupModelWithFlightplanData(
@@ -1178,8 +1219,8 @@ namespace swift::core
11781219
const CSimulatedAircraft aircraft = this->getAircraftInRangeForCallsign(callsign);
11791220
if (aircraft.hasValidCallsign())
11801221
{
1181-
// only if we do not have a DB model yet
1182-
if (!aircraft.getModel().hasValidDbKey())
1222+
// we do not change manually assigned models (msfs2024)
1223+
if (!aircraft.getModel().hasValidDbKey() && aircraft.getModelType() != CAircraftModel::TypeManuallySet)
11831224
{
11841225
CAircraftModel model = this->reverseLookupModelWithFlightplanData(callsign, aircraftIcao, airlineIcao,
11851226
livery, modelString, modelType, log);
@@ -1439,69 +1480,6 @@ namespace swift::core
14391480
this->updateAircraftInRange(callsign, vm);
14401481
}
14411482

1442-
void CAirspaceMonitor::onRevBAircraftConfigReceived(const CCallsign &callsign, const QString &config,
1443-
qint64 currentOffsetMs)
1444-
{
1445-
1446-
Q_ASSERT(CThreadUtils::isInThisThread(this));
1447-
SWIFT_AUDIT_X(!callsign.isEmpty(), Q_FUNC_INFO, "Need callsign");
1448-
if (callsign.isEmpty()) { return; }
1449-
1450-
unsigned long pp = 0;
1451-
bool ok {};
1452-
pp = config.toULong(&ok, 10);
1453-
1454-
bool gear = (pp & 1U);
1455-
bool landLight = (pp & 2U);
1456-
bool navLight = (pp & 4U);
1457-
bool strobeLight = (pp & 8U);
1458-
bool beaconLight = (pp & 16U);
1459-
bool taxiLight = (pp & 32U);
1460-
bool engine1Running = (pp & 64U);
1461-
bool engine2Running = (pp & 128U);
1462-
bool engine3Running = (pp & 256U);
1463-
bool engine4Running = (pp & 512U);
1464-
1465-
// CLogMessage(this).info(u"taxiLight %1 landLight %2 beaconLight %3 strobeLight %4 gear %5") << taxiLight <<
1466-
// landLight << beaconLight << strobeLight << gear; CLogMessage(this).info(u"engine1Running %1 engine2Running %2
1467-
// engine3Running %3 engine4Running %4") << engine1Running << engine2Running << engine3Running <<
1468-
// engine4Running;
1469-
1470-
CAircraftParts aircraftparts;
1471-
aircraftparts.setGearDown(gear);
1472-
1473-
CAircraftLights lights;
1474-
lights.setStrobeOn(strobeLight);
1475-
lights.setLandingOn(landLight);
1476-
lights.setTaxiOn(taxiLight);
1477-
lights.setBeaconOn(beaconLight);
1478-
lights.setNavOn(navLight);
1479-
aircraftparts.setLights(lights);
1480-
1481-
CAircraftEngineList engines;
1482-
engines.initEngines(4, false);
1483-
engines.setEngineOn(1, engine1Running);
1484-
engines.setEngineOn(2, engine2Running);
1485-
engines.setEngineOn(3, engine3Running);
1486-
engines.setEngineOn(4, engine4Running);
1487-
aircraftparts.setEngines(engines);
1488-
1489-
// make sure in any case right time and correct details
1490-
aircraftparts.setCurrentUtcTime();
1491-
aircraftparts.setTimeOffsetMs(currentOffsetMs);
1492-
aircraftparts.setPartsDetails(CAircraftParts::FSDAircraftParts);
1493-
1494-
// store parts
1495-
this->storeAircraftParts(callsign, aircraftparts, true);
1496-
1497-
// update client capability
1498-
CClient client = this->getClientOrDefaultForCallsign(callsign);
1499-
client.setUserCallsign(callsign); // make valid by setting a callsign
1500-
if (client.hasCapability(CClient::FsdWithAircraftConfig)) { return; }
1501-
client.addCapability(CClient::FsdWithAircraftConfig);
1502-
this->setOtherClient(client);
1503-
}
1504-
15051483
void CAirspaceMonitor::onAircraftConfigReceived(const CCallsign &callsign, const QJsonObject &jsonObject,
15061484
qint64 currentOffsetMs)
15071485
{

src/core/airspacemonitor.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -473,8 +473,6 @@ namespace swift::core
473473
const QString &aircraftIcao, const QString &airlineIcao);
474474
void onConnectionStatusChanged(swift::misc::network::CConnectionStatus oldStatus,
475475
swift::misc::network::CConnectionStatus newStatus);
476-
void onRevBAircraftConfigReceived(const swift::misc::aviation::CCallsign &callsign, const QString &config,
477-
qint64 currentOffsetMs);
478476
};
479477
} // namespace swift::core
480478

src/core/context/contextnetworkimpl.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,6 +1137,7 @@ namespace swift::core::context
11371137
if (c)
11381138
{
11391139
const CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign));
1140+
11401141
Q_ASSERT_X(!aircraft.getCallsign().isEmpty(), Q_FUNC_INFO, "missing callsign");
11411142
emit this->changedRemoteAircraftModel(aircraft, originator); // update aircraft model
11421143
}

src/core/db/databaseutils.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ namespace swift::core::db
7575
dbModelModified.updateMissingParts(model);
7676
dbModelModified.setDistributorOrder(distributorOrder);
7777
dbModelModified.setSimulator(dbModel.getSimulator()); // DB simulator settings have priority
78+
dbModelModified.setModelLivery(model.getModelLivery()); // keep local livery settings msfs2024
7879
return dbModelModified;
7980
}
8081

@@ -88,6 +89,7 @@ namespace swift::core::db
8889
{
8990
if (modified) { *modified = true; }
9091
consolidatedModel.setLivery(dbLivery);
92+
consolidatedModel.setModelLivery(model.getModelLivery()); // keep local livery settings msfs2024
9193
}
9294
}
9395
if (!consolidatedModel.getAircraftIcaoCode().hasValidDbKey() && consolidatedModel.hasAircraftDesignator())
@@ -99,6 +101,7 @@ namespace swift::core::db
99101
{
100102
if (modified) { *modified = true; }
101103
consolidatedModel.setAircraftIcaoCode(dbIcao);
104+
consolidatedModel.setModelLivery(model.getModelLivery()); // keep local livery settings msfs2024
102105
}
103106
}
104107

@@ -108,6 +111,7 @@ namespace swift::core::db
108111
{
109112
if (modified) { *modified = true; }
110113
consolidatedModel.setDistributor(dbDistributor);
114+
consolidatedModel.setModelLivery(model.getModelLivery()); // keep local livery settings msfs2024
111115
}
112116
consolidatedModel.updateLocalFileNames(model);
113117
consolidatedModel.setDistributorOrder(distributorOrder);

src/core/fsd/fsdclient.cpp

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#include "core/fsd/planeinformationfsinn.h"
3535
#include "core/fsd/pong.h"
3636
#include "core/fsd/rehost.h"
37-
#include "core/fsd/revbclientparts.h"
3837
#include "core/fsd/serializer.h"
3938
#include "core/fsd/servererror.h"
4039
#include "core/fsd/textmessage.h"
@@ -1078,16 +1077,6 @@ namespace swift::core::fsd
10781077

10791078
// Euroscope
10801079
m_messageTypeMapping["SIMDATA"] = MessageType::EuroscopeSimData;
1081-
1082-
// IVAO only
1083-
// Ref: https://github.com/DemonRem/X-IvAP/blob/1b0a14880532a0f5c8fe84be44e462c6892a5596/src/XIvAp/FSDprotocol.h
1084-
m_messageTypeMapping["!R"] = MessageType::RegistrationInfo;
1085-
m_messageTypeMapping["-MD"] = MessageType::RevBClientParts;
1086-
m_messageTypeMapping["-PD"] = MessageType::RevBPilotDescription; // not handled, to avoid error messages
1087-
1088-
// IVAO parts
1089-
// https://discordapp.com/channels/539048679160676382/695961646992195644/707915838845485187
1090-
// https://github.com/swift-project/pilotclient/wiki/Knowledgebase-Simulation:-IVAO-parts
10911080
}
10921081

10931082
void CFSDClient::handleAtcDataUpdate(const QStringList &tokens)
@@ -1620,23 +1609,6 @@ namespace swift::core::fsd
16201609
if (serverError.isFatalError()) { disconnectFromServer(); }
16211610
}
16221611

1623-
void CFSDClient::handleRevBClientPartsPacket(const QStringList &tokens)
1624-
{
1625-
CLogMessage(this).debug(u"handleRevBClientPartsPacket");
1626-
1627-
const RevBClientParts RevBClientParts = RevBClientParts::fromTokens(tokens);
1628-
const CCallsign callsign(RevBClientParts.sender(), CCallsign::Aircraft);
1629-
1630-
const bool inRange = isAircraftInRange(callsign);
1631-
1632-
if (!inRange) { return; } // sort out all broadcasts we DO NOT NEED
1633-
if (!getSetupForServer().receiveAircraftParts()) { return; }
1634-
1635-
const qint64 offsetTimeMs = currentOffsetTime(callsign);
1636-
emit revbAircraftConfigReceived(RevBClientParts.sender(), RevBClientParts.m_partsval1, offsetTimeMs);
1637-
CLogMessage(this).debug(u"Set Config at %1 ") << offsetTimeMs;
1638-
}
1639-
16401612
void CFSDClient::handleRehost(const QStringList &tokens)
16411613
{
16421614
const Rehost rehost = Rehost::fromTokens(tokens);
@@ -2283,9 +2255,7 @@ namespace swift::core::fsd
22832255
case MessageType::AddPilot:
22842256
case MessageType::ServerHeartbeat:
22852257
case MessageType::ProController:
2286-
case MessageType::ClientIdentification:
2287-
case MessageType::RegistrationInfo:
2288-
case MessageType::RevBPilotDescription: break;
2258+
case MessageType::ClientIdentification: break;
22892259

22902260
// handled ones
22912261
case MessageType::AtcDataUpdate: handleAtcDataUpdate(tokens); break;
@@ -2308,7 +2278,6 @@ namespace swift::core::fsd
23082278
case MessageType::ServerError: handleServerError(tokens); break;
23092279
case MessageType::TextMessage: handleTextMessage(tokens); break;
23102280
case MessageType::PilotClientCom: handleCustomPilotPacket(tokens); break;
2311-
case MessageType::RevBClientParts: handleRevBClientPartsPacket(tokens); break;
23122281
case MessageType::VisualPilotDataUpdate:
23132282
case MessageType::VisualPilotDataPeriodic:
23142283
case MessageType::VisualPilotDataStopped: handleVisualPilotDataUpdate(tokens, messageType); break;

src/core/fsd/fsdclient.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ namespace swift::core::fsd
313313
void planeInformationFsinnReceived(const swift::misc::aviation::CCallsign &callsign,
314314
const QString &airlineIcaoDesignator, const QString &aircraftDesignator,
315315
const QString &combinedAircraftType, const QString &modelString);
316-
void revbAircraftConfigReceived(const QString &sender, const QString &config, qint64 currentOffsetTimeMs);
316+
317317
void muteRequestReceived(bool mute);
318318

319319
//! @}
@@ -474,7 +474,6 @@ namespace swift::core::fsd
474474
#ifdef SWIFT_VATSIM_SUPPORT
475475
void handleFsdIdentification(const QStringList &tokens);
476476
#endif
477-
void handleRevBClientPartsPacket(const QStringList &tokens);
478477
void handleRehost(const QStringList &tokens);
479478
void handleMute(const QStringList &tokens);
480479

src/core/fsd/messagebase.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,8 @@ enum class MessageType
4242
Pong,
4343
ServerError,
4444
ServerHeartbeat,
45-
RegistrationInfo, // IVAO only
4645
TextMessage,
4746
PilotClientCom,
48-
RevBClientParts, // IVAO only
49-
RevBPilotDescription, // -PD IVAO only not handled in swift
5047
Rehost,
5148
Mute,
5249
};

0 commit comments

Comments
 (0)