FreeVario Communication Interface
The serial port of the FreeVario communicates via a driver that is using the XCsoar driver programming interface. The interface is communicating at a a baud rate of 115200.
We are using this interface to send data to XCSoar and receive data from XCSoar to the vario. The vario can not be used standalone and needs input from XCSoar (or another system) using NMEA styled messages.
The FreeVario is a typ of „external Display“ with some additions features like, changing the MC, QNH and bugs. All the information / data that is shown at the display is provided by XCSoar. The sound is generated by the FreeVario unit by using the given values of XCSoar.
On boot of the FreeVario system, a NMEA message is send to XCSoar (or the system on the „other“ side) that both unity are in sync. A MC of 0.5 is set by the FreeVario using the commands described below and the default XCSoar QHN is set to 1013 and bugs to 0 percentage on first boot.
Because this value is set by the NMEA serial interface to XCSoar and looped back the the FreeVario by getting all updates back via NMEA, the system can check if the values are set and watch if the units are in sync.
Now when the value is changed by XCSoar, the value is also send to the FreeVario system, will be saved and showed on the display. If a value is changed by the FreeVario system this is also done by a NMEA message.
PTT and mute function
From firmware V.1.1.1 the FreeVario has a mute function when using the radio. The mute function of the FreeVario requires at least the image of FreeVario from 20295 on the OpenVario. In addition, at least firmware V.1.1.1 must be installed on the sound board as well as on the display board. If you are using the sound board with the 3-pin connector on the back, but without the diode D1, a small change has to be made here. Please write me about this by email (email@example.com).
Commands on the NMEA interface
We are using messages styled with the name syntax:
$PFV, [command] , [subcommand or value] , [checksum]
We implemented this commands in the XCSoar driver to be used by the FreeVario project
Writing data to XCSoar:
- $PFV,B,S,[0 – 50] – set Bugs to percent by capacity 0 – 50
- $PFV,M,S,[MC value as double] – set MC External to defined value
- $PFV,M,U – set MC external up by 0.1 m/s
- $PFV,M,D – set MC external down by 0.1 m/s
- $PFV,F,C set Vario FlightMode to Circle
- $PFV,F,S set Vario SpeedToFly
- $PFV,Q,S,[QHN-Wert als Double] set QNH to defined value
- $PFV,S,S,[0 or 1 as Integer] – activate or deactivate mute function
Receive data from XCSoar:
- $PFV,HIG,[value as double]
- get barometric hight if not available GPS hight is provided. If this is not available too, value is 0.0 m
- $PFV,HAG,[value as double]
- get hight above ground in m if available
- $PFV,TEM,[value as double]
- get temperature in degree Celsius if available
- $PFV,TAS,[value as double]
- get true airspeed (TAS) in km/h if available
- $PFV,GRS,[value as double]
- get ground airspeed in km/h if available. If value is not valid -1 is returned
- $PFV,STF,[value as double]
- get speed to fly (STF) in km/h if available
- $PFV,MOD,[C oder S]
- get actual mode in XCSoar C = cycling , s = speed to fly
- $PFV,VAA,[value as double]
- get vario average last 30 seconds in m/s
- $PFV,MCE,[value as double]
- get the external MC used by external devices in XCSoar
- $PFV,MUT,[value as integer]
- get the value, if mute function is activ or inactiv