1 #ifndef _YASIM_HXX
2 #define _YASIM_HXX
3 
4 #include <FDM/flight.hxx>
5 #include <vector>
6 
7 namespace yasim { class FGFDM; };
8 
9 class YASim : public FGInterface
10 {
11 public:
12     YASim(double dt);
13     ~YASim();
14 
15     // Subsystem API.
16     void bind() override;
17     void init() override;
18     void reinit() override;
19     void update(double dt) override;
20 
21     // Subsystem identification.
staticSubsystemClassId()22     static const char* staticSubsystemClassId() { return "yasim"; }
23 
24 private:
25     void report();
26     void copyFromYASim();
27     void copyToYASim(bool copyState);
28 
29     yasim::FGFDM* _fdm;
30     float _dt;
31     double _simTime;
32     enum {
33         NED,
34         UVW,
35         KNOTS,
36         MACH
37     } _speed_set;
38 
39     class GearProps
40     {
41     public:
42         GearProps(SGPropertyNode_ptr gear_root);
43 
44         SGPropertyNode_ptr has_brake;
45         SGPropertyNode_ptr wow;
46         SGPropertyNode_ptr compression_norm;
47         SGPropertyNode_ptr compression_m;
48         SGPropertyNode_ptr caster_angle_deg;
49         SGPropertyNode_ptr rollspeed_ms;
50         SGPropertyNode_ptr ground_is_solid;
51         SGPropertyNode_ptr ground_friction_factor;
52     };
53 
54     SGPropertyNode_ptr _crashed;
55     SGPropertyNode_ptr _pressure_inhg, _temp_degc, _density_slugft3;
56     SGPropertyNode_ptr _gear_agl_m, _gear_agl_ft;
57     SGPropertyNode_ptr _pilot_g, _speed_setprop;
58     SGPropertyNode_ptr _catapult_launch_cmd, _tailhook_position_norm;
59     SGPropertyNode_ptr _launchbar_position_norm, _launchbar_holdback_pos_norm;
60     SGPropertyNode_ptr _launchbar_state, _launchbar_strop;
61     std::vector<GearProps> _gearProps;
62 };
63 
64 #endif // _YASIM_HXX
65