mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 10:55:32 +08:00
Issue #94 Add server capability flag for VISUPDATE
This commit is contained in:
@@ -290,7 +290,7 @@ namespace BlackCore::Context
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_fsdClient->setClientIdAndKey(static_cast<quint16>(clientId), clientKey.toLocal8Bit());
|
m_fsdClient->setClientIdAndKey(static_cast<quint16>(clientId), clientKey.toLocal8Bit());
|
||||||
m_fsdClient->setClientCapabilities(Capabilities::AircraftInfo | Capabilities::FastPos | Capabilities::AtcInfo | Capabilities::AircraftConfig);
|
m_fsdClient->setClientCapabilities(Capabilities::AircraftInfo | Capabilities::FastPos | Capabilities::VisPos | Capabilities::AtcInfo | Capabilities::AircraftConfig);
|
||||||
m_fsdClient->setServer(server);
|
m_fsdClient->setServer(server);
|
||||||
|
|
||||||
m_fsdClient->setPilotRating(PilotRating::Student);
|
m_fsdClient->setPilotRating(PilotRating::Student);
|
||||||
|
|||||||
@@ -166,11 +166,14 @@ namespace BlackCore::Fsd
|
|||||||
/*! Can send/receive fast position updates (pilot only). */
|
/*! Can send/receive fast position updates (pilot only). */
|
||||||
FastPos = (1 << 6),
|
FastPos = (1 << 6),
|
||||||
|
|
||||||
|
/*! Can send/receive visual position updates (pilot only). */
|
||||||
|
VisPos = (1 << 7),
|
||||||
|
|
||||||
/*! Stealth mode */
|
/*! Stealth mode */
|
||||||
Stealth = (1 << 7),
|
Stealth = (1 << 8),
|
||||||
|
|
||||||
/*! Aircraft Config */
|
/*! Aircraft Config */
|
||||||
AircraftConfig = (1 << 8)
|
AircraftConfig = (1 << 9)
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Operators
|
//! Operators
|
||||||
|
|||||||
@@ -854,6 +854,7 @@ namespace BlackCore::Fsd
|
|||||||
if (m_capabilities & Capabilities::OngoingCoord) responseData.push_back(toQString(Capabilities::OngoingCoord) % "=1");
|
if (m_capabilities & Capabilities::OngoingCoord) responseData.push_back(toQString(Capabilities::OngoingCoord) % "=1");
|
||||||
if (m_capabilities & Capabilities::InterminPos) responseData.push_back(toQString(Capabilities::InterminPos) % "=1");
|
if (m_capabilities & Capabilities::InterminPos) responseData.push_back(toQString(Capabilities::InterminPos) % "=1");
|
||||||
if (m_capabilities & Capabilities::FastPos) responseData.push_back(toQString(Capabilities::FastPos) % "=1");
|
if (m_capabilities & Capabilities::FastPos) responseData.push_back(toQString(Capabilities::FastPos) % "=1");
|
||||||
|
if (m_capabilities & Capabilities::VisPos) responseData.push_back(toQString(Capabilities::VisPos) % "=1");
|
||||||
if (m_capabilities & Capabilities::Stealth) responseData.push_back(toQString(Capabilities::Stealth) % "=1");
|
if (m_capabilities & Capabilities::Stealth) responseData.push_back(toQString(Capabilities::Stealth) % "=1");
|
||||||
if (m_capabilities & Capabilities::AircraftConfig) responseData.push_back(toQString(Capabilities::AircraftConfig) % "=1");
|
if (m_capabilities & Capabilities::AircraftConfig) responseData.push_back(toQString(Capabilities::AircraftConfig) % "=1");
|
||||||
const ClientResponse clientResponse(ownCallsign, receiver, ClientQueryType::Capabilities, responseData);
|
const ClientResponse clientResponse(ownCallsign, receiver, ClientQueryType::Capabilities, responseData);
|
||||||
@@ -1390,6 +1391,7 @@ namespace BlackCore::Fsd
|
|||||||
CClient::Capabilities caps = CClient::None;
|
CClient::Capabilities caps = CClient::None;
|
||||||
if (capabilities & Capabilities::AtcInfo) { caps |= CClient::FsdAtisCanBeReceived; }
|
if (capabilities & Capabilities::AtcInfo) { caps |= CClient::FsdAtisCanBeReceived; }
|
||||||
if (capabilities & Capabilities::FastPos) { caps |= CClient::FsdWithInterimPositions; }
|
if (capabilities & Capabilities::FastPos) { caps |= CClient::FsdWithInterimPositions; }
|
||||||
|
if (capabilities & Capabilities::VisPos) { caps |= CClient::FsdWithVisualPositions; }
|
||||||
if (capabilities & Capabilities::AircraftInfo) { caps |= CClient::FsdWithIcaoCodes; }
|
if (capabilities & Capabilities::AircraftInfo) { caps |= CClient::FsdWithIcaoCodes; }
|
||||||
if (capabilities & Capabilities::AircraftConfig) { caps |= CClient::FsdWithAircraftConfig; }
|
if (capabilities & Capabilities::AircraftConfig) { caps |= CClient::FsdWithAircraftConfig; }
|
||||||
|
|
||||||
@@ -1782,6 +1784,12 @@ namespace BlackCore::Fsd
|
|||||||
return (d & CFsdSetup::ReceiveInterimPositions);
|
return (d & CFsdSetup::ReceiveInterimPositions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CFSDClient::isVisualPositionSendingEnabledForServer() const
|
||||||
|
{
|
||||||
|
const CFsdSetup::SendReceiveDetails d = this->getSetupForServer().getSendReceiveDetails();
|
||||||
|
return (d & CFsdSetup::SendVisualPositions);
|
||||||
|
}
|
||||||
|
|
||||||
const CFsdSetup &CFSDClient::getSetupForServer() const
|
const CFsdSetup &CFSDClient::getSetupForServer() const
|
||||||
{
|
{
|
||||||
return m_server.getFsdSetup();
|
return m_server.getFsdSetup();
|
||||||
|
|||||||
@@ -416,6 +416,7 @@ namespace BlackCore::Fsd
|
|||||||
|
|
||||||
bool isInterimPositionSendingEnabledForServer() const;
|
bool isInterimPositionSendingEnabledForServer() const;
|
||||||
bool isInterimPositionReceivingEnabledForServer() const;
|
bool isInterimPositionReceivingEnabledForServer() const;
|
||||||
|
bool isVisualPositionSendingEnabledForServer() const;
|
||||||
const BlackMisc::Network::CFsdSetup &getSetupForServer() const;
|
const BlackMisc::Network::CFsdSetup &getSetupForServer() const;
|
||||||
|
|
||||||
//! Handles ATIS replies from non-VATSIM servers. If the conditions are not met,
|
//! Handles ATIS replies from non-VATSIM servers. If the conditions are not met,
|
||||||
|
|||||||
@@ -407,6 +407,7 @@ namespace BlackCore::Fsd
|
|||||||
case Capabilities::AircraftInfo: return "MODELDESC";
|
case Capabilities::AircraftInfo: return "MODELDESC";
|
||||||
case Capabilities::OngoingCoord: return "ONGOINGCOORD";
|
case Capabilities::OngoingCoord: return "ONGOINGCOORD";
|
||||||
case Capabilities::InterminPos: return "INTERIMPOS";
|
case Capabilities::InterminPos: return "INTERIMPOS";
|
||||||
|
case Capabilities::VisPos: return "VISUPDATE";
|
||||||
case Capabilities::FastPos: return "FASTPOS";
|
case Capabilities::FastPos: return "FASTPOS";
|
||||||
case Capabilities::Stealth: return "STEALTH";
|
case Capabilities::Stealth: return "STEALTH";
|
||||||
case Capabilities::AircraftConfig: return "ACCONFIG";
|
case Capabilities::AircraftConfig: return "ACCONFIG";
|
||||||
@@ -424,6 +425,7 @@ namespace BlackCore::Fsd
|
|||||||
else if (str == "ONGOINGCOORD") return Capabilities::OngoingCoord;
|
else if (str == "ONGOINGCOORD") return Capabilities::OngoingCoord;
|
||||||
else if (str == "INTERIMPOS") return Capabilities::InterminPos;
|
else if (str == "INTERIMPOS") return Capabilities::InterminPos;
|
||||||
else if (str == "FASTPOS") return Capabilities::FastPos;
|
else if (str == "FASTPOS") return Capabilities::FastPos;
|
||||||
|
else if (str == "VISUPDATE") return Capabilities::VisPos;
|
||||||
else if (str == "STEALTH") return Capabilities::Stealth;
|
else if (str == "STEALTH") return Capabilities::Stealth;
|
||||||
else if (str == "ACCONFIG") return Capabilities::AircraftConfig;
|
else if (str == "ACCONFIG") return Capabilities::AircraftConfig;
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace BlackGui::Editors
|
|||||||
ui->cb_AircraftPartsSend->isChecked(), ui->cb_AircraftPartsReceive->isChecked(),
|
ui->cb_AircraftPartsSend->isChecked(), ui->cb_AircraftPartsReceive->isChecked(),
|
||||||
ui->cb_GndFlagSend->isChecked(), ui->cb_GndFlagReceive->isChecked(),
|
ui->cb_GndFlagSend->isChecked(), ui->cb_GndFlagReceive->isChecked(),
|
||||||
ui->cb_FastPositionSend->isChecked(), ui->cb_FastPositionReceive->isChecked(),
|
ui->cb_FastPositionSend->isChecked(), ui->cb_FastPositionReceive->isChecked(),
|
||||||
|
false, //! \todo GUI for visual position updates
|
||||||
ui->cb_EuroscopeSimData->isChecked()
|
ui->cb_EuroscopeSimData->isChecked()
|
||||||
);
|
);
|
||||||
s.setForce3LetterAirlineCodes(ui->cb_3LetterAirlineICAO->isChecked());
|
s.setForce3LetterAirlineCodes(ui->cb_3LetterAirlineICAO->isChecked());
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ namespace BlackMisc::Network
|
|||||||
if (cap.testFlag(FsdWithAircraftConfig)) sl << "aircraft config";
|
if (cap.testFlag(FsdWithAircraftConfig)) sl << "aircraft config";
|
||||||
if (cap.testFlag(FsdWithGroundFlag)) sl << "gnd.flag";
|
if (cap.testFlag(FsdWithGroundFlag)) sl << "gnd.flag";
|
||||||
if (cap.testFlag(FsdModelString)) sl << "modelstring";
|
if (cap.testFlag(FsdModelString)) sl << "modelstring";
|
||||||
|
if (cap.testFlag(FsdWithVisualPositions)) sl << "visual pos.";
|
||||||
if (sl.isEmpty()) { return {}; }
|
if (sl.isEmpty()) { return {}; }
|
||||||
return sl.join(", ");
|
return sl.join(", ");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ namespace BlackMisc::Network
|
|||||||
FsdAtisCanBeReceived = 1 << 2, //!< ATIS
|
FsdAtisCanBeReceived = 1 << 2, //!< ATIS
|
||||||
FsdWithAircraftConfig = 1 << 3, //!< Aircraft parts
|
FsdWithAircraftConfig = 1 << 3, //!< Aircraft parts
|
||||||
FsdWithGroundFlag = 1 << 4, //!< supports gnd. flag (in position)
|
FsdWithGroundFlag = 1 << 4, //!< supports gnd. flag (in position)
|
||||||
FsdModelString = 1 << 5 //!< model string can be queried
|
FsdModelString = 1 << 5, //!< model string can be queried
|
||||||
|
FsdWithVisualPositions = 1 << 6 //!< visual position updates
|
||||||
};
|
};
|
||||||
Q_DECLARE_FLAGS(Capabilities, Capability)
|
Q_DECLARE_FLAGS(Capabilities, Capability)
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ namespace BlackMisc::Network
|
|||||||
return ds.arg(boolToYesNo(details.testFlag(SendAircraftParts)),
|
return ds.arg(boolToYesNo(details.testFlag(SendAircraftParts)),
|
||||||
boolToYesNo(details.testFlag(SendGndFlag)),
|
boolToYesNo(details.testFlag(SendGndFlag)),
|
||||||
boolToYesNo(details.testFlag(SendInterimPositions)),
|
boolToYesNo(details.testFlag(SendInterimPositions)),
|
||||||
|
boolToYesNo(details.testFlag(SendVisualPositions)),
|
||||||
boolToYesNo(details.testFlag(ReceiveAircraftParts)),
|
boolToYesNo(details.testFlag(ReceiveAircraftParts)),
|
||||||
boolToYesNo(details.testFlag(ReceiveGndFlag)),
|
boolToYesNo(details.testFlag(ReceiveGndFlag)),
|
||||||
boolToYesNo(details.testFlag(ReceiveInterimPositions)),
|
boolToYesNo(details.testFlag(ReceiveInterimPositions)),
|
||||||
@@ -54,7 +55,7 @@ namespace BlackMisc::Network
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFsdSetup::setSendReceiveDetails(bool partsSend, bool partsReceive, bool gndSend, bool gndReceive, bool interimSend, bool interimReceive, bool euroscopeSimDataReceive)
|
void CFsdSetup::setSendReceiveDetails(bool partsSend, bool partsReceive, bool gndSend, bool gndReceive, bool interimSend, bool interimReceive, bool visualSend, bool euroscopeSimDataReceive)
|
||||||
{
|
{
|
||||||
SendReceiveDetails s = Nothing;
|
SendReceiveDetails s = Nothing;
|
||||||
if (partsSend) { s |= SendAircraftParts; }
|
if (partsSend) { s |= SendAircraftParts; }
|
||||||
@@ -63,6 +64,7 @@ namespace BlackMisc::Network
|
|||||||
if (gndReceive) { s |= ReceiveGndFlag; }
|
if (gndReceive) { s |= ReceiveGndFlag; }
|
||||||
if (interimSend) { s |= SendInterimPositions; }
|
if (interimSend) { s |= SendInterimPositions; }
|
||||||
if (interimReceive) { s |= ReceiveInterimPositions; }
|
if (interimReceive) { s |= ReceiveInterimPositions; }
|
||||||
|
if (visualSend) { s |= SendVisualPositions; }
|
||||||
if (euroscopeSimDataReceive) { s |= ReceiveEuroscopeSimData; }
|
if (euroscopeSimDataReceive) { s |= ReceiveEuroscopeSimData; }
|
||||||
this->setSendReceiveDetails(s);
|
this->setSendReceiveDetails(s);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ namespace BlackMisc::Network
|
|||||||
ReceiveInterimPositions = 1 << 4, //!< fast position updates in
|
ReceiveInterimPositions = 1 << 4, //!< fast position updates in
|
||||||
ReceiveGndFlag = 1 << 5, //!< gnd.flag in (position)
|
ReceiveGndFlag = 1 << 5, //!< gnd.flag in (position)
|
||||||
Force3LetterAirlineICAO = 1 << 6, //!< force 3 letter airline ICAO code
|
Force3LetterAirlineICAO = 1 << 6, //!< force 3 letter airline ICAO code
|
||||||
// bit 7 reserved for VISUPDATE
|
SendVisualPositions = 1 << 7, //!< visual positions out
|
||||||
ReceiveEuroscopeSimData = 1 << 8, //!< euroscope SIMDATA in
|
ReceiveEuroscopeSimData = 1 << 8, //!< euroscope SIMDATA in
|
||||||
AllSending = SendAircraftParts | SendInterimPositions | SendGndFlag, //!< all out
|
AllSending = SendAircraftParts | SendInterimPositions | SendVisualPositions | SendGndFlag, //!< all out
|
||||||
AllReceive = ReceiveAircraftParts | ReceiveInterimPositions | ReceiveGndFlag, //!< all in
|
AllReceive = ReceiveAircraftParts | ReceiveInterimPositions | ReceiveGndFlag, //!< all in
|
||||||
All = AllReceive | AllSending, //!< all
|
All = AllReceive | AllSending, //!< all
|
||||||
AllParts = SendAircraftParts | ReceiveAircraftParts, //!< send/receive parts
|
AllParts = SendAircraftParts | ReceiveAircraftParts, //!< send/receive parts
|
||||||
@@ -56,7 +56,7 @@ namespace BlackMisc::Network
|
|||||||
AllReceiveWithoutGnd = AllReceive - ReceiveGndFlag, //!< all in, but no gnd.flag
|
AllReceiveWithoutGnd = AllReceive - ReceiveGndFlag, //!< all in, but no gnd.flag
|
||||||
AllInterimPositions = SendInterimPositions | ReceiveInterimPositions, //!< all interim positions
|
AllInterimPositions = SendInterimPositions | ReceiveInterimPositions, //!< all interim positions
|
||||||
AllWithoutGnd = AllReceiveWithoutGnd | AllSendingWithoutGnd, //!< all, but no gnd.flag
|
AllWithoutGnd = AllReceiveWithoutGnd | AllSendingWithoutGnd, //!< all, but no gnd.flag
|
||||||
VATSIMDefault = AllParts | Force3LetterAirlineICAO
|
VATSIMDefault = AllParts | Force3LetterAirlineICAO | SendVisualPositions
|
||||||
};
|
};
|
||||||
Q_DECLARE_FLAGS(SendReceiveDetails, SendReceiveDetailsFlag)
|
Q_DECLARE_FLAGS(SendReceiveDetails, SendReceiveDetailsFlag)
|
||||||
|
|
||||||
@@ -95,13 +95,14 @@ namespace BlackMisc::Network
|
|||||||
void removeSendReceiveDetails(SendReceiveDetails sendReceive) { m_sendReceive &= ~sendReceive; }
|
void removeSendReceiveDetails(SendReceiveDetails sendReceive) { m_sendReceive &= ~sendReceive; }
|
||||||
|
|
||||||
//! Set send / receive details
|
//! Set send / receive details
|
||||||
void setSendReceiveDetails(bool partsSend, bool partsReceive, bool gndSend, bool gndReceive, bool interimSend, bool interimReceive, bool euroscopeSimDataReceive);
|
void setSendReceiveDetails(bool partsSend, bool partsReceive, bool gndSend, bool gndReceive, bool interimSend, bool interimReceive, bool visualSend, bool euroscopeSimDataReceive);
|
||||||
|
|
||||||
//! FSD setup flags
|
//! FSD setup flags
|
||||||
//! @{
|
//! @{
|
||||||
bool sendAircraftParts() const { return this->getSendReceiveDetails().testFlag(SendAircraftParts); }
|
bool sendAircraftParts() const { return this->getSendReceiveDetails().testFlag(SendAircraftParts); }
|
||||||
bool sendGndFlag() const { return this->getSendReceiveDetails().testFlag(SendGndFlag); }
|
bool sendGndFlag() const { return this->getSendReceiveDetails().testFlag(SendGndFlag); }
|
||||||
bool sendInterimPositions() const { return this->getSendReceiveDetails().testFlag(SendInterimPositions); }
|
bool sendInterimPositions() const { return this->getSendReceiveDetails().testFlag(SendInterimPositions); }
|
||||||
|
bool sendVisualPositions() const { return this->getSendReceiveDetails().testFlag(SendVisualPositions); }
|
||||||
|
|
||||||
bool receiveAircraftParts() const { return this->getSendReceiveDetails().testFlag(ReceiveAircraftParts); }
|
bool receiveAircraftParts() const { return this->getSendReceiveDetails().testFlag(ReceiveAircraftParts); }
|
||||||
bool receiveGndFlag() const { return this->getSendReceiveDetails().testFlag(ReceiveGndFlag); }
|
bool receiveGndFlag() const { return this->getSendReceiveDetails().testFlag(ReceiveGndFlag); }
|
||||||
|
|||||||
Reference in New Issue
Block a user