Files
flightgear/src/Network/DDS/dds_ctrls.idl
2022-10-20 20:29:11 +08:00

114 lines
3.1 KiB
Plaintext

// format dfescription: https://www.omg.org/spec/IDL/4.2/PDF
// Adapted from net_ctrls.hxx
module FG
{
// defining it this way also generates accompanying #defines in the header file.
const short DDS_CTRLS_VERSION = 1;
const short DDS_ENGINES = 4;
const short DDS_WHEELS = 16;
const short DDS_TANKS = 8;
struct DDS_Ctrls
{
short id; // DDS id
short version; // packet version
// Aero controls
// net_ctrl.hxx defines doubles but flouts do have enough precission
float aileron; // -1 ... 1
float elevator; // -1 ... 1
float rudder; // -1 ... 1
float aileron_trim; // -1 ... 1
float elevator_trim; // -1 ... 1
float rudder_trim; // -1 ... 1
float flaps; // 0 ... 1
float spoilers;
float speedbrake;
// Aero control faults
boolean flaps_power; // true = power available
boolean flap_motor_ok;
// Engine controls
unsigned short num_engines; // number of valid engines
boolean master_bat[DDS_ENGINES];
boolean master_alt[DDS_ENGINES];
unsigned long magnetos[DDS_ENGINES];
unsigned long starter_power[DDS_ENGINES]; // true = starter power
float throttle[DDS_ENGINES]; // 0 ... 1
float mixture[DDS_ENGINES]; // 0 ... 1
float condition[DDS_ENGINES]; // 0 ... 1
unsigned long fuel_pump_power[DDS_ENGINES]; // true = on
float prop_advance[DDS_ENGINES]; // 0 ... 1
unsigned short feed_tank_to[4];
boolean reverse[4];
// Engine faults
boolean engine_ok[DDS_ENGINES];
boolean mag_left_ok[DDS_ENGINES];
boolean mag_right_ok[DDS_ENGINES];
boolean spark_plugs_ok[DDS_ENGINES]; // false = fouled plugs
unsigned short oil_press_status[DDS_ENGINES];// 0 = normal, 1 = low, 2 = full fail
boolean fuel_pump_ok[DDS_ENGINES];
// Fuel management
unsigned short num_tanks; // number of valid tanks
unsigned short fuel_selector[DDS_TANKS]; // false = off, true = on
// unsigned short xfer_pump[5]; // specifies transfer from array
// value tank to tank specified
// by int value
boolean cross_feed; // false = off, true = on
// Brake controls
float brake_left;
float brake_right;
float copilot_brake_left;
float copilot_brake_right;
float brake_parking;
// Landing Gear
boolean gear_handle; // true=gear handle down; false= gear handle up
// Switches
boolean master_avionics;
// nav and Comm
float comm_1;
float comm_2;
float nav_1;
float nav_2;
// wind and turbulance
float wind_speed_kt;
float wind_dir_deg;
float turbulence_norm;
// temp and pressure
float temp_c;
float press_inhg;
// other information about environment
float hground; // ground elevation (meters)
float magvar; // local magnetic variation in degs.
// hazards
boolean icing; // icing status could me much
// more complex but I'm
// starting simple here.
// simulation control
unsigned long speedup; // integer speedup multiplier
unsigned short freeze; // 0=normal
// 0x01=master
// 0x02=position
// 0x04=fuel
};
#pragma keylist DDS_Ctrls id
}; // module FG