- // query the database for the specified frequency, lon and lat are
- // in degrees, elev is in meters
- bool query( double lon, double lat, double elev, double freq,
- FGNav *n, double *heading, double *dist);
+ /** Query the database for the specified station. It is assumed
+ * that there will be multiple stations with matching frequencies
+ * so a position must be specified. Lon and lat are in radians,
+ * elev is in meters.
+ */
+ FGNavRecord *findByFreq( double freq, double lon, double lat, double elev );
+
+ // locate closest item in the DB matching the requested ident
+ FGNavRecord *findByIdent( const char* ident, const double lon, const double lat );
+
+ // Find items of requested type with closest exact or subsequent ident
+ // (by ASCII code value) to that supplied.
+ // Supplying true for exact forces only exact matches to be returned (similar to above function)
+ // Returns an empty list if no match found - calling function should check for this!
+ nav_list_type findFirstByIdent( const string& ident, fg_nav_types type, bool exact = false );
+
+ // Given an Ident and optional freqency, return the first matching
+ // station.
+ FGNavRecord *findByIdentAndFreq( const char* ident,
+ const double freq = 0.0 );
+
+ // returns the closest entry to the give lon/lat/elev
+ FGNavRecord *findClosest( double lon_rad, double lat_rad, double elev_m, fg_nav_types type = FG_NAV_ANY );
+
+ // given a frequency returns the first matching entry
+ FGNavRecord *findStationByFreq( double frequency );
+
+ inline const nav_map_type& get_navaids() const { return navaids; }