From 0b8db1a612b2442d1ed24cde435665d516083006 Mon Sep 17 00:00:00 2001 From: Roland Rossgotterer Date: Sun, 27 Oct 2019 20:57:04 +0100 Subject: [PATCH] [FSD] Don't use CCallsign object to send incremental parts update to special receiver A client query can be sent to any type of receiver, not only to valid callsigns. For example also to "@94835". This fixes the corrupted receiver for incremental aircraft parts. --- src/blackcore/fsd/fsdclient.cpp | 7 ++++--- .../fsd/testfsdclient/testfsdclient.cpp | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/blackcore/fsd/fsdclient.cpp b/src/blackcore/fsd/fsdclient.cpp index 3f53e104c..ada7db77f 100644 --- a/src/blackcore/fsd/fsdclient.cpp +++ b/src/blackcore/fsd/fsdclient.cpp @@ -623,7 +623,9 @@ namespace BlackCore void CFSDClient::sendAircraftConfiguration(const QString &receiver, const QString &aircraftConfigJson) { - sendClientQuery(ClientQueryType::AircraftConfig, receiver, { aircraftConfigJson }); + if (aircraftConfigJson.size() == 0) { return; } + const ClientQuery clientQuery(m_ownCallsign.asString(), receiver, ClientQueryType::AircraftConfig, { aircraftConfigJson }); + sendMessage(clientQuery); } void CFSDClient::sendFsdMessage(const QString &message) @@ -766,8 +768,7 @@ namespace BlackCore void CFSDClient::sendIncrementalAircraftConfig() { - if (!this->isConnected()) { return; } - if (!this->getSetupForServer().sendAircraftParts()) { return; } + if (!m_unitTestMode && (!this->isConnected() || !this->getSetupForServer().sendAircraftParts())) { return; } const CAircraftParts currentParts(this->getOwnAircraftParts()); // If it hasn't changed, return diff --git a/tests/blackcore/fsd/testfsdclient/testfsdclient.cpp b/tests/blackcore/fsd/testfsdclient/testfsdclient.cpp index ea8ff97fb..e43187b1b 100644 --- a/tests/blackcore/fsd/testfsdclient/testfsdclient.cpp +++ b/tests/blackcore/fsd/testfsdclient/testfsdclient.cpp @@ -98,6 +98,7 @@ namespace BlackFsdTest void testSendPlaneInformation3(); void testSendPlaneInformation4(); void testSendAircraftConfiguration(); + void testSendIncrementalAircraftConfiguration(); void testCom1FreqQueryResponse(); void testPlaneInfoRequestResponse(); void testAuth(); @@ -714,6 +715,23 @@ namespace BlackFsdTest QCOMPARE(fsdMessage.getRawMessage(), "FSD Sent=>$CQABCD:XYZ:ACC:{\"request\":\"full\"}"); } + void CTestFSDClient::testSendIncrementalAircraftConfiguration() + { + QSignalSpy spy(client, &CFSDClient::rawFsdMessage); + + CAircraftParts parts = COwnAircraftProviderDummy::instance()->getOwnAircraftParts(); + parts.setGearDown(true); + COwnAircraftProviderDummy::instance()->updateOwnParts(parts); + + client->sendIncrementalAircraftConfig(); + + QCOMPARE(spy.count(), 1); + QList arguments = spy.takeFirst(); + QCOMPARE(arguments.size(), 1); + CRawFsdMessage fsdMessage = arguments.at(0).value(); + QCOMPARE(fsdMessage.getRawMessage(), "FSD Sent=>$CQABCD:@94835:ACC:{\"config\":{\"gear_down\":true}}"); + } + void CTestFSDClient::testCom1FreqQueryResponse() { QSignalSpy spy(client, &CFSDClient::rawFsdMessage);