[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.
This commit is contained in:
Roland Rossgotterer
2019-10-27 20:57:04 +01:00
committed by Mat Sutcliffe
parent 0e9297ff5f
commit 0b8db1a612
2 changed files with 22 additions and 3 deletions

View File

@@ -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

View File

@@ -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<QVariant> arguments = spy.takeFirst();
QCOMPARE(arguments.size(), 1);
CRawFsdMessage fsdMessage = arguments.at(0).value<CRawFsdMessage>();
QCOMPARE(fsdMessage.getRawMessage(), "FSD Sent=>$CQABCD:@94835:ACC:{\"config\":{\"gear_down\":true}}");
}
void CTestFSDClient::testCom1FreqQueryResponse()
{
QSignalSpy spy(client, &CFSDClient::rawFsdMessage);