32 bit integers are somewhat magical and handled pretty well across platforms
in terms of predictable packing and byte ordering. So rather than trying to get fancy and shave a few bits off the structure sizes, just go with 32 bit ints for everthing which saves a lot of potential headaches in the cross platform and cross architecture arenas.
This commit is contained in:
parent
bed9a2b355
commit
927cb78aba
2 changed files with 32 additions and 32 deletions
|
@ -34,7 +34,7 @@ typedef unsigned __int64 uint64_t;
|
||||||
# error "Port me! Platforms that don't have <stdint.h> need to define int8_t, et. al."
|
# error "Port me! Platforms that don't have <stdint.h> need to define int8_t, et. al."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const uint16_t FG_NET_CTRLS_VERSION = 25;
|
const uint32_t FG_NET_CTRLS_VERSION = 26;
|
||||||
|
|
||||||
|
|
||||||
// Define a structure containing the control parameters
|
// Define a structure containing the control parameters
|
||||||
|
@ -49,7 +49,7 @@ public:
|
||||||
FG_MAX_TANKS = 6
|
FG_MAX_TANKS = 6
|
||||||
};
|
};
|
||||||
|
|
||||||
uint16_t version; // increment when data values change
|
uint32_t version; // increment when data values change
|
||||||
|
|
||||||
// Aero controls
|
// Aero controls
|
||||||
double aileron; // -1 ... 1
|
double aileron; // -1 ... 1
|
||||||
|
@ -61,33 +61,33 @@ public:
|
||||||
double flaps; // 0 ... 1
|
double flaps; // 0 ... 1
|
||||||
|
|
||||||
// Aero control faults
|
// Aero control faults
|
||||||
uint8_t flaps_power; // true = power available
|
uint32_t flaps_power; // true = power available
|
||||||
uint8_t flap_motor_ok;
|
uint32_t flap_motor_ok;
|
||||||
|
|
||||||
// Engine controls
|
// Engine controls
|
||||||
uint8_t num_engines; // number of valid engines
|
uint32_t num_engines; // number of valid engines
|
||||||
uint8_t master_bat[FG_MAX_ENGINES];
|
uint32_t master_bat[FG_MAX_ENGINES];
|
||||||
uint8_t master_alt[FG_MAX_ENGINES];
|
uint32_t master_alt[FG_MAX_ENGINES];
|
||||||
uint8_t magnetos[FG_MAX_ENGINES];
|
uint32_t magnetos[FG_MAX_ENGINES];
|
||||||
uint8_t starter_power[FG_MAX_ENGINES];// true = starter power
|
uint32_t starter_power[FG_MAX_ENGINES];// true = starter power
|
||||||
double throttle[FG_MAX_ENGINES]; // 0 ... 1
|
double throttle[FG_MAX_ENGINES]; // 0 ... 1
|
||||||
double mixture[FG_MAX_ENGINES]; // 0 ... 1
|
double mixture[FG_MAX_ENGINES]; // 0 ... 1
|
||||||
double condition[FG_MAX_ENGINES]; // 0 ... 1
|
double condition[FG_MAX_ENGINES]; // 0 ... 1
|
||||||
uint8_t fuel_pump_power[FG_MAX_ENGINES];// true = on
|
uint32_t fuel_pump_power[FG_MAX_ENGINES];// true = on
|
||||||
double prop_advance[FG_MAX_ENGINES]; // 0 ... 1
|
double prop_advance[FG_MAX_ENGINES]; // 0 ... 1
|
||||||
|
|
||||||
// Engine faults
|
// Engine faults
|
||||||
uint8_t engine_ok[FG_MAX_ENGINES];
|
uint32_t engine_ok[FG_MAX_ENGINES];
|
||||||
uint8_t mag_left_ok[FG_MAX_ENGINES];
|
uint32_t mag_left_ok[FG_MAX_ENGINES];
|
||||||
uint8_t mag_right_ok[FG_MAX_ENGINES];
|
uint32_t mag_right_ok[FG_MAX_ENGINES];
|
||||||
uint8_t spark_plugs_ok[FG_MAX_ENGINES]; // false = fouled plugs
|
uint32_t spark_plugs_ok[FG_MAX_ENGINES]; // false = fouled plugs
|
||||||
uint8_t oil_press_status[FG_MAX_ENGINES];// 0 = normal, 1 = low, 2 = full fail
|
uint32_t oil_press_status[FG_MAX_ENGINES];// 0 = normal, 1 = low, 2 = full fail
|
||||||
uint8_t fuel_pump_ok[FG_MAX_ENGINES];
|
uint32_t fuel_pump_ok[FG_MAX_ENGINES];
|
||||||
|
|
||||||
// Fuel management
|
// Fuel management
|
||||||
uint8_t num_tanks; // number of valid tanks
|
uint32_t num_tanks; // number of valid tanks
|
||||||
uint8_t fuel_selector[FG_MAX_TANKS]; // false = off, true = on
|
uint32_t fuel_selector[FG_MAX_TANKS]; // false = off, true = on
|
||||||
uint8_t cross_feed; // false = off, true = on
|
uint32_t cross_feed; // false = off, true = on
|
||||||
|
|
||||||
// Brake controls
|
// Brake controls
|
||||||
double brake_left;
|
double brake_left;
|
||||||
|
@ -97,10 +97,10 @@ public:
|
||||||
double brake_parking;
|
double brake_parking;
|
||||||
|
|
||||||
// Landing Gear
|
// Landing Gear
|
||||||
uint8_t gear_handle; // true=gear handle down; false= gear handle up
|
uint32_t gear_handle; // true=gear handle down; false= gear handle up
|
||||||
|
|
||||||
// Switches
|
// Switches
|
||||||
uint8_t master_avionics;
|
uint32_t master_avionics;
|
||||||
|
|
||||||
// wind and turbulance
|
// wind and turbulance
|
||||||
double wind_speed_kt;
|
double wind_speed_kt;
|
||||||
|
@ -116,13 +116,13 @@ public:
|
||||||
double magvar; // local magnetic variation in degs.
|
double magvar; // local magnetic variation in degs.
|
||||||
|
|
||||||
// hazards
|
// hazards
|
||||||
uint8_t icing; // icing status could me much
|
uint32_t icing; // icing status could me much
|
||||||
// more complex but I'm
|
// more complex but I'm
|
||||||
// starting simple here.
|
// starting simple here.
|
||||||
|
|
||||||
// simulation control
|
// simulation control
|
||||||
uint8_t speedup; // integer speedup multiplier
|
uint32_t speedup; // integer speedup multiplier
|
||||||
uint8_t freeze; // 0=normal
|
uint32_t freeze; // 0=normal
|
||||||
// 0x01=master
|
// 0x01=master
|
||||||
// 0x02=position
|
// 0x02=position
|
||||||
// 0x04=fuel
|
// 0x04=fuel
|
||||||
|
|
|
@ -36,7 +36,7 @@ typedef unsigned __int64 uint64_t;
|
||||||
# error "Port me! Platforms that don't have <stdint.h> need to define int8_t, et. al."
|
# error "Port me! Platforms that don't have <stdint.h> need to define int8_t, et. al."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const uint16_t FG_NET_FDM_VERSION = 21;
|
const uint32_t FG_NET_FDM_VERSION = 22;
|
||||||
|
|
||||||
|
|
||||||
// Define a structure containing the top level flight dynamics model
|
// Define a structure containing the top level flight dynamics model
|
||||||
|
@ -52,7 +52,7 @@ public:
|
||||||
FG_MAX_TANKS = 4
|
FG_MAX_TANKS = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
uint16_t version; // increment when data values change
|
uint32_t version; // increment when data values change
|
||||||
|
|
||||||
// Positions
|
// Positions
|
||||||
double longitude; // geodetic (radians)
|
double longitude; // geodetic (radians)
|
||||||
|
@ -93,8 +93,8 @@ public:
|
||||||
// Pressure
|
// Pressure
|
||||||
|
|
||||||
// Engine status
|
// Engine status
|
||||||
uint8_t num_engines; // Number of valid engines
|
uint32_t num_engines; // Number of valid engines
|
||||||
uint8_t eng_state[FG_MAX_ENGINES];// Engine state (off, cranking, running)
|
uint32_t eng_state[FG_MAX_ENGINES];// Engine state (off, cranking, running)
|
||||||
float rpm[FG_MAX_ENGINES]; // Engine RPM rev/min
|
float rpm[FG_MAX_ENGINES]; // Engine RPM rev/min
|
||||||
float fuel_flow[FG_MAX_ENGINES]; // Fuel flow gallons/hr
|
float fuel_flow[FG_MAX_ENGINES]; // Fuel flow gallons/hr
|
||||||
float egt[FG_MAX_ENGINES]; // Exhuast gas temp deg F
|
float egt[FG_MAX_ENGINES]; // Exhuast gas temp deg F
|
||||||
|
@ -105,12 +105,12 @@ public:
|
||||||
float oil_px[FG_MAX_ENGINES]; // Oil pressure psi
|
float oil_px[FG_MAX_ENGINES]; // Oil pressure psi
|
||||||
|
|
||||||
// Consumables
|
// Consumables
|
||||||
uint8_t num_tanks; // Max number of fuel tanks
|
uint32_t num_tanks; // Max number of fuel tanks
|
||||||
float fuel_quantity[FG_MAX_TANKS];
|
float fuel_quantity[FG_MAX_TANKS];
|
||||||
|
|
||||||
// Gear status
|
// Gear status
|
||||||
uint8_t num_wheels;
|
uint32_t num_wheels;
|
||||||
uint8_t wow[FG_MAX_WHEELS];
|
uint32_t wow[FG_MAX_WHEELS];
|
||||||
float gear_pos[FG_MAX_WHEELS];
|
float gear_pos[FG_MAX_WHEELS];
|
||||||
float gear_steer[FG_MAX_WHEELS];
|
float gear_steer[FG_MAX_WHEELS];
|
||||||
float gear_compression[FG_MAX_WHEELS];
|
float gear_compression[FG_MAX_WHEELS];
|
||||||
|
@ -118,7 +118,7 @@ public:
|
||||||
// Environment
|
// Environment
|
||||||
uint32_t cur_time; // current unix time
|
uint32_t cur_time; // current unix time
|
||||||
// FIXME: make this uint64_t before 2038
|
// FIXME: make this uint64_t before 2038
|
||||||
uint32_t warp; // offset in seconds to unix time
|
int32_t warp; // offset in seconds to unix time
|
||||||
float visibility; // visibility in meters (for env. effects)
|
float visibility; // visibility in meters (for env. effects)
|
||||||
|
|
||||||
// Control surface positions (normalized values)
|
// Control surface positions (normalized values)
|
||||||
|
|
Loading…
Add table
Reference in a new issue