X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Ftransponder.hxx;h=ad4d183b9be326f83d33f08302c33c32eaa762a1;hb=de959a14f35ee4e74d405b418bb09689967ee22f;hp=f0a58efd22b08e4722e11deabed63699184818a8;hpb=b9e4775a7a4bbeac9e3af2bf617ddacfbc2d47bf;p=flightgear.git diff --git a/src/Instrumentation/transponder.hxx b/src/Instrumentation/transponder.hxx index f0a58efd2..ad4d183b9 100644 --- a/src/Instrumentation/transponder.hxx +++ b/src/Instrumentation/transponder.hxx @@ -3,6 +3,7 @@ // Written by Roy Vegard Ovesen, started September 2004. // // Copyright (C) 2004 Roy Vegard Ovesen - rvovesen@tiscali.no +// Copyright (C) 2013 Clement de l'Hamaide - clemaez@hotmail.fr // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -28,31 +29,81 @@ #include
#include +#include - -class Transponder : public SGSubsystem +class Transponder : public SGSubsystem, public SGPropertyChangeListener { public: Transponder(SGPropertyNode *node); - ~Transponder(); - - void init (); - void update (double dt); + virtual ~Transponder(); + virtual void init (); + virtual void update (double dt); + virtual void bind(); + virtual void unbind(); + private: + enum Mode + { + MODE_A = 0, + MODE_C, + MODE_S + }; + + enum KnobPosition + { + KNOB_OFF = 0, + KNOB_STANDBY, + KNOB_TEST, + KNOB_GROUND, + KNOB_ON, + KNOB_ALT + }; + + // annunciators, for KT-70 compatibility only + // these should be replaced with conditionals in the instrument + bool getFLAnnunciator() const; + bool getAltAnnunciator() const; + bool getGroundAnnuciator() const; + bool getOnAnnunciator() const; + bool getStandbyAnnunciator() const; + bool getReplyAnnunciator() const; + // Inputs - SGPropertyNode_ptr pressureAltitudeNode; - SGPropertyNode_ptr busPowerNode; - SGPropertyNode_ptr serviceableNode; + SGPropertyNode_ptr _pressureAltitude_node; + SGPropertyNode_ptr _busPower_node; + SGPropertyNode_ptr _serviceable_node; + SGPropertyNode_ptr _mode_node; + SGPropertyNode_ptr _knob_node; + SGPropertyNode_ptr _idCode_node; + SGPropertyNode_ptr _digit_node[4]; + + simgear::TiedPropertyList _tiedProperties; + + SGPropertyNode_ptr _identBtn_node; + bool _identMode; + bool _kt70Compat; + // Outputs - SGPropertyNode_ptr idCodeNode; - SGPropertyNode_ptr flightLevelNode; + SGPropertyNode_ptr _altitude_node; + SGPropertyNode_ptr _altitudeValid_node; + SGPropertyNode_ptr _transmittedId_node; + SGPropertyNode_ptr _ident_node; // Internal - string _name; + std::string _name; int _num; - string _mode_c_altitude; + Mode _mode; + KnobPosition _knob; + double _identTime; + int _listener_active; + double _requiredBusVolts; + std::string _altitudeSourcePath; + + void valueChanged (SGPropertyNode *); + int setMinMax(int val); + bool has_power() const; }; #endif // TRANSPONDER_HXX