Minor FSD client text message handling fixes

This commit is contained in:
Klaus Basan
2019-10-19 01:30:02 +02:00
parent ca149d78c0
commit 7a1b5a0237
2 changed files with 31 additions and 34 deletions

View File

@@ -445,9 +445,8 @@ namespace BlackCore
{ {
if (messages.isEmpty()) { return; } if (messages.isEmpty()) { return; }
CTextMessageList privateMessages = messages.getPrivateMessages(); const CTextMessageList privateMessages = messages.getPrivateMessages().markedAsSent();
privateMessages.markAsSent(); for (const auto &message : privateMessages)
for (const auto &message : as_const(privateMessages))
{ {
if (message.getRecipientCallsign().isEmpty()) { continue; } if (message.getRecipientCallsign().isEmpty()) { continue; }
TextMessage textMessage(m_ownCallsign.asString(), message.getRecipientCallsign().getFsdCallsignString(), message.getMessage()); TextMessage textMessage(m_ownCallsign.asString(), message.getRecipientCallsign().getFsdCallsignString(), message.getMessage());
@@ -457,8 +456,7 @@ namespace BlackCore
this->increaseStatisticsValue(QStringLiteral("sendTextMessages")); this->increaseStatisticsValue(QStringLiteral("sendTextMessages"));
} }
CTextMessageList radioMessages = messages.getRadioMessages(); const CTextMessageList radioMessages = messages.getRadioMessages().markedAsSent();
radioMessages.markAsSent();
QVector<int> frequencies; QVector<int> frequencies;
for (const auto &message : radioMessages) for (const auto &message : radioMessages)
{ {
@@ -486,10 +484,10 @@ namespace BlackCore
void CFSDClient::sendTextMessage(TextMessageGroups receiverGroup, const QString &message) void CFSDClient::sendTextMessage(TextMessageGroups receiverGroup, const QString &message)
{ {
QString receiver; QString receiver;
if (receiverGroup == TextMessageGroups::AllClients) { receiver = '*'; } if (receiverGroup == TextMessageGroups::AllClients) { receiver = '*'; }
else if (receiverGroup == TextMessageGroups::AllAtcClients) { receiver = "*A"; } else if (receiverGroup == TextMessageGroups::AllAtcClients) { receiver = QStringLiteral("*A"); }
else if (receiverGroup == TextMessageGroups::AllPilotClients) { receiver = "*P"; } else if (receiverGroup == TextMessageGroups::AllPilotClients) { receiver = QStringLiteral("*P"); }
else if (receiverGroup == TextMessageGroups::AllSups) { receiver = "*S"; } else if (receiverGroup == TextMessageGroups::AllSups) { receiver = QStringLiteral("*S"); }
else { return; } else { return; }
TextMessage textMessage(m_ownCallsign.asString(), receiver, message); TextMessage textMessage(m_ownCallsign.asString(), receiver, message);
sendMessage(textMessage); sendMessage(textMessage);
@@ -502,15 +500,15 @@ namespace BlackCore
sendTextMessage(msg); sendTextMessage(msg);
} }
void CFSDClient::sendRadioMessage(const QVector<int> &frequencies, const QString &message) void CFSDClient::sendRadioMessage(const QVector<int> &frequencieskHz, const QString &message)
{ {
QStringList receivers; QStringList receivers;
for (const int &frequency : frequencies) for (const int &frequency : frequencieskHz)
{ {
receivers.push_back(QStringLiteral("@%1").arg(frequency - 100000)); receivers.push_back(QStringLiteral("@%1").arg(frequency - 100000));
} }
TextMessage radioMessage(m_ownCallsign.asString(), receivers.join('&'), message); const TextMessage radioMessage(m_ownCallsign.asString(), receivers.join('&'), message);
sendMessage(radioMessage); sendMessage(radioMessage);
this->increaseStatisticsValue(QStringLiteral("sendTextMessages")); this->increaseStatisticsValue(QStringLiteral("sendTextMessages"));
} }
@@ -520,7 +518,7 @@ namespace BlackCore
// Removed with T353 although it is standard // Removed with T353 although it is standard
// const QString route = QString(flightPlan.getRoute()).replace(" ", "."); // const QString route = QString(flightPlan.getRoute()).replace(" ", ".");
const QString route = flightPlan.getRoute(); const QString route = flightPlan.getRoute();
const QString remarks = flightPlan.getRemarks(); const QString remarks = flightPlan.getRemarks();
//! \fixme that would be the official string, can this be used? //! \fixme that would be the official string, can this be used?
@@ -540,23 +538,22 @@ namespace BlackCore
default: flightType = FlightType::IFR; break; default: flightType = FlightType::IFR; break;
} }
QList<int> timePartsEnroute = flightPlan.getEnrouteTime().getHrsMinSecParts(); const QList<int> timePartsEnroute = flightPlan.getEnrouteTime().getHrsMinSecParts();
QList<int> timePartsFuel = flightPlan.getFuelTime().getHrsMinSecParts(); const QList<int> timePartsFuel = flightPlan.getFuelTime().getHrsMinSecParts();
const FlightPlan fp(m_ownCallsign.asString(), "SERVER", flightType, act,
FlightPlan fp(m_ownCallsign.asString(), "SERVER", flightType, act, flightPlan.getCruiseTrueAirspeed().valueInteger(CSpeedUnit::kts()),
flightPlan.getCruiseTrueAirspeed().valueInteger(CSpeedUnit::kts()), flightPlan.getOriginAirportIcao().asString(),
flightPlan.getOriginAirportIcao().asString(), flightPlan.getTakeoffTimePlanned().toUTC().toString("hhmm").toInt(),
flightPlan.getTakeoffTimePlanned().toUTC().toString("hhmm").toInt(), flightPlan.getTakeoffTimeActual().toUTC().toString("hhmm").toInt(),
flightPlan.getTakeoffTimeActual().toUTC().toString("hhmm").toInt(), alt,
alt, flightPlan.getDestinationAirportIcao().asString(),
flightPlan.getDestinationAirportIcao().asString(), timePartsEnroute[CTime::Hours],
timePartsEnroute[CTime::Hours], timePartsEnroute[CTime::Minutes],
timePartsEnroute[CTime::Minutes], timePartsFuel[CTime::Hours],
timePartsFuel[CTime::Hours], timePartsFuel[CTime::Minutes],
timePartsFuel[CTime::Minutes], flightPlan.getAlternateAirportIcao().asString(),
flightPlan.getAlternateAirportIcao().asString(), remarks,
remarks, route);
route);
sendMessage(fp); sendMessage(fp);
this->increaseStatisticsValue(QStringLiteral("sendFlightPlan")); this->increaseStatisticsValue(QStringLiteral("sendFlightPlan"));
@@ -576,7 +573,7 @@ namespace BlackCore
QString modelString = m_ownModelString.isEmpty() ? myAircraft.getModelString() : m_ownModelString; QString modelString = m_ownModelString.isEmpty() ? myAircraft.getModelString() : m_ownModelString;
if (modelString.isEmpty()) { modelString = noModelString(); } if (modelString.isEmpty()) { modelString = noModelString(); }
PlaneInfoRequestFsinn planeInfoRequestFsinn(m_ownCallsign.asString(), callsign.toQString(), const PlaneInfoRequestFsinn planeInfoRequestFsinn(m_ownCallsign.asString(), callsign.toQString(),
myAircraft.getAirlineIcaoCodeDesignator(), myAircraft.getAirlineIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCodeDesignator(), myAircraft.getAircraftIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCombinedType(), myAircraft.getAircraftIcaoCombinedType(),
@@ -856,7 +853,7 @@ namespace BlackCore
void CFSDClient::handleTextMessage(const QStringList &tokens) void CFSDClient::handleTextMessage(const QStringList &tokens)
{ {
TextMessage textMessage = TextMessage::fromTokens(tokens); const TextMessage textMessage = TextMessage::fromTokens(tokens);
const CCallsign sender(textMessage.sender()); const CCallsign sender(textMessage.sender());
const CCallsign receiver(textMessage.receiver()); const CCallsign receiver(textMessage.receiver());

View File

@@ -136,7 +136,7 @@ namespace BlackCore
void sendTextMessage(const BlackMisc::Network::CTextMessage &message); void sendTextMessage(const BlackMisc::Network::CTextMessage &message);
void sendTextMessage(TextMessageGroups receiverGroup, const QString &message); void sendTextMessage(TextMessageGroups receiverGroup, const QString &message);
void sendTextMessage(const QString &receiver, const QString &message); void sendTextMessage(const QString &receiver, const QString &message);
void sendRadioMessage(const QVector<int> &frequencies, const QString &message); void sendRadioMessage(const QVector<int> &frequencieskHz, const QString &message);
void sendFlightPlan(const BlackMisc::Aviation::CFlightPlan &flightPlan); void sendFlightPlan(const BlackMisc::Aviation::CFlightPlan &flightPlan);
void sendPlaneInfoRequest(const BlackMisc::Aviation::CCallsign &receiver); void sendPlaneInfoRequest(const BlackMisc::Aviation::CCallsign &receiver);
void sendPlaneInfoRequestFsinn(const BlackMisc::Aviation::CCallsign &callsign); void sendPlaneInfoRequestFsinn(const BlackMisc::Aviation::CCallsign &callsign);
@@ -230,7 +230,7 @@ namespace BlackCore
const QString payload = message.toTokens().join(':'); const QString payload = message.toTokens().join(':');
const QString line = message.pdu() + payload; const QString line = message.pdu() + payload;
const QString buffer = line + "\r\n"; const QString buffer = line + "\r\n";
QByteArray bufferEncoded = m_fsdTextCodec->fromUnicode(buffer); const QByteArray bufferEncoded = m_fsdTextCodec->fromUnicode(buffer);
emitRawFsdMessage(buffer.trimmed(), true); emitRawFsdMessage(buffer.trimmed(), true);
if (m_printToConsole) { qDebug() << "FSD Sent=>" << bufferEncoded; } if (m_printToConsole) { qDebug() << "FSD Sent=>" << bufferEncoded; }
if (! m_unitTestMode) { m_socket.write(bufferEncoded); } if (! m_unitTestMode) { m_socket.write(bufferEncoded); }