Difference between revisions of "UDP Output"
(New page: ''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 us...) |
(→Debugging) |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
''Note: This feature is implemented in Silent Wings 1.08. It will not work with earlier versions'' | ''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 | + | 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 [http://www.simmeters.com Simmeters] instrument panels. In addition, we support the Condor format and our own binary format. |
− | use_output_udp = | + | The following options in the "options.dat" file control the UDP protocol settings. |
+ | |||
+ | use_output_udp = true | ||
output_udp_protocol = simmeters | output_udp_protocol = simmeters | ||
output_udp_address = localhost | output_udp_address = localhost | ||
Line 9: | Line 11: | ||
output_udp_rate = 30 | 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. | 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 | ||
− | unsigned int timestamp; | + | output_udp_protocol = binary |
− | double position_latitude; // | + | |
− | double position_longitude; // | + | in the options.dat file. |
− | + | ||
− | float altitude_ground; // | + | The binary protocol sends the following data: |
− | float altitude_ground_45; // | + | |
− | float altitude_ground_forward; // | + | unsigned int timestamp; // Millisec Timestamp |
− | float | + | double position_latitude; // Degrees Position latitude, |
− | float | + | double position_longitude; // Degrees longitude, |
− | float | + | float altitude_msl; // m Altitude - relative to Sea-level |
− | float d_roll | + | float altitude_ground; // m Altitude above gnd |
− | float d_pitch | + | float altitude_ground_45; // m gnd 45 degrees ahead (NOT IMPLEMENTED YET), |
− | float d_yaw | + | float altitude_ground_forward; // m gnd straight ahead (NOT IMPLEMENTED YET). |
− | float vx // m/sec | + | 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 vy | ||
float vz | float vz | ||
− | float vx_wind // m/sec | + | float vx_wind // m/sec Speed vector in body-axis, relative to wind |
float vy_wind | float vy_wind | ||
float vz_wind | float vz_wind | ||
− | float v_eas // m/sec | + | float v_eas // m/sec Equivalent (indicated) air speed. |
− | float angle_of_attack; // | + | float ax // m/sec2 Acceleration vector in body axis |
− | float angle_sideslip; // | + | float ay |
− | float vario // m/ | + | float az |
− | float heading // Degrees | + | float angle_of_attack; // Degrees Angle of attack |
− | float rate_of_turn // Deg/sec | + | float angle_sideslip; // Degrees Sideslip angle |
− | float airpressure // | + | 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 density // Air density at aircraft altitude. | ||
− | float temperature // Celcius | + | 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 [http://nmap.org/download.html 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 | ||
+ | ... | ||
[[Category:Interfaces]] | [[Category:Interfaces]] |
Latest revision as of 00:11, 5 February 2012
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 ...