FGRadar

From FlightGear wiki
Revision as of 10:59, 18 October 2012 by Icecode (talk | contribs)
Jump to navigation Jump to search
FGRadar
FGRadar icon.png
Developed by Fernando García (Icecode GL)
Written in C++
OS Cross platform
Development status Active (as of 10/2012)
Development progress 20}% completed
License GNU General Public License v3
Website

FGRadar is a free, open-source, multi-platform and stand-alone air traffic control (ATC) client for FlightGear currently under development (10/2012). It makes use of the SimGear library and the Nasal scripting language.

On the scripting side, it uses the GTK+ and Cairo wrappers for Nasal in order to perform GUI rendering and drawing operations, respectively.

Status (10/2012)

Under development as of October 2012 (no public release yet).

Planned Features

  • multiplayer support by sending/recieving packages from the MP servers
  • reading shapefiles in order to create terrain maps (OpenRadar style)
  • FGCom protocol support
  • Flight Planning support (might include support in fgms too)
  • Nasal command line to execute extension functions easily without scripts

Contributing

Contributors are welcome to join the project. C++ Developers should ideally have some experience with:

  • C++
  • GIT
  • CMAKE
  • MULTI-PLATFORM development

In addition, a little familarity with the SimGear/FlightGear code bases is a definite plus, because FGRadar re-uses some code from those.

Note: As of 11/2012, it will also be possible for non-C++ developers to contribute to the project via Nasal scripting, because FGRadar re-uses FlightGear's scripting subsystem. So anybody familiar with Nasal scripting in FlightGear, should feel quite at home in FGRadar. In addition to many of the extension functions found in FlightGear (such as setprop/getprop etc), FGRadar also adds GTK/CAIRO bindings for powerful GUI/2D drawing support.

If someone wants to join the project, give ideas, requests or opinions, feel free to do so. The repository is here: https://gitorious.org/fgradar

To get commit privileges, please get in touch with Icecode GL via the forum or directly via gitorious.

Design

  • Written in C++
  • Uses Doxygen for developer documentation
  • Multi-Platform support
  • Uses cmake as the build system
  • uses the SimGear library
  • uses GTK 2.0
  • uses CAIRO
  • scripting support via Nasal
  • Implements an SGSubsystem-based main loop, to re-use existing SG/FG code
  • Uses the FlightGear/SimGear Property Tree as its internal main data structure
  • Uses the FlightGear/FGMS networking stack (based on SGSocket)

Changelog / Completed

  • cmake support Done Done
  • main loop cleanup to prepare scripting support Done Done
  • the CMAKE build system should probably be re-structured such that each source directory gets its own CMakeList? Done Done
  • implement an SGSubsystem-based main loop Done Done
  • absorb useful stuff (gtk/cairo bindings) from "Nasal standalone" into scripting module, and use SimGear's Nasal Done Done
  • implement an SGApplication framework for SGSubsystem-based CLI/GUI apps Done Done

TODO (Nobody working on any of these)

  • add a "data" folder for scripts etc (fg-root), needs to be installed via CMake
  • use simgear::ResourceManager::instance()->addBasePath(fg_root, simgear::ResourceManager::PRIORITY_DEFAULT) for data folder access
  • apt.dat version 850 parsing (currently only 810 is supported)
  • more map projections (only the Mercator projection is available right now)

Known Issues

  • The NasalSys.cxx file uses gettimeofday(), which may not be available on Windows - we need to add CMake magic to detect availability of it (already done by FG!) Pending Pending
  • Determine if we need to find a better solution for GTK's blocking main loop than jusing doing gtk_main_iteration_do() (threading? )Pending Pending

Work in Progress

  • improved cross-platform support, so that FGRadar also works on Windows 50}% completed
  • Nasal scripting support 80}% completed
  • re-add and port submodule support for scripting, so that multiple files can be loaded into the same namespace Pending Pending
  • start using the SimGear-based logging facilities (SG_LOG) Pending Pending
  • add a SG_OSGApplication inherited from SGApplication which provides an osgviewer-based window (see $FG_SRC/utils/fgviewer/fgviewer.cxx) to support Canvas 20}% completed
  • add a new SGSubsystem that connects to fgms and gets a list of aircraft, i.e. via http://mpserver01.flightgear.org:5001/ and SimGear's io/netChat 10}% completed (stub exists) Pending Pending
  • improved Nasal GTK wrapper (port from GTK 2.0 to 3.x) Pending Pending
  • An XML configurable GUI using Gtk (glade) Pending Pending
  • merge Nasal progress from initial-scripting-support branch into master Pending Pending
  • start using the property-tree 50}% completed

Related content