UDP Output

From Silent Wings Wiki
Jump to: navigation, search

Note: This feature is implemented in Silent Wings 1.08. It will not work with earlier versions

Silent Wings can output various flight data to a configurable UDP socket. This can be useful for add-on developers and cockpit builders. Specifically, we support the Simmeters protocol for output of flight data to Simmeters instrument panels. In addition, we support the Condor format and our own binary format.

The following options in the "options.dat" file control the UDP protocol settings.

use_output_udp      = true
output_udp_protocol = simmeters
output_udp_address  = localhost
output_udp_port     = 6060
output_udp_rate     = 30

Simmeters Protocol

Condor Protocol

To enable it, use the option

   output_udp_protocol = condor

The Condor protcol consists of a bunch of strings on the format TAG=VALUE. The values sent by Silent Wings are (without the <> brackets):

time=<decimal hours>
airspeed=<absolute airspeed>
altitude=<altitude>
vario=<variometer value [1]>
evario=<variometer values [1]>
nettovario=<netto vario>
integrator=<integrated vario>
compass=<compass heading>
slipball=<ball angle (radians) [2]>
turnrate=<rad/sec>
yawstringangle=<radians>
radiofrequency=<current comm frequency>
yaw=<rotation about z axis, radians>
pitch=<rotation about y axis, radians>
bank=<rotation about x axis, radians>
quaternionx=<quaternion representation of aircraft orientation, X component>
quaterniony=<quaternion representation of aircraft orientation, Y component>
quaternionz=<quaternion representation of aircraft orientation, Z component>
quaternionw=<quaternion representation of aircraft orientation, W component>
ax=<accelleration along X axis> 
ay=<accelleration along Y axis>
az=<accelleration along Z axis>
vx=<velocity along X axis (m/s)> 
vy=<velocity along Y axis (m/s)> 
vz=<velocity along Z axis (m/s)> 
rollrate=<radians/second around X axis>
pitchrate=<radians/second around Y axis>
yawrate=<radians/second around Z axis>
gforce=<filtered g load>

Note [1]: The first variometer value is filtered with a slow filter to simulate a slower mechanical vario. The "evario" value is the variometer value that is normally indicated in the instrument panel.

Note [2]: The slip ball is calibrated to +/- 15 degrees in radians

All coordinate values are given in aircraft body coordinates which are defined as X forward, Y right and Z down.

Binary Protocol

The binary protocol is the most compact, and gives the best precision, but can be harder to program and debug. To enable it, use the option

   output_udp_protocol = binary

in the options.dat file.

The binary protocol sends the following data:

   unsigned int timestamp;          // Millisec  Timestamp
   double position_latitude;        // Degrees   Position latitude,
   double position_longitude;       // Degrees            longitude,
   float  altitude_msl;             // m         Altitude - relative to Sea-level
   float  altitude_ground;          // m         Altitude above gnd
   float  altitude_ground_45;       // m         gnd 45 degrees ahead (NOT IMPLEMENTED YET),
   float  altitude_ground_forward;  // m         gnd straight ahead (NOT IMPLEMENTED YET).
   float  roll;                     // Degrees
   float  pitch;                    // Degrees
   float  yaw;                      // Degrees
   float  d_roll                    // Deg/sec   Roll speed.
   float  d_pitch                   // Deg/sec   Pitch speed.
   float  d_yaw                     // Deg/sec   Yaw speed.
   float  vx                        // m/sec     Speed vector in body-axis
   float  vy 
   float  vz                
   float  vx_wind                   // m/sec     Speed vector in body-axis, relative to wind
   float  vy_wind
   float  vz_wind 
   float  v_eas                     // m/sec     Equivalent (indicated) air speed. 
   float  ax                        // m/sec2    Acceleration vector in body axis
   float  ay
   float  az
   float  angle_of_attack;          // Degrees   Angle of attack
   float  angle_sideslip;           // Degrees   Sideslip angle
   float  vario                     // m/sec     TE-compensated variometer.
   float  heading                   // Degrees   Compass heading.
   float  rate_of_turn              // Deg/sec   Rate of turn.
   float  airpressure               // pascal    Local air pressure (at aircraft altitude).
   float  density                   // Air density at aircraft altitude.
   float  temperature               // Celcius   Air temperature at aircraft altitude.

total size: 132 bytes

Debugging

To check that you have everything correctly set up, you can use the 'nc' or 'ncat' command which is available on both windows and linux. On Windows it is distributed in the NMap software.

Assuming that you have set the output to port 6060 you can type the following into a terminal window while Silent Wings is running:

 ncat -l -u localhost 6060

And the terminal window should be filled with the output of the protocol you have selected, for example with the condor protocol:

time=12.08
airspeed=30.327
altitude=1183.170
vario=-0.850
evario=-0.851
nettovario=0.000
integrator=-0.838
compass=220.21
...