Author: Melchior FRANZ
Keywords: flightgear,fgfs,flightsimulator,simulator,remote,control,perl,c,c++

# FlightGear: Remote control

FlightGear has several interfaces that provide access to internal parameters. The HTTP interface is best suited for human interaction via a web browser. The telnet interface is the ideal choice for remotely controlling FlightGear by means of external programs.

To activate FlightGear's telnet server capabilities, call it with a --telnet specifiaction:

>     $ fgfs --telnet=socket,bi,5,localhost,5501,tcp

> socket: | FlightGear protocol
> bi: | bidirectional
> 5: | polling frequency in Hertz
> localhost: | server name or IP-address
> 5501: | server port
> tcp: | internet protocol type

In newer versions of FlightGear just type:

>     $ fgfs --telnet=5501

To learn more about the supported commands, connect to FlightGear with a telnet program and type in "help<RETURN>". This is what you'll get:

>     $ telnet localhost 5501
>     Trying ::1...
>     Trying 127.0.0.1...
>     Connected to localhost.
>     Escape character is '^]'.
>     help

>     Valid commands are:

>     help             show help message
>     ls [<dir>]       list directory
>     dump             dump current state (in xml)
>     cd <dir>         cd to a directory, '..' to move back
>     pwd              display your current path
>     get <var>        show the value of a parameter
>     show <var>       synonym for get
>     set <var> <val>  set <var> to a new <val>
>     data             switch to raw data mode
>     prompt           switch to interactive mode (default)
>     quit             terminate connection

>     />

Now you can browse in the property system like in a Linux file system with cd, ls, pwd.

Here you can download a sample script written in Perl, that shows how to access and manipulate FlightGear's internal parameters. It can be started before FlightGear (in which case it tries up to 2 minutes to connect) or afterwards. Then it picks a random AGL altitude and checks every 5 seconds if the aircraft has already climbed at this height. Now it starts to empty all four tanks, one after the other, until the engines stop working. Try to find a place where you can land safely. :-)

>     $ fgfsscript&
>     $ fgfs --telnet=socket,bi,5,localhost,5501,tcp

The script defaults to localhost and port 5501, but you can let the script control FlightGear on another host and under another port.

>     $ fgfsscript some.host.org 1234&

Demo programs are available in:

- C
- C++
- Perl (same as mentioned above)