Canvas glass cockpit efforts

From FlightGear wiki
Jump to navigation Jump to search


This article is a stub. You can help the wiki by expanding it.


This is a list of Canvas related glass cockpit efforts, i.e. projects implementing modern MFD avionics.

Goal Description Progress People Comments
747 PFD ... 40}% completed (people) ...
NavDisplay ... 60}% completed (people) ...
Garmin GPSMap 196 ... 20}% completed F-JJTH ...
Avidyne Entegra R9 ... 40}% completed (people) ...
Canvas EFB Framework ... 10}% completed (people) ...

XML Framework

Note  This is work in progress - the idea is to identify required building blocks to easily specify most MFD functionality in a generic fashion, without requiring a ton of custom Nasal code and without being specific to a single type of MFD. The whole concept is based on FlightGear_Missions_and_Adventures#XML_Extension_Framework, i.e. providing a Nasal-space mechanism to expose and re-define building blocks to XML space.

The Nasal/Canvas data structures will be transparently created and compiled for each MFD. Each MFD consists of an arbitrary number of buttons, modes and pages. Each MFD can be instantiated multiple times, and each MFD is designed to be aircraft/instrument agnostic, i.e. also works just in a conventional Canvas dialog. Buttons can trigger and switch between modes, and modes may have pages (conventionally implemented through a single SVG file). Each page consists of an arbitrary number of page elements, which can in turn be animated/updated via listeners and timers. Should look at existing displays, especially the NavDisplay and the update() method in navdisplay.mfd, but the most complete test-case would probably be the Avidyne Entegra R9


Note  Contributors wanting to check out the topics/canvas-mfd-framework branch, need to follow these 3 steps:
  • git remote add canvas-hackers git@gitorious.org:fg/canvas-hackers-fgdata
  • git fetch canvas-hackers
  • git checkout --track -b topics/canvas-mfd-framework canvas-hackers/topics/canvas-mfd-framework

This will give you a local branch named topics/canvas-mfd-framework, so that you can easily pull/push changes. When pulling, it makes sense to pull with --rebase

Please never push directly to the master/next branches, and please don't push force (-f) either.

Files

Each MFD instrument will consist of at least the following files:

  • a PropertyList-encoded XML file specifying the instrument
  • a raster image used as the skin/background image
  • a SVG image used for placing buttons and event handling

Header

  • Canvas size/view
  • colors/transparency

Primitives

  • Button
  • Mode
  • Page
  • Page-Element
  • Task (maketimer based)
  • Event handling (listener based)
<PropertyList>
 <MFD>
  <version>1.0</version>
  <name>myMFD</name>
  <description></description>
  <debug>1</debug>
  <resolution>320x240</resolution>

 <buttons>

  <button>
   <name></name>
   <property></property>
  </button>

 ...
 </buttons>

 <!-- TODO: support SGCondition here -->
 <modes>
  <mode>
  </mode>
 </modes>

 <pages>
  <page>
   <name>panel-page</name>
   <svg-filename>panels.svg</svg-filename>
   <nasal></nasal>
  </page>
 </pages>

 </MFD>
</PropertyList>