mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-04 00:45:46 +08:00
start using our value classes as arguments in INetwork signals and slots
refs #81
This commit is contained in:
committed by
Mathew Sutcliffe
parent
4747b3b484
commit
535ea65a9a
@@ -20,42 +20,39 @@ Client::Client(BlackMisc::IContext &ctx)
|
|||||||
connect(m_net, &INetwork::connectionStatusDisconnected, this, &Client::connectionStatusDisconnected);
|
connect(m_net, &INetwork::connectionStatusDisconnected, this, &Client::connectionStatusDisconnected);
|
||||||
connect(m_net, &INetwork::connectionStatusError, this, &Client::connectionStatusError);
|
connect(m_net, &INetwork::connectionStatusError, this, &Client::connectionStatusError);
|
||||||
connect(m_net, &INetwork::ipQueryReplyReceived, this, &Client::ipQueryReplyReceived);
|
connect(m_net, &INetwork::ipQueryReplyReceived, this, &Client::ipQueryReplyReceived);
|
||||||
connect(m_net, &INetwork::freqQueryReplyReceived, this, &Client::freqQueryReplyReceived);
|
connect(m_net, &INetwork::frequencyQueryReplyReceived, this, &Client::freqQueryReplyReceived);
|
||||||
connect(m_net, &INetwork::serverQueryReplyReceived, this, &Client::serverQueryReplyReceived);
|
connect(m_net, &INetwork::serverQueryReplyReceived, this, &Client::serverQueryReplyReceived);
|
||||||
connect(m_net, &INetwork::atcQueryReplyReceived, this, &Client::atcQueryReplyReceived);
|
connect(m_net, &INetwork::atcQueryReplyReceived, this, &Client::atcQueryReplyReceived);
|
||||||
connect(m_net, &INetwork::atisQueryReplyReceived, this, &Client::atisQueryReplyReceived);
|
connect(m_net, &INetwork::atisQueryReplyReceived, this, &Client::atisQueryReplyReceived);
|
||||||
connect(m_net, &INetwork::nameQueryReplyReceived, this, &Client::nameQueryReplyReceived);
|
connect(m_net, &INetwork::nameQueryReplyReceived, this, &Client::nameQueryReplyReceived);
|
||||||
connect(m_net, &INetwork::capabilitiesQueryReplyReceived, this, &Client::capabilitiesQueryReplyReceived);
|
connect(m_net, &INetwork::capabilitiesQueryReplyReceived, this, &Client::capabilitiesQueryReplyReceived);
|
||||||
connect(m_net, &INetwork::freqQueryRequestReceived, this, &Client::freqQueryRequestReceived);
|
connect(m_net, &INetwork::frequencyQueryRequestReceived, this, &Client::freqQueryRequestReceived);
|
||||||
connect(m_net, &INetwork::nameQueryRequestReceived, this, &Client::nameQueryRequestReceived);
|
connect(m_net, &INetwork::nameQueryRequestReceived, this, &Client::nameQueryRequestReceived);
|
||||||
connect(m_net, &INetwork::kicked, this, &Client::kicked);
|
connect(m_net, &INetwork::kicked, this, &Client::kicked);
|
||||||
connect(m_net, &INetwork::metarReceived, this, &Client::metarReceived);
|
connect(m_net, &INetwork::metarReceived, this, &Client::metarReceived);
|
||||||
connect(m_net, &INetwork::pilotDisconnected, this, &Client::pilotDisconnected);
|
connect(m_net, &INetwork::pilotDisconnected, this, &Client::pilotDisconnected);
|
||||||
connect(m_net, &INetwork::planeInfoReceived, this, &Client::planeInfoReceived);
|
connect(m_net, &INetwork::aircraftInfoReceived, this, &Client::aircraftInfoReceived);
|
||||||
connect(m_net, &INetwork::planeInfoRequestReceived, this, &Client::planeInfoRequestReceived);
|
connect(m_net, &INetwork::aircraftInfoRequestReceived, this, &Client::aircraftInfoRequestReceived);
|
||||||
connect(m_net, &INetwork::pong, this, &Client::pong);
|
connect(m_net, &INetwork::pong, this, &Client::pong);
|
||||||
connect(m_net, &INetwork::radioTextMessageReceived, this, &Client::radioTextMessageReceived);
|
connect(m_net, &INetwork::textMessagesReceived, this, &Client::textMessagesReceived);
|
||||||
connect(m_net, &INetwork::privateTextMessageReceived, this, &Client::privateTextMessageReceived);
|
|
||||||
|
|
||||||
connect(this, &Client::setServerDetails, m_net, &INetwork::setServerDetails);
|
connect(this, &Client::setServer, m_net, &INetwork::setServer);
|
||||||
connect(this, &Client::setUserCredentials, m_net, &INetwork::setUserCredentials);
|
|
||||||
connect(this, &Client::setCallsign, m_net, &INetwork::setCallsign);
|
connect(this, &Client::setCallsign, m_net, &INetwork::setCallsign);
|
||||||
connect(this, &Client::setRealName, m_net, &INetwork::setRealName);
|
connect(this, &Client::setRealName, m_net, &INetwork::setRealName);
|
||||||
connect(this, &Client::initiateConnection, m_net, &INetwork::initiateConnection);
|
connect(this, &Client::initiateConnection, m_net, &INetwork::initiateConnection);
|
||||||
connect(this, &Client::terminateConnection, m_net, &INetwork::terminateConnection);
|
connect(this, &Client::terminateConnection, m_net, &INetwork::terminateConnection);
|
||||||
connect(this, &Client::sendPrivateTextMessage, m_net, &INetwork::sendPrivateTextMessage);
|
connect(this, &Client::sendTextMessages, m_net, &INetwork::sendTextMessages);
|
||||||
connect(this, &Client::sendRadioTextMessage, m_net, &INetwork::sendRadioTextMessage);
|
|
||||||
connect(this, &Client::sendIpQuery, m_net, &INetwork::sendIpQuery);
|
connect(this, &Client::sendIpQuery, m_net, &INetwork::sendIpQuery);
|
||||||
connect(this, &Client::sendFreqQuery, m_net, &INetwork::sendFreqQuery);
|
connect(this, &Client::sendFreqQuery, m_net, &INetwork::sendFrequencyQuery);
|
||||||
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::sendNameQuery, m_net, &INetwork::sendNameQuery);
|
connect(this, &Client::sendNameQuery, m_net, &INetwork::sendNameQuery);
|
||||||
connect(this, &Client::sendCapabilitiesQuery, m_net, &INetwork::sendCapabilitiesQuery);
|
connect(this, &Client::sendCapabilitiesQuery, m_net, &INetwork::sendCapabilitiesQuery);
|
||||||
connect(this, &Client::replyToFreqQuery, m_net, &INetwork::replyToFreqQuery);
|
connect(this, &Client::replyToFreqQuery, m_net, &INetwork::replyToFrequencyQuery);
|
||||||
connect(this, &Client::replyToNameQuery, m_net, &INetwork::replyToNameQuery);
|
connect(this, &Client::replyToNameQuery, m_net, &INetwork::replyToNameQuery);
|
||||||
connect(this, &Client::requestPlaneInfo, m_net, &INetwork::requestPlaneInfo);
|
connect(this, &Client::requestPlaneInfo, m_net, &INetwork::requestAircraftInfo);
|
||||||
connect(this, &Client::sendPlaneInfo, m_net, &INetwork::sendPlaneInfo);
|
connect(this, &Client::sendAircraftInfo, m_net, &INetwork::sendAircraftInfo);
|
||||||
connect(this, &Client::ping, m_net, &INetwork::ping);
|
connect(this, &Client::ping, m_net, &INetwork::ping);
|
||||||
connect(this, &Client::requestMetar, m_net, &INetwork::requestMetar);
|
connect(this, &Client::requestMetar, m_net, &INetwork::requestMetar);
|
||||||
connect(this, &Client::requestWeatherData, m_net, &INetwork::requestWeatherData);
|
connect(this, &Client::requestWeatherData, m_net, &INetwork::requestWeatherData);
|
||||||
@@ -64,8 +61,7 @@ Client::Client(BlackMisc::IContext &ctx)
|
|||||||
m_commands["help"] = std::bind(&Client::help, this, _1);
|
m_commands["help"] = std::bind(&Client::help, this, _1);
|
||||||
m_commands["echo"] = std::bind(&Client::echo, this, _1);
|
m_commands["echo"] = std::bind(&Client::echo, this, _1);
|
||||||
m_commands["exit"] = std::bind(&Client::exit, this, _1);
|
m_commands["exit"] = std::bind(&Client::exit, this, _1);
|
||||||
m_commands["setserver"] = std::bind(&Client::setServerDetailsCmd, this, _1);
|
m_commands["setserver"] = std::bind(&Client::setServerCmd, this, _1);
|
||||||
m_commands["setuser"] = std::bind(&Client::setUserCredentialsCmd, this, _1);
|
|
||||||
m_commands["setcallsign"] = std::bind(&Client::setCallsignCmd, this, _1);
|
m_commands["setcallsign"] = std::bind(&Client::setCallsignCmd, this, _1);
|
||||||
m_commands["setrealname"] = std::bind(&Client::setRealNameCmd, this, _1);
|
m_commands["setrealname"] = std::bind(&Client::setRealNameCmd, this, _1);
|
||||||
m_commands["initconnect"] = std::bind(&Client::initiateConnectionCmd, this, _1);
|
m_commands["initconnect"] = std::bind(&Client::initiateConnectionCmd, this, _1);
|
||||||
@@ -81,8 +77,8 @@ Client::Client(BlackMisc::IContext &ctx)
|
|||||||
m_commands["caps"] = std::bind(&Client::sendCapabilitiesQueryCmd, this, _1);
|
m_commands["caps"] = std::bind(&Client::sendCapabilitiesQueryCmd, this, _1);
|
||||||
m_commands["freqreply"] = std::bind(&Client::replyToFreqQueryCmd, this, _1);
|
m_commands["freqreply"] = std::bind(&Client::replyToFreqQueryCmd, this, _1);
|
||||||
m_commands["namereply"] = std::bind(&Client::replyToNameQueryCmd, this, _1);
|
m_commands["namereply"] = std::bind(&Client::replyToNameQueryCmd, this, _1);
|
||||||
m_commands["planeinfo"] = std::bind(&Client::requestPlaneInfoCmd, this, _1);
|
m_commands["aircraftinfo"] = std::bind(&Client::requestAircraftInfoCmd, this, _1);
|
||||||
m_commands["planeinforeply"] = std::bind(&Client::sendPlaneInfoCmd, this, _1);
|
m_commands["aircraftinforeply"] = std::bind(&Client::sendAircraftInfoCmd, this, _1);
|
||||||
m_commands["ping"] = std::bind(&Client::pingCmd, this, _1);
|
m_commands["ping"] = std::bind(&Client::pingCmd, this, _1);
|
||||||
m_commands["metar"] = std::bind(&Client::requestMetarCmd, this, _1);
|
m_commands["metar"] = std::bind(&Client::requestMetarCmd, this, _1);
|
||||||
m_commands["weather"] = std::bind(&Client::requestWeatherDataCmd, this, _1);
|
m_commands["weather"] = std::bind(&Client::requestWeatherDataCmd, this, _1);
|
||||||
@@ -130,20 +126,14 @@ void Client::exit(QTextStream &)
|
|||||||
emit quit();
|
emit quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::setServerDetailsCmd(QTextStream &args)
|
void Client::setServerCmd(QTextStream &args)
|
||||||
{
|
{
|
||||||
QString hostname;
|
QString hostname;
|
||||||
quint16 port;
|
quint16 port;
|
||||||
args >> hostname >> port;
|
|
||||||
emit setServerDetails(hostname, port);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Client::setUserCredentialsCmd(QTextStream &args)
|
|
||||||
{
|
|
||||||
QString username;
|
QString username;
|
||||||
QString password;
|
QString password;
|
||||||
args >> username >> password;
|
args >> hostname >> port >> username >> password;
|
||||||
emit setUserCredentials(username, password);
|
emit setServer(BlackMisc::Network::CServer("", "", hostname, port, BlackMisc::Network::CUser(username, "", "", password)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::setCallsignCmd(QTextStream &args)
|
void Client::setCallsignCmd(QTextStream &args)
|
||||||
@@ -173,7 +163,8 @@ void Client::sendPrivateTextMessageCmd(QTextStream &args)
|
|||||||
QString callsign;
|
QString callsign;
|
||||||
args >> callsign;
|
args >> callsign;
|
||||||
args.skipWhiteSpace();
|
args.skipWhiteSpace();
|
||||||
emit sendPrivateTextMessage(callsign, args.readAll());
|
BlackMisc::Network::CTextMessageList msgs(args.readAll(), BlackMisc::Aviation::CCallsign(callsign));
|
||||||
|
emit sendTextMessages(msgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::sendRadioTextMessageCmd(QTextStream &args)
|
void Client::sendRadioTextMessageCmd(QTextStream &args)
|
||||||
@@ -181,12 +172,13 @@ void Client::sendRadioTextMessageCmd(QTextStream &args)
|
|||||||
QString freqsBlob;
|
QString freqsBlob;
|
||||||
args >> freqsBlob;
|
args >> freqsBlob;
|
||||||
QStringList freqStrings = freqsBlob.split("|");
|
QStringList freqStrings = freqsBlob.split("|");
|
||||||
QVector<BlackMisc::PhysicalQuantities::CFrequency> freqs;
|
QList<BlackMisc::PhysicalQuantities::CFrequency> frequencies;
|
||||||
for (auto i = freqStrings.begin(); i != freqStrings.end(); ++i)
|
for (auto i = freqStrings.begin(); i != freqStrings.end(); ++i)
|
||||||
{
|
{
|
||||||
freqs.push_back(BlackMisc::PhysicalQuantities::CFrequency(i->toDouble(), BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz()));
|
frequencies.push_back(BlackMisc::PhysicalQuantities::CFrequency(i->toDouble(), BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz()));
|
||||||
}
|
}
|
||||||
emit sendRadioTextMessage(freqs, args.readAll());
|
BlackMisc::Network::CTextMessageList msgs(args.readAll(), frequencies);
|
||||||
|
emit sendTextMessages(msgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::sendIpQueryCmd(QTextStream &)
|
void Client::sendIpQueryCmd(QTextStream &)
|
||||||
@@ -253,21 +245,22 @@ void Client::replyToNameQueryCmd(QTextStream &args)
|
|||||||
emit replyToNameQuery(callsign, realname);
|
emit replyToNameQuery(callsign, realname);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::requestPlaneInfoCmd(QTextStream& args)
|
void Client::requestAircraftInfoCmd(QTextStream &args)
|
||||||
{
|
{
|
||||||
QString callsign;
|
QString callsign;
|
||||||
args >> callsign;
|
args >> callsign;
|
||||||
emit requestPlaneInfo(callsign);
|
emit requestPlaneInfo(callsign);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::sendPlaneInfoCmd(QTextStream& args)
|
void Client::sendAircraftInfoCmd(QTextStream &args)
|
||||||
{
|
{
|
||||||
QString callsign;
|
QString callsign;
|
||||||
QString acTypeICAO;
|
QString acTypeICAO;
|
||||||
QString airlineICAO;
|
QString airlineICAO;
|
||||||
QString livery;
|
QString livery;
|
||||||
args >> callsign >> acTypeICAO >> airlineICAO >> livery;
|
args >> callsign >> acTypeICAO >> airlineICAO >> livery;
|
||||||
emit sendPlaneInfo(callsign, acTypeICAO, airlineICAO, livery);
|
BlackMisc::Aviation::CAircraftIcao icao(acTypeICAO, "L2J", airlineICAO, livery, "");
|
||||||
|
emit sendAircraftInfo(callsign, icao);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::pingCmd(QTextStream &args)
|
void Client::pingCmd(QTextStream &args)
|
||||||
@@ -295,15 +288,15 @@ void Client::requestWeatherDataCmd(QTextStream &args)
|
|||||||
/************ Slots to receive signals from INetwork *************/
|
/************ Slots to receive signals from INetwork *************/
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void Client::atcPositionUpdate(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq,
|
void Client::atcPositionUpdate(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq,
|
||||||
const BlackMisc::Geo::CCoordinateGeodetic& pos, const BlackMisc::PhysicalQuantities::CLength& range)
|
const BlackMisc::Geo::CCoordinateGeodetic &pos, const BlackMisc::PhysicalQuantities::CLength &range)
|
||||||
{
|
{
|
||||||
std::cout << "POSITION " << callsign.toStdString() << " " << freq << " " << pos << " " << range << std::endl;
|
std::cout << "POSITION " << callsign << " " << freq << " " << pos << " " << range << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::atcDisconnected(const QString& callsign)
|
void Client::atcDisconnected(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
std::cout << "ATC_DISCONNECTED " << callsign.toStdString() << std::endl;
|
std::cout << "ATC_DISCONNECTED " << callsign << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::connectionStatusIdle()
|
void Client::connectionStatusIdle()
|
||||||
@@ -336,44 +329,44 @@ void Client::ipQueryReplyReceived(const QString &ip)
|
|||||||
std::cout << "IP_REPLY " << ip.toStdString() << std::endl;
|
std::cout << "IP_REPLY " << ip.toStdString() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::freqQueryReplyReceived(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq)
|
void Client::freqQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq)
|
||||||
{
|
{
|
||||||
std::cout << "FREQ_REPLY " << callsign.toStdString() << " " << freq << std::endl;
|
std::cout << "FREQ_REPLY " << callsign << " " << freq << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::serverQueryReplyReceived(const QString& callsign, const QString& hostname)
|
void Client::serverQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &hostname)
|
||||||
{
|
{
|
||||||
std::cout << "SERVER_REPLY " << callsign.toStdString() << " " << hostname.toStdString() << std::endl;
|
std::cout << "SERVER_REPLY " << callsign << " " << hostname.toStdString() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::atcQueryReplyReceived(const QString& callsign, bool isATC)
|
void Client::atcQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, bool isATC)
|
||||||
{
|
{
|
||||||
std::cout << "ATC_REPLY " << callsign.toStdString() << (isATC ? " yes" : " no") << std::endl;
|
std::cout << "ATC_REPLY " << callsign << (isATC ? " yes" : " no") << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::atisQueryReplyReceived(const QString& callsign, const QString& data)
|
void Client::atisQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &data)
|
||||||
{
|
{
|
||||||
std::cout << "ATIS_REPLY " << callsign.toStdString() << " " << data.toStdString() << std::endl;
|
std::cout << "ATIS_REPLY " << callsign << " " << data.toStdString() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::nameQueryReplyReceived(const QString& callsign, const QString& realname)
|
void Client::nameQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname)
|
||||||
{
|
{
|
||||||
std::cout << "NAME_REPLY " << callsign.toStdString() << " " << realname.toStdString() << std::endl;
|
std::cout << "NAME_REPLY " << callsign << " " << realname.toStdString() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::capabilitiesQueryReplyReceived(const QString& callsign, quint32 flags)
|
void Client::capabilitiesQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, quint32 flags)
|
||||||
{
|
{
|
||||||
std::cout << "CAPS_REPLY " << callsign.toStdString() << " " << flags << std::endl;
|
std::cout << "CAPS_REPLY " << callsign << " " << flags << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::freqQueryRequestReceived(const QString& callsign)
|
void Client::freqQueryRequestReceived(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
std::cout << "FREQ_QUERY " << callsign.toStdString() << std::endl;
|
std::cout << "FREQ_QUERY " << callsign << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::nameQueryRequestReceived(const QString& callsign)
|
void Client::nameQueryRequestReceived(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
std::cout << "NAME_QUERY " << callsign.toStdString() << std::endl;
|
std::cout << "NAME_QUERY " << callsign << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::kicked(const QString &msg)
|
void Client::kicked(const QString &msg)
|
||||||
@@ -386,38 +379,27 @@ void Client::metarReceived(const QString &data)
|
|||||||
std::cout << "METAR " << data.toStdString() << std::endl;
|
std::cout << "METAR " << data.toStdString() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::pilotDisconnected(const QString& callsign)
|
void Client::pilotDisconnected(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
std::cout << "PILOT_DISCONNECTED " << callsign.toStdString() << std::endl;
|
std::cout << "PILOT_DISCONNECTED " << callsign << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::planeInfoReceived(const QString& callsign, const QString& acTypeICAO, const QString& airlineICAO, const QString& livery)
|
void Client::aircraftInfoReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icaoData)
|
||||||
{
|
{
|
||||||
std::cout << "PLANE_INFO_REPLY " << callsign.toStdString() << " " << acTypeICAO.toStdString() << " " << airlineICAO.toStdString() << " " << livery.toStdString() << std::endl;
|
std::cout << "PLANE_INFO_REPLY " << callsign << " " << icaoData.toStdString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::planeInfoRequestReceived(const QString& callsign)
|
void Client::aircraftInfoRequestReceived(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
std::cout << "PLANE_INFO_QUERY " << callsign.toStdString() << std::endl;
|
std::cout << "PLANE_INFO_QUERY " << callsign << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::pong(const QString& callsign, const BlackMisc::PhysicalQuantities::CTime& elapsedTime)
|
void Client::pong(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CTime &elapsedTime)
|
||||||
{
|
{
|
||||||
std::cout << "PONG " << callsign.toStdString() << " " << elapsedTime << std::endl;
|
std::cout << "PONG " << callsign << " " << elapsedTime << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::radioTextMessageReceived(const QString& callsign, const QString& msg, const QVector<BlackMisc::PhysicalQuantities::CFrequency>& freqs)
|
void Client::textMessagesReceived(const BlackMisc::Network::CTextMessageList &list)
|
||||||
{
|
{
|
||||||
QString freqsBlob = freqs[0].toQString();
|
std::cout << "TEXT MESSAGE" << list.toStdString();
|
||||||
for (auto i = freqs.begin() + 1; i != freqs.end(); ++i)
|
|
||||||
{
|
|
||||||
freqsBlob.append("|");
|
|
||||||
freqsBlob.append(i->toQString());
|
|
||||||
}
|
|
||||||
std::cout << "TEXT_MSG " << callsign.toStdString() << " " << freqsBlob.toStdString() << " " << msg.toStdString() << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Client::privateTextMessageReceived(const QString& fromCallsign, const QString& toCallsign, const QString& msg)
|
|
||||||
{
|
|
||||||
std::cout << "PRIV_MSG " << fromCallsign.toStdString() << " -> " << toCallsign.toStdString() << " " << msg.toStdString() << std::endl;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,13 +27,10 @@ public slots:
|
|||||||
void command(QString line);
|
void command(QString line);
|
||||||
|
|
||||||
private: //commands
|
private: //commands
|
||||||
void requestPlaneInfoCmd(QTextStream& args);
|
|
||||||
void sendPlaneInfoCmd(QTextStream& args);
|
|
||||||
void help(QTextStream &args);
|
void help(QTextStream &args);
|
||||||
void echo(QTextStream &args);
|
void echo(QTextStream &args);
|
||||||
void exit(QTextStream &args);
|
void exit(QTextStream &args);
|
||||||
void setServerDetailsCmd(QTextStream &args);
|
void setServerCmd(QTextStream &args);
|
||||||
void setUserCredentialsCmd(QTextStream &args);
|
|
||||||
void setCallsignCmd(QTextStream &args);
|
void setCallsignCmd(QTextStream &args);
|
||||||
void setRealNameCmd(QTextStream &args);
|
void setRealNameCmd(QTextStream &args);
|
||||||
void initiateConnectionCmd(QTextStream &args);
|
void initiateConnectionCmd(QTextStream &args);
|
||||||
@@ -49,60 +46,60 @@ private: //commands
|
|||||||
void sendCapabilitiesQueryCmd(QTextStream &args);
|
void sendCapabilitiesQueryCmd(QTextStream &args);
|
||||||
void replyToFreqQueryCmd(QTextStream &args);
|
void replyToFreqQueryCmd(QTextStream &args);
|
||||||
void replyToNameQueryCmd(QTextStream &args);
|
void replyToNameQueryCmd(QTextStream &args);
|
||||||
|
void requestAircraftInfoCmd(QTextStream &args);
|
||||||
|
void sendAircraftInfoCmd(QTextStream &args);
|
||||||
void pingCmd(QTextStream &args);
|
void pingCmd(QTextStream &args);
|
||||||
void requestMetarCmd(QTextStream &args);
|
void requestMetarCmd(QTextStream &args);
|
||||||
void requestWeatherDataCmd(QTextStream &args);
|
void requestWeatherDataCmd(QTextStream &args);
|
||||||
|
|
||||||
signals: //to send to INetwork
|
signals: //to send to INetwork
|
||||||
void setCallsign(const QString& callsign);
|
void setServer(const BlackMisc::Network::CServer &server);
|
||||||
void setServerDetails(const QString &hostname, quint16 port);
|
void setCallsign(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void setUserCredentials(const QString &username, const QString &password);
|
|
||||||
void setRealName(const QString &name);
|
void setRealName(const QString &name);
|
||||||
void initiateConnection();
|
void initiateConnection();
|
||||||
void terminateConnection();
|
void terminateConnection();
|
||||||
void sendPrivateTextMessage(const QString& callsign, const QString& msg);
|
void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages);
|
||||||
void sendRadioTextMessage(const QVector<BlackMisc::PhysicalQuantities::CFrequency>& freqs, const QString& msg);
|
void sendRadioTextMessage(const QVector<BlackMisc::PhysicalQuantities::CFrequency> &freqs, const QString &msg);
|
||||||
void sendIpQuery();
|
void sendIpQuery();
|
||||||
void sendFreqQuery(const QString& callsign);
|
void sendFreqQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendServerQuery(const QString& callsign);
|
void sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendAtcQuery(const QString& callsign);
|
void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendAtisQuery(const QString& callsign);
|
void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendNameQuery(const QString& callsign);
|
void sendNameQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendCapabilitiesQuery(const QString& callsign);
|
void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void replyToFreqQuery(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq);
|
void replyToFreqQuery(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq);
|
||||||
void replyToNameQuery(const QString& callsign, const QString& realname);
|
void replyToNameQuery(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname);
|
||||||
void requestPlaneInfo(const QString& callsign);
|
void requestPlaneInfo(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void sendPlaneInfo(const QString& callsign, const QString& acTypeICAO, const QString& airlineICAO, const QString& livery);
|
void sendAircraftInfo(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icao);
|
||||||
void ping(const QString& callsign);
|
void ping(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void requestMetar(const QString& airportICAO);
|
void requestMetar(const QString &airportICAO);
|
||||||
void requestWeatherData(const QString& airportICAO);
|
void requestWeatherData(const QString &airportICAO);
|
||||||
|
|
||||||
public slots: //to receive from INetwork
|
public slots: //to receive from INetwork
|
||||||
void atcPositionUpdate(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq,
|
void atcPositionUpdate(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq,
|
||||||
const BlackMisc::Geo::CCoordinateGeodetic& pos, const BlackMisc::PhysicalQuantities::CLength& range);
|
const BlackMisc::Geo::CCoordinateGeodetic &pos, const BlackMisc::PhysicalQuantities::CLength &range);
|
||||||
void atcDisconnected(const QString& callsign);
|
void atcDisconnected(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void connectionStatusIdle();
|
void connectionStatusIdle();
|
||||||
void connectionStatusConnecting();
|
void connectionStatusConnecting();
|
||||||
void connectionStatusConnected();
|
void connectionStatusConnected();
|
||||||
void connectionStatusDisconnected();
|
void connectionStatusDisconnected();
|
||||||
void connectionStatusError();
|
void connectionStatusError();
|
||||||
void freqQueryReplyReceived(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq);
|
|
||||||
void serverQueryReplyReceived(const QString& callsign, const QString& hostname);
|
|
||||||
void atcQueryReplyReceived(const QString& callsign, bool isATC);
|
|
||||||
void atisQueryReplyReceived(const QString& callsign, const QString& data);
|
|
||||||
void nameQueryReplyReceived(const QString& callsign, const QString& realname);
|
|
||||||
void capabilitiesQueryReplyReceived(const QString& callsign, quint32 flags);
|
|
||||||
void freqQueryRequestReceived(const QString& callsign);
|
|
||||||
void nameQueryRequestReceived(const QString& callsign);
|
|
||||||
void pilotDisconnected(const QString& callsign);
|
|
||||||
void planeInfoReceived(const QString& callsign, const QString& acTypeICAO, const QString& airlineICAO, const QString& livery);
|
|
||||||
void planeInfoRequestReceived(const QString& callsign);
|
|
||||||
void pong(const QString& callsign, const BlackMisc::PhysicalQuantities::CTime& elapsedTime);
|
|
||||||
void radioTextMessageReceived(const QString& callsign, const QString& msg, const QVector<BlackMisc::PhysicalQuantities::CFrequency>& freqs);
|
|
||||||
void privateTextMessageReceived(const QString& fromCallsign, const QString& toCallsign, const QString& msg);
|
|
||||||
void ipQueryReplyReceived(const QString &ip);
|
void ipQueryReplyReceived(const QString &ip);
|
||||||
|
void freqQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq);
|
||||||
|
void serverQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &hostname);
|
||||||
|
void atcQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, bool isATC);
|
||||||
|
void atisQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &data);
|
||||||
|
void nameQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname);
|
||||||
|
void capabilitiesQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, quint32 flags);
|
||||||
|
void freqQueryRequestReceived(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
void nameQueryRequestReceived(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
void kicked(const QString &msg);
|
void kicked(const QString &msg);
|
||||||
void metarReceived(const QString &data);
|
void metarReceived(const QString &data);
|
||||||
|
void pilotDisconnected(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
void aircraftInfoReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icaoData);
|
||||||
|
void aircraftInfoRequestReceived(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
void pong(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CTime &elapsedTime);
|
||||||
|
void textMessagesReceived(const BlackMisc::Network::CTextMessageList &messages);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QMap<QString, std::function<void(QTextStream &)>> m_commands;
|
QMap<QString, std::function<void(QTextStream &)>> m_commands;
|
||||||
|
|||||||
@@ -10,10 +10,13 @@
|
|||||||
#ifndef BLACKCORE_NETWORK_H
|
#ifndef BLACKCORE_NETWORK_H
|
||||||
#define BLACKCORE_NETWORK_H
|
#define BLACKCORE_NETWORK_H
|
||||||
|
|
||||||
#include "../blackmisc/pqfrequency.h"
|
#include "blackmisc/avaircraft.h"
|
||||||
#include "../blackmisc/coordinategeodetic.h"
|
#include "blackmisc/pqfrequency.h"
|
||||||
#include "../blackmisc/pqlength.h"
|
#include "blackmisc/coordinategeodetic.h"
|
||||||
#include "../blackmisc/pqtime.h"
|
#include "blackmisc/pqlength.h"
|
||||||
|
#include "blackmisc/pqtime.h"
|
||||||
|
#include "blackmisc/nwtextmessagelist.h"
|
||||||
|
#include "blackmisc/nwserver.h"
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
@@ -44,43 +47,58 @@ namespace BlackCore
|
|||||||
};
|
};
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
virtual void setCallsign(const QString& callsign) = 0;
|
|
||||||
|
|
||||||
// Network
|
// Network
|
||||||
virtual void setServerDetails(const QString &hostname, quint16 port) = 0;
|
virtual void setServer(const BlackMisc::Network::CServer &server) = 0;
|
||||||
virtual void setUserCredentials(const QString &username, const QString &password) = 0;
|
virtual void setCallsign(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
virtual void setRealName(const QString &name) = 0;
|
virtual void setRealName(const QString &name) = 0;
|
||||||
virtual void initiateConnection() = 0;
|
virtual void initiateConnection() = 0;
|
||||||
virtual void terminateConnection() = 0;
|
virtual void terminateConnection() = 0;
|
||||||
virtual void sendPrivateTextMessage(const QString& callsign, const QString& msg) = 0;
|
virtual void ping(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
virtual void sendRadioTextMessage(const QVector<BlackMisc::PhysicalQuantities::CFrequency>& freqs, const QString& msg) = 0;
|
|
||||||
|
|
||||||
|
virtual void sendNameQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
|
virtual void replyToNameQuery(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname) = 0;
|
||||||
virtual void sendIpQuery() = 0;
|
virtual void sendIpQuery() = 0;
|
||||||
virtual void sendFreqQuery(const QString& callsign) = 0;
|
virtual void sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
virtual void sendServerQuery(const QString& callsign) = 0;
|
|
||||||
virtual void sendAtcQuery(const QString& callsign) = 0;
|
// Text messages
|
||||||
virtual void sendAtisQuery(const QString& callsign) = 0;
|
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) = 0;
|
||||||
virtual void sendNameQuery(const QString& callsign) = 0;
|
|
||||||
virtual void sendCapabilitiesQuery(const QString& callsign) = 0;
|
// ATC
|
||||||
virtual void replyToFreqQuery(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq) = 0;
|
virtual void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
virtual void replyToNameQuery(const QString& callsign, const QString& realname) = 0;
|
virtual void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
virtual void requestPlaneInfo(const QString& callsign) = 0;
|
|
||||||
//TODO virtual void setPlanePosition(...) = 0;
|
// Aircraft
|
||||||
//TODO virtual void sendFlightPlan(...) = 0;
|
virtual void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
virtual void sendPlaneInfo(const QString& callsign, const QString& acTypeICAO, const QString& airlineICAO, const QString& livery) = 0;
|
virtual void requestAircraftInfo(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
virtual void ping(const QString& callsign) = 0;
|
virtual void sendAircraftInfo(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icao) = 0;
|
||||||
|
virtual void sendFrequencyQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||||
|
virtual void replyToFrequencyQuery(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq) = 0;
|
||||||
|
// TODO virtual void setOwnAircraftPosition(...) = 0;
|
||||||
|
|
||||||
// Weather / flight plan
|
// Weather / flight plan
|
||||||
virtual void requestMetar(const QString &airportICAO) = 0;
|
virtual void requestMetar(const QString &airportICAO) = 0;
|
||||||
virtual void requestWeatherData(const QString &airportICAO) = 0;
|
virtual void requestWeatherData(const QString &airportICAO) = 0;
|
||||||
|
// TODO virtual void sendFlightPlan(...) = 0;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void atcPositionUpdate(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq,
|
// ATC
|
||||||
const BlackMisc::Geo::CCoordinateGeodetic& pos, const BlackMisc::PhysicalQuantities::CLength& range);
|
void atcPositionUpdate(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq,
|
||||||
void atcDisconnected(const QString& callsign);
|
const BlackMisc::Geo::CCoordinateGeodetic &pos, const BlackMisc::PhysicalQuantities::CLength &range);
|
||||||
//TODO void cloudDataReceived(...);
|
void atcDisconnected(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
void atcQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, bool isATC);
|
||||||
|
void atisQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &data);
|
||||||
void metarReceived(const QString &data);
|
void metarReceived(const QString &data);
|
||||||
|
|
||||||
|
// Aircraft
|
||||||
|
void pilotDisconnected(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
void aircraftInfoReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icao);
|
||||||
|
void aircraftInfoRequestReceived(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
void aircraftPositionUpdate(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation,
|
||||||
|
const BlackMisc::Aviation::CTransponder &transponder);
|
||||||
|
// TODO void aircraftInterimPositionUpdate(...);
|
||||||
|
void frequencyQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq);
|
||||||
|
void frequencyQueryRequestReceived(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
|
||||||
// Connection / Network in general
|
// Connection / Network in general
|
||||||
void kicked(const QString &msg);
|
void kicked(const QString &msg);
|
||||||
void connectionStatusIdle();
|
void connectionStatusIdle();
|
||||||
@@ -88,25 +106,21 @@ namespace BlackCore
|
|||||||
void connectionStatusConnected();
|
void connectionStatusConnected();
|
||||||
void connectionStatusDisconnected();
|
void connectionStatusDisconnected();
|
||||||
void connectionStatusError();
|
void connectionStatusError();
|
||||||
void freqQueryReplyReceived(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq);
|
void pong(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CTime &elapsedTime);
|
||||||
void serverQueryReplyReceived(const QString& callsign, const QString& hostname);
|
void capabilitiesQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, quint32 flags);
|
||||||
void atcQueryReplyReceived(const QString& callsign, bool isATC);
|
|
||||||
void atisQueryReplyReceived(const QString& callsign, const QString& data);
|
|
||||||
void nameQueryReplyReceived(const QString& callsign, const QString& realname);
|
|
||||||
void capabilitiesQueryReplyReceived(const QString& callsign, quint32 flags);
|
|
||||||
void freqQueryRequestReceived(const QString& callsign);
|
|
||||||
void nameQueryRequestReceived(const QString& callsign);
|
|
||||||
//TODO void interimPilotPositionUpdate(...);
|
|
||||||
void pilotDisconnected(const QString& callsign);
|
|
||||||
void planeInfoReceived(const QString& callsign, const QString& acTypeICAO, const QString& airlineICAO, const QString& livery);
|
|
||||||
void planeInfoRequestReceived(const QString& callsign);
|
|
||||||
//TODO void pilotPositionUpdate(...);
|
|
||||||
void pong(const QString& callsign, const BlackMisc::PhysicalQuantities::CTime& elapsedTime);
|
|
||||||
void radioTextMessageReceived(const QString& callsign, const QString& msg, const QVector<BlackMisc::PhysicalQuantities::CFrequency>& freqs);
|
|
||||||
void privateTextMessageReceived(const QString& fromCallsign, const QString& toCallsign, const QString& msg);
|
|
||||||
void ipQueryReplyReceived(const QString &ip);
|
void ipQueryReplyReceived(const QString &ip);
|
||||||
//TODO void temperatureDataReceived(...);
|
void serverQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &hostname);
|
||||||
//TODO void windDataReceived(...);
|
|
||||||
|
void nameQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname);
|
||||||
|
void nameQueryRequestReceived(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
|
||||||
|
// Text messages
|
||||||
|
void textMessagesReceived(const BlackMisc::Network::CTextMessageList &messages);
|
||||||
|
|
||||||
|
// Weather
|
||||||
|
// TODO void temperatureDataReceived(...);
|
||||||
|
// TODO void windDataReceived(...);
|
||||||
|
// TODO void cloudDataReceived(...);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -115,28 +129,26 @@ namespace BlackCore
|
|||||||
class NetworkDummy : public INetwork
|
class NetworkDummy : public INetwork
|
||||||
{
|
{
|
||||||
public: //INetwork slots overrides
|
public: //INetwork slots overrides
|
||||||
virtual void setServerDetails(const QString&, quint16) {}
|
virtual void setServer(const BlackMisc::Network::CServer &) {}
|
||||||
virtual void setUserCredentials(const QString&, const QString&) {}
|
virtual void setCallsign(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
virtual void setCallsign(const QString&) {}
|
virtual void setRealName(const QString &) {}
|
||||||
virtual void setRealName(const QString&) {}
|
|
||||||
virtual void initiateConnection() {}
|
virtual void initiateConnection() {}
|
||||||
virtual void terminateConnection() {}
|
virtual void terminateConnection() {}
|
||||||
virtual void sendPrivateTextMessage(const QString&, const QString&) {}
|
virtual void ping(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
virtual void sendRadioTextMessage(const QVector<BlackMisc::PhysicalQuantities::CFrequency>&, const QString&) {}
|
virtual void sendNameQuery(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
|
virtual void replyToNameQuery(const BlackMisc::Aviation::CCallsign &, const QString &) {}
|
||||||
virtual void sendIpQuery() {}
|
virtual void sendIpQuery() {}
|
||||||
virtual void sendFreqQuery(const QString&) {}
|
virtual void sendServerQuery(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
virtual void sendServerQuery(const QString&) {}
|
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &) {}
|
||||||
virtual void sendAtcQuery(const QString&) {}
|
virtual void sendAtcQuery(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
virtual void sendAtisQuery(const QString&) {}
|
virtual void sendAtisQuery(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
virtual void sendNameQuery(const QString&) {}
|
virtual void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
virtual void sendCapabilitiesQuery(const QString&) {}
|
virtual void requestAircraftInfo(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
virtual void replyToFreqQuery(const QString&, const BlackMisc::PhysicalQuantities::CFrequency&) {}
|
virtual void sendAircraftInfo(const BlackMisc::Aviation::CCallsign &, const BlackMisc::Aviation::CAircraftIcao &) {}
|
||||||
virtual void replyToNameQuery(const QString&, const QString&) {}
|
virtual void sendFrequencyQuery(const BlackMisc::Aviation::CCallsign &) {}
|
||||||
virtual void requestPlaneInfo(const QString&) {}
|
virtual void replyToFrequencyQuery(const BlackMisc::Aviation::CCallsign &, const BlackMisc::PhysicalQuantities::CFrequency &) {}
|
||||||
virtual void sendPlaneInfo(const QString&, const QString&, const QString&, const QString&) {}
|
virtual void requestMetar(const QString &) {}
|
||||||
virtual void ping(const QString&) {}
|
virtual void requestWeatherData(const QString &) {}
|
||||||
virtual void requestMetar(const QString&) {}
|
|
||||||
virtual void requestWeatherData(const QString&) {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
static_assert(! std::is_abstract<BlackCore::NetworkVatlib>::value, "Must implement all pure virtuals");
|
static_assert(! std::is_abstract<BlackCore::NetworkVatlib>::value, "Must implement all pure virtuals");
|
||||||
|
static_assert(! std::is_abstract<BlackCore::NetworkDummy>::value, "Must implement all pure virtuals");
|
||||||
|
|
||||||
//TODO just placeholders to allow this to compile
|
//TODO just placeholders to allow this to compile
|
||||||
#define CLIENT_NAME_VERSION "BlackBox 0.1"
|
#define CLIENT_NAME_VERSION "BlackBox 0.1"
|
||||||
@@ -23,6 +24,8 @@ namespace BlackCore
|
|||||||
|
|
||||||
using namespace BlackMisc::PhysicalQuantities;
|
using namespace BlackMisc::PhysicalQuantities;
|
||||||
using namespace BlackMisc::Geo;
|
using namespace BlackMisc::Geo;
|
||||||
|
using namespace BlackMisc::Aviation;
|
||||||
|
using namespace BlackMisc::Network;
|
||||||
|
|
||||||
void exceptionDispatcher(const char* caller);
|
void exceptionDispatcher(const char* caller);
|
||||||
|
|
||||||
@@ -112,6 +115,10 @@ namespace BlackCore
|
|||||||
return m_fsdTextCodec->fromUnicode(qstr);
|
return m_fsdTextCodec->fromUnicode(qstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QByteArray NetworkVatlib::toFSD(const BlackMisc::Aviation::CCallsign &callsign) const
|
||||||
|
{
|
||||||
|
return toFSD(callsign.getStringAsSet());
|
||||||
|
}
|
||||||
|
|
||||||
QString NetworkVatlib::fromFSD(const char *cstr) const
|
QString NetworkVatlib::fromFSD(const char *cstr) const
|
||||||
{
|
{
|
||||||
@@ -147,23 +154,13 @@ namespace BlackCore
|
|||||||
/********************************** INetwork slots ************************************/
|
/********************************** INetwork slots ************************************/
|
||||||
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
|
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
|
||||||
|
|
||||||
void NetworkVatlib::setServerDetails(const QString &host, quint16 port)
|
void NetworkVatlib::setServer(const CServer &server)
|
||||||
{
|
{
|
||||||
Q_ASSERT_X(isDisconnected(), "NetworkVatlib", "Can't change server details while still connected");
|
Q_ASSERT_X(isDisconnected(), "NetworkVatlib", "Can't change server details while still connected");
|
||||||
|
this->m_server = server;
|
||||||
m_serverHost = host;
|
|
||||||
m_serverPort = port;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::setUserCredentials(const QString &username, const QString &password)
|
void NetworkVatlib::setCallsign(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
|
||||||
Q_ASSERT_X(isDisconnected(), "NetworkVatlib", "Can't change login details while still connected");
|
|
||||||
|
|
||||||
m_username = username;
|
|
||||||
m_password = password;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkVatlib::setCallsign(const QString& callsign)
|
|
||||||
{
|
{
|
||||||
Q_ASSERT_X(isDisconnected(), "NetworkVatlib", "Can't change callsign while still connected");
|
Q_ASSERT_X(isDisconnected(), "NetworkVatlib", "Can't change callsign while still connected");
|
||||||
|
|
||||||
@@ -189,8 +186,8 @@ namespace BlackCore
|
|||||||
info.name = m_realname.data();
|
info.name = m_realname.data();
|
||||||
info.rating = Cvatlib_Network::pilotRating_Student; //TODO
|
info.rating = Cvatlib_Network::pilotRating_Student; //TODO
|
||||||
info.sim = Cvatlib_Network::simType_XPlane; //TODO
|
info.sim = Cvatlib_Network::simType_XPlane; //TODO
|
||||||
m_net->SetPilotLoginInfo(toFSD(m_serverHost).data(), m_serverPort,
|
m_net->SetPilotLoginInfo(toFSD(m_server.getAddress()).data(), m_server.getPort(),
|
||||||
toFSD(m_username).data(), toFSD(m_password).data(), info);
|
toFSD(m_server.getUser().getId()).data(), toFSD(m_server.getUser().getPassword()).data(), info);
|
||||||
m_net->ConnectAndLogon();
|
m_net->ConnectAndLogon();
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
@@ -209,25 +206,28 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::sendPrivateTextMessage(const QString& callsign, const QString& msg)
|
void NetworkVatlib::sendTextMessages(const BlackMisc::Network::CTextMessageList &messages)
|
||||||
{
|
{
|
||||||
|
if (messages.isEmpty()) return;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_net->SendPrivateTextMessage(toFSD(callsign), toFSD(msg));
|
CTextMessageList privateMessages = messages.getPrivateMessages();
|
||||||
}
|
foreach(BlackMisc::Network::CTextMessage message, privateMessages)
|
||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkVatlib::sendRadioTextMessage(const QVector<CFrequency>& freqs, const QString& msg)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
std::vector<INT> freqsVec;
|
|
||||||
for (int i = 0; i < freqs.size(); ++i)
|
|
||||||
{
|
{
|
||||||
freqsVec.push_back(freqs[i].value(CFrequencyUnit::kHz()));
|
if (message.getToCallsign().isEmpty()) continue;
|
||||||
|
m_net->SendPrivateTextMessage(toFSD(message.getToCallsign()), toFSD(message.getMessage()));
|
||||||
|
}
|
||||||
|
CTextMessageList radioMessages = messages.getRadioMessages();
|
||||||
|
if (radioMessages.isEmpty()) return;
|
||||||
|
foreach(BlackMisc::Network::CTextMessage message, radioMessages)
|
||||||
|
{
|
||||||
|
// I could send the same message to n frequencies in one step
|
||||||
|
// if this is really required, I need to group by message
|
||||||
|
// currently I send individual messages
|
||||||
|
std::vector<INT> freqsVec;
|
||||||
|
freqsVec.push_back(message.getFrequency().value(CFrequencyUnit::kHz()));
|
||||||
|
m_net->SendRadioTextMessage(freqsVec.size(), freqsVec.data(), toFSD(message.getMessage()));
|
||||||
}
|
}
|
||||||
m_net->SendRadioTextMessage(freqsVec.size(), freqsVec.data(), toFSD(msg));
|
|
||||||
}
|
}
|
||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
@@ -241,7 +241,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::sendFreqQuery(const QString& callsign)
|
void NetworkVatlib::sendFrequencyQuery(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -250,7 +250,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::sendServerQuery(const QString& callsign)
|
void NetworkVatlib::sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -259,7 +259,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::sendAtcQuery(const QString& callsign)
|
void NetworkVatlib::sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -268,7 +268,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::sendAtisQuery(const QString& callsign)
|
void NetworkVatlib::sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -277,7 +277,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::sendNameQuery(const QString& callsign)
|
void NetworkVatlib::sendNameQuery(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -286,7 +286,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::sendCapabilitiesQuery(const QString& callsign)
|
void NetworkVatlib::sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -295,7 +295,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::replyToFreqQuery(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq)
|
void NetworkVatlib::replyToFrequencyQuery(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -304,7 +304,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::replyToNameQuery(const QString& callsign, const QString& realname)
|
void NetworkVatlib::replyToNameQuery(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -313,7 +313,7 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::requestPlaneInfo(const QString& callsign)
|
void NetworkVatlib::requestAircraftInfo(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -322,36 +322,36 @@ namespace BlackCore
|
|||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::sendPlaneInfo(const QString& callsign, const QString& acTypeICAO, const QString& airlineICAO, const QString& livery)
|
void NetworkVatlib::sendAircraftInfo(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icao)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const QByteArray acTypeICAObytes = toFSD(acTypeICAO);
|
const QByteArray acTypeICAObytes = toFSD(icao.getDesignator());
|
||||||
const QByteArray airlineICAObytes = toFSD(airlineICAO);
|
const QByteArray airlineICAObytes = toFSD(icao.getAirline());
|
||||||
const QByteArray liverybytes = toFSD(livery);
|
const QByteArray liverybytes = toFSD(icao.getLivery());
|
||||||
std::vector<const char*> keysValues;
|
std::vector<const char *> keysValues;
|
||||||
if (! acTypeICAO.isEmpty())
|
if (!icao.getDesignator().isEmpty())
|
||||||
{
|
{
|
||||||
keysValues.push_back(m_net->acinfo_Equipment);
|
keysValues.push_back(m_net->acinfo_Equipment);
|
||||||
keysValues.push_back(acTypeICAObytes);
|
keysValues.push_back(acTypeICAObytes);
|
||||||
}
|
}
|
||||||
if (! airlineICAO.isEmpty())
|
if (icao.hasAirline())
|
||||||
{
|
{
|
||||||
keysValues.push_back(m_net->acinfo_Airline);
|
keysValues.push_back(m_net->acinfo_Airline);
|
||||||
keysValues.push_back(airlineICAObytes);
|
keysValues.push_back(airlineICAObytes);
|
||||||
}
|
}
|
||||||
if (! livery.isEmpty())
|
if (icao.hasLivery())
|
||||||
{
|
{
|
||||||
keysValues.push_back(m_net->acinfo_Livery);
|
keysValues.push_back(m_net->acinfo_Livery);
|
||||||
keysValues.push_back(liverybytes);
|
keysValues.push_back(liverybytes);
|
||||||
}
|
}
|
||||||
keysValues.push_back(0);
|
keysValues.push_back(nullptr);
|
||||||
m_net->SendPlaneInfo(toFSD(callsign), keysValues.data());
|
m_net->SendPlaneInfo(toFSD(callsign), keysValues.data());
|
||||||
}
|
}
|
||||||
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::ping(const QString& callsign)
|
void NetworkVatlib::ping(const BlackMisc::Aviation::CCallsign &callsign)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -387,7 +387,7 @@ namespace BlackCore
|
|||||||
return static_cast<NetworkVatlib *>(cbvar);
|
return static_cast<NetworkVatlib *>(cbvar);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onConnectionStatusChanged(Cvatlib_Network *, Cvatlib_Network::connStatus oldStatus, Cvatlib_Network::connStatus newStatus, void *cbvar)
|
void NetworkVatlib::onConnectionStatusChanged(Cvatlib_Network *, Cvatlib_Network::connStatus, Cvatlib_Network::connStatus newStatus, void *cbvar)
|
||||||
{
|
{
|
||||||
cbvar_cast(cbvar)->m_status = newStatus;
|
cbvar_cast(cbvar)->m_status = newStatus;
|
||||||
switch (newStatus)
|
switch (newStatus)
|
||||||
@@ -402,17 +402,19 @@ namespace BlackCore
|
|||||||
|
|
||||||
void NetworkVatlib::onTextMessageReceived(Cvatlib_Network *, const char *from, const char *to, const char *msg, void *cbvar)
|
void NetworkVatlib::onTextMessageReceived(Cvatlib_Network *, const char *from, const char *to, const char *msg, void *cbvar)
|
||||||
{
|
{
|
||||||
emit cbvar_cast(cbvar)->privateTextMessageReceived(cbvar_cast(cbvar)->fromFSD(from), cbvar_cast(cbvar)->fromFSD(to), cbvar_cast(cbvar)->fromFSD(msg));
|
BlackMisc::Network::CTextMessageList messages(cbvar_cast(cbvar)->fromFSD(msg), CCallsign(cbvar_cast(cbvar)->fromFSD(from)), CCallsign(cbvar_cast(cbvar)->fromFSD(to)));
|
||||||
|
emit cbvar_cast(cbvar)->textMessagesReceived(messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onRadioMessageReceived(Cvatlib_Network *, const char *from, INT numFreq, INT *freqList, const char *msg, void *cbvar)
|
void NetworkVatlib::onRadioMessageReceived(Cvatlib_Network *, const char *from, INT numFreq, INT *freqList, const char *msg, void *cbvar)
|
||||||
{
|
{
|
||||||
QVector<CFrequency> freqs;
|
QList<CFrequency> frequencies;
|
||||||
for (int i = 0; i < numFreq; ++i)
|
for (int i = 0; i < numFreq; ++i)
|
||||||
{
|
{
|
||||||
freqs.push_back(CFrequency(freqList[i], CFrequencyUnit::kHz()));
|
frequencies.push_back(CFrequency(freqList[i], CFrequencyUnit::kHz()));
|
||||||
}
|
}
|
||||||
emit cbvar_cast(cbvar)->radioTextMessageReceived(cbvar_cast(cbvar)->fromFSD(from), cbvar_cast(cbvar)->fromFSD(msg), freqs);
|
BlackMisc::Network::CTextMessageList messages(cbvar_cast(cbvar)->fromFSD(msg), frequencies, CCallsign(cbvar_cast(cbvar)->fromFSD(from)));
|
||||||
|
emit cbvar_cast(cbvar)->textMessagesReceived(messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onPilotDisconnected(Cvatlib_Network *, const char *callsign, void *cbvar)
|
void NetworkVatlib::onPilotDisconnected(Cvatlib_Network *, const char *callsign, void *cbvar)
|
||||||
@@ -420,25 +422,56 @@ namespace BlackCore
|
|||||||
emit cbvar_cast(cbvar)->pilotDisconnected(cbvar_cast(cbvar)->fromFSD(callsign));
|
emit cbvar_cast(cbvar)->pilotDisconnected(cbvar_cast(cbvar)->fromFSD(callsign));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onControllerDisconnected(Cvatlib_Network*, const char* callsign, void* cbvar)
|
void NetworkVatlib::onControllerDisconnected(Cvatlib_Network *, const char *callsign, void *cbvar)
|
||||||
{
|
{
|
||||||
emit cbvar_cast(cbvar)->atcDisconnected(cbvar_cast(cbvar)->fromFSD(callsign));
|
emit cbvar_cast(cbvar)->atcDisconnected(cbvar_cast(cbvar)->fromFSD(callsign));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onPilotPositionUpdate(Cvatlib_Network*, const char* /*callsign*/, Cvatlib_Network::PilotPosUpdate /*pos*/, void* /*cbvar*/)
|
void NetworkVatlib::onPilotPositionUpdate(Cvatlib_Network *, const char *callsignChar , Cvatlib_Network::PilotPosUpdate pos, void *cbvar)
|
||||||
|
{
|
||||||
|
const CCallsign callsign(callsignChar);
|
||||||
|
const CAircraftSituation situation(
|
||||||
|
CCoordinateGeodetic(pos.lat, pos.lon, 0.0),
|
||||||
|
CAltitude(pos.altTrue, CAltitude::AboveGround, CLengthUnit::ft()),
|
||||||
|
CHeading(pos.heading, CHeading::True, CAngleUnit::deg()),
|
||||||
|
CAngle(pos.pitch, CAngleUnit::deg()),
|
||||||
|
CAngle(pos.bank, CAngleUnit::deg()),
|
||||||
|
CSpeed(pos.groundSpeed, CSpeedUnit::kts())
|
||||||
|
);
|
||||||
|
|
||||||
|
QString tn("transponder ");
|
||||||
|
tn.append(callsign.asString());
|
||||||
|
CTransponder::TransponderMode mode = CTransponder::ModeS;
|
||||||
|
switch (pos.xpdrMode)
|
||||||
|
{
|
||||||
|
case Cvatlib_Network::xpndrMode_Normal:
|
||||||
|
mode = CTransponder::ModeC;
|
||||||
|
break;
|
||||||
|
case Cvatlib_Network::xpndrMode_Standby:
|
||||||
|
mode = CTransponder::ModeS;
|
||||||
|
break;
|
||||||
|
case Cvatlib_Network::xpndrMode_Ident:
|
||||||
|
mode = CTransponder::StateIdent;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mode = CTransponder::ModeC;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
CTransponder transponder(tn, pos.xpdrCode, mode);
|
||||||
|
emit cbvar_cast(cbvar)->aircraftPositionUpdate(callsign, situation, transponder);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetworkVatlib::onInterimPilotPositionUpdate(Cvatlib_Network *, const char * /** callsign **/, Cvatlib_Network::PilotPosUpdate /** pos **/, void * /** cbvar **/)
|
||||||
{
|
{
|
||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onInterimPilotPositionUpdate(Cvatlib_Network*, const char* /*callsign*/, Cvatlib_Network::PilotPosUpdate /*pos*/, void* /*cbvar*/)
|
void NetworkVatlib::onAtcPositionUpdate(Cvatlib_Network *, const char *callsign, Cvatlib_Network::ATCPosUpdate pos, void *cbvar)
|
||||||
{
|
{
|
||||||
//TODO
|
CFrequency freq(pos.frequency, CFrequencyUnit::kHz());
|
||||||
}
|
freq.switchUnit(CFrequencyUnit::MHz()); // we would not need to bother, but this makes it easier to identify
|
||||||
|
emit cbvar_cast(cbvar)->atcPositionUpdate(cbvar_cast(cbvar)->fromFSD(callsign), freq,
|
||||||
void NetworkVatlib::onAtcPositionUpdate(Cvatlib_Network*, const char* callsign, Cvatlib_Network::ATCPosUpdate pos, void* cbvar)
|
CCoordinateGeodetic(pos.lat, pos.lon, 0), CLength(pos.visibleRange, CLengthUnit::NM()));
|
||||||
{
|
|
||||||
emit cbvar_cast(cbvar)->atcPositionUpdate(cbvar_cast(cbvar)->fromFSD(callsign), CFrequency(pos.frequency, CFrequencyUnit::kHz()),
|
|
||||||
CCoordinateGeodetic(pos.lat, pos.lon, 0), CLength(pos.visibleRange, CLengthUnit::NM()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onKicked(Cvatlib_Network *, const char *reason, void *cbvar)
|
void NetworkVatlib::onKicked(Cvatlib_Network *, const char *reason, void *cbvar)
|
||||||
@@ -460,7 +493,7 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case Cvatlib_Network::infoQuery_Freq: emit cbvar_cast(cbvar)->freqQueryRequestReceived(cbvar_cast(cbvar)->fromFSD(callsign)); break;
|
case Cvatlib_Network::infoQuery_Freq: emit cbvar_cast(cbvar)->frequencyQueryRequestReceived(cbvar_cast(cbvar)->fromFSD(callsign)); break;
|
||||||
case Cvatlib_Network::infoQuery_Name: emit cbvar_cast(cbvar)->nameQueryRequestReceived(cbvar_cast(cbvar)->fromFSD(callsign)); break;
|
case Cvatlib_Network::infoQuery_Name: emit cbvar_cast(cbvar)->nameQueryRequestReceived(cbvar_cast(cbvar)->fromFSD(callsign)); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -469,7 +502,7 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case Cvatlib_Network::infoQuery_Freq: emit cbvar_cast(cbvar)->freqQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(callsign), CFrequency(cbvar_cast(cbvar)->fromFSD(data).toFloat(), CFrequencyUnit::MHz())); break;
|
case Cvatlib_Network::infoQuery_Freq: emit cbvar_cast(cbvar)->frequencyQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(callsign), CFrequency(cbvar_cast(cbvar)->fromFSD(data).toFloat(), CFrequencyUnit::MHz())); break;
|
||||||
case Cvatlib_Network::infoQuery_Server: emit cbvar_cast(cbvar)->serverQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(callsign), cbvar_cast(cbvar)->fromFSD(data)); break;
|
case Cvatlib_Network::infoQuery_Server: emit cbvar_cast(cbvar)->serverQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(callsign), cbvar_cast(cbvar)->fromFSD(data)); break;
|
||||||
case Cvatlib_Network::infoQuery_ATC: emit cbvar_cast(cbvar)->atcQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(data2), *data == 'Y'); break;
|
case Cvatlib_Network::infoQuery_ATC: emit cbvar_cast(cbvar)->atcQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(data2), *data == 'Y'); break;
|
||||||
case Cvatlib_Network::infoQuery_Name: emit cbvar_cast(cbvar)->nameQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(callsign), cbvar_cast(cbvar)->fromFSD(data)); break;
|
case Cvatlib_Network::infoQuery_Name: emit cbvar_cast(cbvar)->nameQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(callsign), cbvar_cast(cbvar)->fromFSD(data)); break;
|
||||||
@@ -500,7 +533,7 @@ namespace BlackCore
|
|||||||
emit cbvar_cast(cbvar)->atisQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(callsign), cbvar_cast(cbvar)->fromFSD(data));
|
emit cbvar_cast(cbvar)->atisQueryReplyReceived(cbvar_cast(cbvar)->fromFSD(callsign), cbvar_cast(cbvar)->fromFSD(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onTemperatureDataReceived(Cvatlib_Network*, Cvatlib_Network::TempLayer /*layers*/[4], INT /*pressure*/, void* /*cbvar*/)
|
void NetworkVatlib::onTemperatureDataReceived(Cvatlib_Network *, Cvatlib_Network::TempLayer /** layers **/ [4], INT /** pressure **/, void * /** cbvar **/)
|
||||||
{
|
{
|
||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
@@ -538,37 +571,34 @@ namespace BlackCore
|
|||||||
emit cbvar_cast(cbvar)->terminate();
|
emit cbvar_cast(cbvar)->terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onWindDataReceived(Cvatlib_Network*, Cvatlib_Network::WindLayer /*layers*/[4], void* /*cbvar*/)
|
void NetworkVatlib::onWindDataReceived(Cvatlib_Network *, Cvatlib_Network::WindLayer /** layers **/[4], void * /** cbvar **/)
|
||||||
{
|
{
|
||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onCloudDataReceived(Cvatlib_Network*, Cvatlib_Network::CloudLayer /*layers*/[2], Cvatlib_Network::StormLayer /*storm*/, float /*vis*/, void* /*cbvar*/)
|
void NetworkVatlib::onCloudDataReceived(Cvatlib_Network *, Cvatlib_Network::CloudLayer /** layers **/ [2], Cvatlib_Network::StormLayer /** storm **/, float /** vis **/, void * /** cbvar **/)
|
||||||
{
|
{
|
||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onPilotInfoRequestReceived(Cvatlib_Network *, const char *callsign, void *cbvar)
|
void NetworkVatlib::onPilotInfoRequestReceived(Cvatlib_Network *, const char *callsign, void *cbvar)
|
||||||
{
|
{
|
||||||
emit cbvar_cast(cbvar)->planeInfoRequestReceived(cbvar_cast(cbvar)->fromFSD(callsign));
|
emit cbvar_cast(cbvar)->aircraftInfoRequestReceived(cbvar_cast(cbvar)->fromFSD(callsign));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkVatlib::onPilotInfoReceived(Cvatlib_Network *net, const char *callsign, const char **keysValues, void *cbvar)
|
void NetworkVatlib::onPilotInfoReceived(Cvatlib_Network *net, const char *callsign, const char **keysValues, void *cbvar)
|
||||||
{
|
{
|
||||||
const char* acTypeICAO = nullptr;
|
BlackMisc::Aviation::CAircraftIcao icao;
|
||||||
const char* airlineICAO = nullptr;
|
|
||||||
const char* livery = nullptr;
|
|
||||||
while (*keysValues)
|
while (*keysValues)
|
||||||
{
|
{
|
||||||
QString key (*keysValues);
|
QString key(*keysValues);
|
||||||
keysValues++;
|
keysValues++;
|
||||||
if (key == net->acinfo_Equipment) { acTypeICAO = *keysValues; }
|
if (key == net->acinfo_Equipment) { icao.setDesignator(*keysValues); }
|
||||||
else if (key == net->acinfo_Airline) { airlineICAO = *keysValues; }
|
else if (key == net->acinfo_Airline) { icao.setAirline(*keysValues); }
|
||||||
else if (key == net->acinfo_Livery) { livery = *keysValues; }
|
else if (key == net->acinfo_Livery) { icao.setLivery(*keysValues); }
|
||||||
keysValues++;
|
keysValues++;
|
||||||
}
|
}
|
||||||
emit cbvar_cast(cbvar)->planeInfoReceived(cbvar_cast(cbvar)->fromFSD(callsign), cbvar_cast(cbvar)->fromFSD(acTypeICAO),
|
emit cbvar_cast(cbvar)->aircraftInfoReceived(cbvar_cast(cbvar)->fromFSD(callsign), icao);
|
||||||
cbvar_cast(cbvar)->fromFSD(airlineICAO), cbvar_cast(cbvar)->fromFSD(livery));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#define BLACKCORE_NETWORK_VATLIB_H
|
#define BLACKCORE_NETWORK_VATLIB_H
|
||||||
|
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
|
#include "blackmisc/avallclasses.h"
|
||||||
#include <vatlib/vatlib.h>
|
#include <vatlib/vatlib.h>
|
||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
#include <QBasicTimer>
|
#include <QBasicTimer>
|
||||||
@@ -34,31 +35,33 @@ namespace BlackCore
|
|||||||
public: // INetwork slots overrides
|
public: // INetwork slots overrides
|
||||||
|
|
||||||
// Network
|
// Network
|
||||||
virtual void setCallsign(const QString& callsign);
|
virtual void setServer(const BlackMisc::Network::CServer &server);
|
||||||
virtual void setServerDetails(const QString &hostname, quint16 port);
|
virtual void setCallsign(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
virtual void setUserCredentials(const QString &username, const QString &password);
|
|
||||||
virtual void setRealName(const QString &name);
|
virtual void setRealName(const QString &name);
|
||||||
virtual void initiateConnection();
|
virtual void initiateConnection();
|
||||||
virtual void terminateConnection();
|
virtual void terminateConnection();
|
||||||
virtual void sendPrivateTextMessage(const QString& callsign, const QString& msg);
|
|
||||||
virtual void sendRadioTextMessage(const QVector<BlackMisc::PhysicalQuantities::CFrequency>& freqs, const QString& msg);
|
|
||||||
virtual void sendIpQuery();
|
virtual void sendIpQuery();
|
||||||
virtual void sendFreqQuery(const QString& callsign);
|
virtual void sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
virtual void sendServerQuery(const QString& callsign);
|
virtual void sendNameQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
virtual void sendAtcQuery(const QString& callsign);
|
virtual void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
virtual void sendAtisQuery(const QString& callsign);
|
virtual void replyToNameQuery(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname);
|
||||||
virtual void sendNameQuery(const QString& callsign);
|
virtual void ping(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
virtual void sendCapabilitiesQuery(const QString& callsign);
|
|
||||||
virtual void replyToFreqQuery(const QString& callsign, const BlackMisc::PhysicalQuantities::CFrequency& freq);
|
|
||||||
virtual void replyToNameQuery(const QString& callsign, const QString& realname);
|
|
||||||
virtual void requestPlaneInfo(const QString& callsign);
|
|
||||||
virtual void sendPlaneInfo(const QString& callsign, const QString& acTypeICAO, const QString& airlineICAO, const QString& livery);
|
|
||||||
virtual void ping(const QString& callsign);
|
|
||||||
// Weather
|
// Weather
|
||||||
virtual void requestWeatherData(const QString &airportICAO);
|
virtual void requestWeatherData(const QString &airportICAO);
|
||||||
|
|
||||||
|
// Text messages
|
||||||
|
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &messages);
|
||||||
|
|
||||||
|
// Aircraft
|
||||||
|
virtual void requestAircraftInfo(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
virtual void sendAircraftInfo(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icao);
|
||||||
|
virtual void sendFrequencyQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
virtual void replyToFrequencyQuery(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq);
|
||||||
|
|
||||||
// ATC
|
// ATC
|
||||||
|
virtual void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
virtual void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
virtual void requestMetar(const QString &airportICAO);
|
virtual void requestMetar(const QString &airportICAO);
|
||||||
|
|
||||||
private: //shimlib callbacks
|
private: //shimlib callbacks
|
||||||
@@ -86,7 +89,8 @@ namespace BlackCore
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QByteArray toFSD(QString qstr) const;
|
QByteArray toFSD(QString qstr) const;
|
||||||
QString fromFSD(const char* cstr) const;
|
QByteArray toFSD(const BlackMisc::Aviation::CCallsign &callsign) const;
|
||||||
|
QString fromFSD(const char *cstr) const;
|
||||||
bool isDisconnected() const { return m_status == Cvatlib_Network::connStatus_Idle || m_status == Cvatlib_Network::connStatus_Disconnected; }
|
bool isDisconnected() const { return m_status == Cvatlib_Network::connStatus_Idle || m_status == Cvatlib_Network::connStatus_Disconnected; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -105,13 +109,10 @@ namespace BlackCore
|
|||||||
Cvatlib_Network::connStatus m_status;
|
Cvatlib_Network::connStatus m_status;
|
||||||
|
|
||||||
QBasicTimer m_timer;
|
QBasicTimer m_timer;
|
||||||
|
BlackMisc::Network::CServer m_server;
|
||||||
static int const c_updateIntervalMillisecs = 100;
|
static int const c_updateIntervalMillisecs = 100;
|
||||||
static int const c_logoffTimeoutSeconds = 5;
|
static int const c_logoffTimeoutSeconds = 5;
|
||||||
|
|
||||||
QString m_serverHost;
|
|
||||||
quint16 m_serverPort;
|
|
||||||
QString m_username;
|
|
||||||
QString m_password;
|
|
||||||
QByteArray m_callsign;
|
QByteArray m_callsign;
|
||||||
QByteArray m_realname;
|
QByteArray m_realname;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user