Canvas glass cockpit efforts: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
Line 29: Line 29:
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]] }}
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]] }}


 
{{Git Topic Branch|remotebranch=topics/canvas-mfd-framework|localbranch=topics/canvas-mfd-framework}}


=== Header ===
=== Header ===

Revision as of 19:39, 7 June 2014


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.

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>