1 #include "CommStation.hxx"
7 typedef std::multimap<int, flightgear::CommStation*> FrequencyMap;
8 static FrequencyMap static_frequencies;
10 typedef std::pair<FrequencyMap::const_iterator, FrequencyMap::const_iterator> FrequencyMapRange;
12 } // of anonymous namespace
14 namespace flightgear {
16 CommStation::CommStation(const std::string& name, FGPositioned::Type t, const SGGeod& pos, int range, int freq) :
17 FGPositioned(t, name, pos),
22 static_frequencies.insert(std::make_pair(freq, this));
27 void CommStation::setAirport(FGAirport* apt)
32 double CommStation::freqMHz() const
34 return mFreqKhz / 100.0;
38 CommStation::findByFreq(int freqKhz, const SGGeod& pos, FGPositioned::Filter* filt)
40 FrequencyMapRange range = static_frequencies.equal_range(freqKhz);
41 FGPositioned::List results;
42 for (; range.first != range.second; ++range.first) {
43 CommStation* sta = range.first->second;
44 if (filt && !filt->pass(sta)) {
45 continue; // filtered out
48 results.push_back(sta);
51 if (results.empty()) {
55 FGPositioned::sortByRange(results, pos);
56 return (CommStation*) results.front().ptr();
59 } // of namespace flightgear