// mag_compass.hxx - an altimeter tied to the static port. // Written by David Megginson, started 2002. // // This file is in the Public Domain and comes with no warranty. #ifndef __INSTRUMENTS_MAG_COMPASS_HXX #define __INSTRUMENTS_MAG_COMPASS_HXX 1 #ifndef __cplusplus # error This library requires C++ #endif #include #include /** * Model a magnetic compass. * * Input properties: * * /instrumentation/"name"/serviceable * /orientation/roll-deg * /orientation/pitch-deg * /orientation/heading-magnetic-deg * /orientation/side-slip-deg * /environment/magnetic-dip-deg * /accelerations/ned/north-accel-fps_sec * /accelerations/ned/east-accel-fps_sec * /accelerations/ned/down-accel-fps_sec * * Output properties: * * /instrumentation/"name"/indicated-heading-deg */ class MagCompass : public SGSubsystem { public: MagCompass ( SGPropertyNode *node); MagCompass (); virtual ~MagCompass (); virtual void init (); virtual void update (double dt); private: double _error_deg; double _rate_degps; string name; int num; SGPropertyNode_ptr _serviceable_node; SGPropertyNode_ptr _roll_node; SGPropertyNode_ptr _pitch_node; SGPropertyNode_ptr _heading_node; SGPropertyNode_ptr _beta_node; SGPropertyNode_ptr _dip_node; SGPropertyNode_ptr _north_accel_node; SGPropertyNode_ptr _east_accel_node; SGPropertyNode_ptr _down_accel_node; SGPropertyNode_ptr _out_node; }; #endif // __INSTRUMENTS_MAG_COMPASS_HXX