mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-27 11:05:44 +08:00
refs #48 INetwork sending flight plans
This commit is contained in:
@@ -41,6 +41,7 @@ Client::Client(BlackMisc::IContext &ctx)
|
|||||||
connect(this, &Client::sendServerQuery, m_net, &INetwork::sendServerQuery);
|
connect(this, &Client::sendServerQuery, m_net, &INetwork::sendServerQuery);
|
||||||
connect(this, &Client::sendAtcQuery, m_net, &INetwork::sendAtcQuery);
|
connect(this, &Client::sendAtcQuery, m_net, &INetwork::sendAtcQuery);
|
||||||
connect(this, &Client::sendAtisQuery, m_net, &INetwork::sendAtisQuery);
|
connect(this, &Client::sendAtisQuery, m_net, &INetwork::sendAtisQuery);
|
||||||
|
connect(this, &Client::sendFlightPlan, m_net, &INetwork::sendFlightPlan);
|
||||||
connect(this, &Client::sendRealNameQuery, m_net, &INetwork::sendRealNameQuery);
|
connect(this, &Client::sendRealNameQuery, m_net, &INetwork::sendRealNameQuery);
|
||||||
connect(this, &Client::sendCapabilitiesQuery, m_net, &INetwork::sendCapabilitiesQuery);
|
connect(this, &Client::sendCapabilitiesQuery, m_net, &INetwork::sendCapabilitiesQuery);
|
||||||
connect(this, &Client::sendIcaoCodesQuery, m_net, &INetwork::sendIcaoCodesQuery);
|
connect(this, &Client::sendIcaoCodesQuery, m_net, &INetwork::sendIcaoCodesQuery);
|
||||||
@@ -69,6 +70,7 @@ Client::Client(BlackMisc::IContext &ctx)
|
|||||||
m_commands["server"] = std::bind(&Client::sendServerQueryCmd, this, _1);
|
m_commands["server"] = std::bind(&Client::sendServerQueryCmd, this, _1);
|
||||||
m_commands["atc"] = std::bind(&Client::sendAtcQueryCmd, this, _1);
|
m_commands["atc"] = std::bind(&Client::sendAtcQueryCmd, this, _1);
|
||||||
m_commands["atis"] = std::bind(&Client::sendAtisQueryCmd, this, _1);
|
m_commands["atis"] = std::bind(&Client::sendAtisQueryCmd, this, _1);
|
||||||
|
m_commands["flightplan"] = std::bind(&Client::sendFlightPlanCmd, this, _1);
|
||||||
m_commands["name"] = std::bind(&Client::sendRealNameQueryCmd, this, _1);
|
m_commands["name"] = std::bind(&Client::sendRealNameQueryCmd, this, _1);
|
||||||
m_commands["caps"] = std::bind(&Client::sendCapabilitiesQueryCmd, this, _1);
|
m_commands["caps"] = std::bind(&Client::sendCapabilitiesQueryCmd, this, _1);
|
||||||
m_commands["icao"] = std::bind(&Client::sendIcaoCodesQueryCmd, this, _1);
|
m_commands["icao"] = std::bind(&Client::sendIcaoCodesQueryCmd, this, _1);
|
||||||
@@ -208,6 +210,38 @@ void Client::sendFreqQueryCmd(QTextStream &args)
|
|||||||
emit sendFreqQuery(callsign);
|
emit sendFreqQuery(callsign);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Client::sendFlightPlanCmd(QTextStream &args)
|
||||||
|
{
|
||||||
|
QString equipmentIcao;
|
||||||
|
QString originAirportIcao;
|
||||||
|
QString destinationAirportIcao;
|
||||||
|
QString alternateAirportIcao;
|
||||||
|
QString takeoffTimePlanned;
|
||||||
|
QString takeoffTimeActual;
|
||||||
|
int enrouteTime;
|
||||||
|
int fuelTime;
|
||||||
|
int cruiseAltitude;
|
||||||
|
int cruiseTrueAirspeed;
|
||||||
|
QString flightRulesString;
|
||||||
|
QString route;
|
||||||
|
args >> equipmentIcao >> originAirportIcao >> destinationAirportIcao >> alternateAirportIcao >> takeoffTimePlanned >> takeoffTimeActual
|
||||||
|
>> enrouteTime >> fuelTime >> cruiseAltitude >> cruiseTrueAirspeed >> flightRulesString >> route;
|
||||||
|
|
||||||
|
BlackMisc::Aviation::CFlightPlan::FlightRules flightRules;
|
||||||
|
if (flightRulesString == "IFR") { flightRules = BlackMisc::Aviation::CFlightPlan::IFR; }
|
||||||
|
else if (flightRulesString == "SVFR") { flightRules = BlackMisc::Aviation::CFlightPlan::SVFR; }
|
||||||
|
else { flightRules = BlackMisc::Aviation::CFlightPlan::VFR; }
|
||||||
|
|
||||||
|
BlackMisc::Aviation::CFlightPlan fp(equipmentIcao, originAirportIcao, destinationAirportIcao, alternateAirportIcao,
|
||||||
|
QDateTime::fromString(takeoffTimePlanned, "hhmm"), QDateTime::fromString(takeoffTimeActual, "hhmm"),
|
||||||
|
BlackMisc::PhysicalQuantities::CTime(enrouteTime, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()),
|
||||||
|
BlackMisc::PhysicalQuantities::CTime(fuelTime, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()),
|
||||||
|
BlackMisc::Aviation::CAltitude(cruiseAltitude, BlackMisc::Aviation::CAltitude::MeanSeaLevel, BlackMisc::PhysicalQuantities::CLengthUnit::ft()),
|
||||||
|
BlackMisc::PhysicalQuantities::CSpeed(cruiseTrueAirspeed, BlackMisc::PhysicalQuantities::CSpeedUnit::kts()),
|
||||||
|
flightRules, route, args.readAll());
|
||||||
|
emit sendFlightPlan(fp);
|
||||||
|
}
|
||||||
|
|
||||||
void Client::sendServerQueryCmd(QTextStream &args)
|
void Client::sendServerQueryCmd(QTextStream &args)
|
||||||
{
|
{
|
||||||
QString callsign;
|
QString callsign;
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ private: //commands
|
|||||||
void sendServerQueryCmd(QTextStream &args);
|
void sendServerQueryCmd(QTextStream &args);
|
||||||
void sendAtcQueryCmd(QTextStream &args);
|
void sendAtcQueryCmd(QTextStream &args);
|
||||||
void sendAtisQueryCmd(QTextStream &args);
|
void sendAtisQueryCmd(QTextStream &args);
|
||||||
|
void sendFlightPlanCmd(QTextStream &args);
|
||||||
void sendRealNameQueryCmd(QTextStream &args);
|
void sendRealNameQueryCmd(QTextStream &args);
|
||||||
void sendCapabilitiesQueryCmd(QTextStream &args);
|
void sendCapabilitiesQueryCmd(QTextStream &args);
|
||||||
void sendIcaoCodesQueryCmd(QTextStream &args);
|
void sendIcaoCodesQueryCmd(QTextStream &args);
|
||||||
@@ -69,6 +70,7 @@ signals: //to send to INetwork
|
|||||||
void sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
void sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
void sendFlightPlan(const BlackMisc::Aviation::CFlightPlan &fp);
|
||||||
void sendRealNameQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
void sendRealNameQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendIcaoCodesQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
void sendIcaoCodesQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#include "blackmisc/nwtextmessagelist.h"
|
#include "blackmisc/nwtextmessagelist.h"
|
||||||
#include "blackmisc/statusmessagelist.h"
|
#include "blackmisc/statusmessagelist.h"
|
||||||
#include "blackmisc/avinformationmessage.h"
|
#include "blackmisc/avinformationmessage.h"
|
||||||
|
#include "blackmisc/avflightplan.h"
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
@@ -217,7 +218,11 @@ namespace BlackCore
|
|||||||
*/
|
*/
|
||||||
virtual void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
virtual void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
|
|
||||||
// TODO virtual void sendFlightPlan(...) = 0;
|
/*!
|
||||||
|
* Send a message to file a flight plan.
|
||||||
|
* \pre Network must be connected when calling this function.
|
||||||
|
*/
|
||||||
|
virtual void sendFlightPlan(const BlackMisc::Aviation::CFlightPlan &flightPlan) = 0;
|
||||||
|
|
||||||
//! @}
|
//! @}
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -459,6 +459,40 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CNetworkVatlib::sendFlightPlan(const CFlightPlan &flightPlan)
|
||||||
|
{
|
||||||
|
Q_ASSERT_X(isConnected(), "CNetworkVatlib", "Can't send to server when disconnected");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Cvatlib_Network::FlightPlan vatlibFP;
|
||||||
|
QByteArray acType, altApt, cruiseAlt, depApt, destApt, remarks, route;
|
||||||
|
vatlibFP.acType = acType = toFSD(flightPlan.getEquipmentIcao());
|
||||||
|
vatlibFP.altApt = altApt = toFSD(flightPlan.getAlternateAirportIcao());
|
||||||
|
vatlibFP.cruiseAlt = cruiseAlt = toFSD(QByteArray::number(flightPlan.getCruiseAltitude().value(CLengthUnit::ft()), 'f', 0));
|
||||||
|
vatlibFP.depApt = depApt = toFSD(flightPlan.getOriginAirportIcao());
|
||||||
|
vatlibFP.depTimeActual = flightPlan.getTakeoffTimeActual().toUTC().toString("hhmm").toInt();
|
||||||
|
vatlibFP.depTimePlanned = flightPlan.getTakeoffTimePlanned().toUTC().toString("hhmm").toInt();
|
||||||
|
vatlibFP.destApt = destApt = toFSD(flightPlan.getDestinationAirportIcao());
|
||||||
|
vatlibFP.enrouteHrs = flightPlan.getEnrouteTime().valueRounded(CTimeUnit::h(), 0);
|
||||||
|
vatlibFP.enrouteMins = int(flightPlan.getEnrouteTime().valueRounded(CTimeUnit::hrmin(), 0)) % 60;
|
||||||
|
vatlibFP.fuelHrs = flightPlan.getFuelTime().valueRounded(CTimeUnit::h(), 0);
|
||||||
|
vatlibFP.fuelMins = int(flightPlan.getFuelTime().valueRounded(CTimeUnit::hrmin(), 0)) % 60;
|
||||||
|
vatlibFP.remarks = remarks = toFSD(QString(flightPlan.getRemarks()).replace(":", ";"));
|
||||||
|
vatlibFP.route = route = toFSD(QString(flightPlan.getRoute()).replace(" ", "."));
|
||||||
|
vatlibFP.trueCruiseSpeed = flightPlan.getCruiseTrueAirspeed().valueRounded(CSpeedUnit::kts());
|
||||||
|
switch (flightPlan.getFlightRules())
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case CFlightPlan::IFR: vatlibFP.fpRules = Cvatlib_Network::fpRuleType_IFR; break;
|
||||||
|
case CFlightPlan::VFR: vatlibFP.fpRules = Cvatlib_Network::fpRuleType_VFR; break;
|
||||||
|
case CFlightPlan::SVFR: vatlibFP.fpRules = Cvatlib_Network::fpRuleType_SVFR; break;
|
||||||
|
}
|
||||||
|
m_net->SendFlightPlan(vatlibFP);
|
||||||
|
}
|
||||||
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
|
}
|
||||||
|
|
||||||
void CNetworkVatlib::sendRealNameQuery(const BlackMisc::Aviation::CCallsign &callsign)
|
void CNetworkVatlib::sendRealNameQuery(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
Q_ASSERT_X(isConnected(), "CNetworkVatlib", "Can't send to server when disconnected");
|
Q_ASSERT_X(isConnected(), "CNetworkVatlib", "Can't send to server when disconnected");
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ namespace BlackCore
|
|||||||
// ATC slots
|
// ATC slots
|
||||||
virtual void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign) override;
|
virtual void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||||
virtual void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign) override;
|
virtual void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||||
|
virtual void sendFlightPlan(const BlackMisc::Aviation::CFlightPlan &flightPlan) override;
|
||||||
|
|
||||||
// Aircraft slots
|
// Aircraft slots
|
||||||
virtual void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign) override;
|
virtual void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||||
|
|||||||
Reference in New Issue
Block a user