// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
#ifndef _FG_ATIS_HXX
#define _FG_ATIS_HXX
#include "ATC.hxx"
+class FGAirport;
+
typedef std::map<std::string,std::string> MSS;
class FGATIS : public FGATC {
SGPropertyNode_ptr _lat_node;
SGPropertyNode_ptr _elev_node;
+ SGPropertyChangeCallback<FGATIS> _cb_attention;
+
// The actual ATIS transmission
// This is generated from the prevailing conditions when required.
// This is the version with markup, suitable for voice synthesis:
time_t msg_time; // for moderating error messages
time_t cur_time;
int msg_OK;
- int attention;
+ bool _attention;
+ bool _check_transmission;
bool _prev_display; // Previous value of _display flag
MSS _remap; // abbreviations to be expanded
double _time_before_search_sec;
int _last_frequency;
+ // temporary buffer for string conversions
+ char buf[100];
+
+ // data for the current ATIS report
+ struct
+ {
+ std::string phonetic_seq_string;
+ bool US_CA;
+ bool cavok;
+ bool concise;
+ bool ils;
+ int temp;
+ int dewpoint;
+ double psl;
+ double qnh;
+ double rain_norm, snow_norm;
+ int notam;
+ std::string hours,mins;
+ } _report;
+
public:
FGATIS(const std::string& name, int num);
- ~FGATIS(void);
- virtual void init();
- void attend (int);
+
+ void init();
+ void reinit();
+
+ void attend(SGPropertyNode* node);
//run the ATIS instance
void update(double dt);
private:
- // Generate the ATIS transmission text:
- int GenTransmission(const int regen, const int special);
+ void createReport (const FGAirport* apt);
+
+ /** generate the ATIS transmission text */
+ bool genTransmission (const int regen, bool forceUpdate);
+ void genTimeInfo (void);
+ void genFacilityInfo (void);
+ void genPrecipitationInfo(void);
+ bool genVisibilityInfo (std::string& vis_info);
+ bool genCloudInfo (std::string& cloud_info);
+ void genWindInfo (void);
+ void genTemperatureInfo (void);
+ void genTransitionLevel (const FGAirport* apt);
+ void genPressureInfo (void);
+ void genRunwayInfo (const FGAirport* apt);
+ void genWarnings (int position);
+
+ void addTemperature (int Temp);
// Put the text into the property tree
// (and in debug mode, print it on the console):
- void TreeOut(int msgOK);
+ void treeOut(int msgOK);
// Search the specified radio for stations on the same frequency and in range.
- void search(void);
+ bool search(double dt);
friend std::istream& operator>> ( std::istream&, FGATIS& );
-
};
typedef int (FGATIS::*int_getter)() const;