]> git.mxchange.org Git - flightgear.git/blobdiff - src/ATCDCL/atis.hxx
httpd: don't spam the console with debug messages
[flightgear.git] / src / ATCDCL / atis.hxx
index bd67d8ec8be2df1712c1c1fda4744e310e4edee5..525001fa01a006cfc3c0ff3d6c661905b7b07da1 100644 (file)
@@ -19,7 +19,6 @@
 // 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
 
@@ -32,6 +31,8 @@
 
 #include "ATC.hxx"
 
+class FGAirport;
+
 typedef std::map<std::string,std::string> MSS;
 
 class FGATIS : public FGATC {
@@ -52,6 +53,8 @@ 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:
@@ -67,7 +70,8 @@ class FGATIS : public FGATC {
     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
@@ -76,12 +80,34 @@ class FGATIS : public FGATC {
     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);
@@ -94,18 +120,32 @@ protected:
 
 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;