Ref T27, store flight plan remarks in VATSIM reader

This can be used in airspace monitor
This commit is contained in:
Klaus Basan
2017-06-25 19:45:10 +02:00
committed by Mathew Sutcliffe
parent 39bd8aa2bb
commit 042f725e54
4 changed files with 49 additions and 21 deletions

View File

@@ -121,14 +121,16 @@ namespace BlackCore
CVoiceCapabilities CVatsimDataFileReader::getVoiceCapabilityForCallsign(const CCallsign &callsign)
{
QReadLocker rl(&this->m_lock);
if (this->m_voiceCapabilities.contains(callsign))
{
return m_voiceCapabilities[callsign];
}
else
{
return CVoiceCapabilities::fromVoiceCapabilities(CVoiceCapabilities::Unknown);
}
return (this->m_voiceCapabilities.contains(callsign)) ?
m_voiceCapabilities[callsign] :
CVoiceCapabilities::fromVoiceCapabilities(CVoiceCapabilities::Unknown);
}
QString CVatsimDataFileReader::getFlightPlanRemarksForCallsign(const CCallsign &callsign)
{
QReadLocker rl(&this->m_lock);
return (this->m_flightPlanRemarks.contains(callsign)) ?
m_flightPlanRemarks[callsign] : "";
}
void CVatsimDataFileReader::updateWithVatsimDataFileData(CSimulatedAircraft &aircraftToBeUdpated) const
@@ -237,7 +239,8 @@ namespace BlackCore
CServerList fsdServers;
CAtcStationList atcStations;
CSimulatedAircraftList aircraft;
QMap<CCallsign, CVoiceCapabilities> voiceCapabilities;
QMap<CCallsign, CVoiceCapabilities> voiceCapabilitiesMap;
QMap<CCallsign, QString> flightPlanRemarksMap;
QDateTime updateTimestampFromFile;
QStringList clientSectionAttributes;
@@ -289,16 +292,17 @@ namespace BlackCore
const double alt = clientPartsMap["altitude"].toDouble();
const CFrequency frequency = CFrequency(clientPartsMap["frequency"].toDouble(), CFrequencyUnit::MHz());
CCoordinateGeodetic position(lat, lng, alt);
CAltitude altitude(alt, CAltitude::MeanSeaLevel, CLengthUnit::ft());
QString flightPlanRemarks = clientPartsMap["planned_remarks"];
const CAltitude altitude(alt, CAltitude::MeanSeaLevel, CLengthUnit::ft());
const QString flightPlanRemarks = clientPartsMap["planned_remarks"].trimmed();
// Voice capabilities
if (!flightPlanRemarks.isEmpty())
{
CVoiceCapabilities vc(flightPlanRemarks);
flightPlanRemarksMap[callsign] = flightPlanRemarks;
const CVoiceCapabilities vc(flightPlanRemarks);
if (!vc.isUnknown())
{
voiceCapabilities.insert(callsign, vc);
voiceCapabilitiesMap.insert(callsign, vc);
}
}
@@ -403,9 +407,8 @@ namespace BlackCore
this->setUpdateTimestamp(updateTimestampFromFile);
this->m_aircraft = aircraft;
this->m_atcStations = atcStations;
this->m_voiceCapabilities = voiceCapabilities;
// check if we need to save in cache
this->m_voiceCapabilities = voiceCapabilitiesMap;
this->m_flightPlanRemarks = flightPlanRemarksMap;
}
// update cache itself is thread safe
@@ -417,7 +420,6 @@ namespace BlackCore
this->m_lastGoodSetup.set(vs);
}
// warnings, if required
if (!illegalIcaoCodes.isEmpty())
{

View File

@@ -109,6 +109,10 @@ namespace BlackCore
//! \threadsafe
BlackMisc::Network::CVoiceCapabilities getVoiceCapabilityForCallsign(const BlackMisc::Aviation::CCallsign &callsign);
//! Flight plan remarks for callsign
//! \threadsafe
QString getFlightPlanRemarksForCallsign(const BlackMisc::Aviation::CCallsign &callsign);
//! Update aircraft with VATSIM aircraft data from data file
//! \threadsafe
void updateWithVatsimDataFileData(BlackMisc::Simulation::CSimulatedAircraft &aircraftToBeUdpated) const;
@@ -140,11 +144,12 @@ namespace BlackCore
private:
void reloadSettings();
BlackMisc::Aviation::CAtcStationList m_atcStations;
BlackMisc::Simulation::CSimulatedAircraftList m_aircraft;
BlackMisc::Aviation::CAtcStationList m_atcStations;
BlackMisc::Simulation::CSimulatedAircraftList m_aircraft;
BlackMisc::CData<BlackCore::Data::TVatsimSetup> m_lastGoodSetup { this };
BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TVatsimDataFile> m_settings { this, &CVatsimDataFileReader::reloadSettings };
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::Network::CVoiceCapabilities> m_voiceCapabilities;
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::Network::CVoiceCapabilities> m_voiceCapabilities; //!< voice capabilities
QMap<BlackMisc::Aviation::CCallsign, QString> m_flightPlanRemarks; //!< cache for flight plan remarks
//! Split line and assign values to their corresponding attribute names
//! \remark attributes expected as lower case