FG1000: Difference between revisions

2,297 bytes removed ,  15 January 2018
Updates to current status.
No edit summary
(Updates to current status.)
Line 15: Line 15:


== Current Status ==
== Current Status ==
Stuart has been in contact with the author (Sébastien MARQUE) of the ZKV-1000. While he himself doesn't plan to implement a G1000, he's very happy for it to be developed in that direction. Stuart's broad plan is to make a copy of this in fgdata or fgaddon, and use it as the basis for a G1000, taking the opportunity to use [[Canvas MFD Framework|Richard's MFD code]] and making as generic pages as possible for other glass cockpit applications.<ref>{{cite web
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35976465/
  |title  =  <nowiki> [Flightgear-devel] G1000 (was Re: Nasal property lookup performance) </nowiki>
  |author =  <nowiki> Stuart Buchanan </nowiki>
  |date  =  Aug 1st, 2017
  |added  =  Aug 1st, 2017
  |script_version = 0.40
  }}</ref>
As of 01/2018, an initial implementation of the MFD is available on git/next from the Debug Menu->FG1000.  It includes a native [[Canvas]]-based surround using an SVG file, Engine Information System (EIS), page group selection using the FMS control.
Most of the underlying Canvas [[MapStructure]] layers are now written (though they require styling, and/or would benefit from replacement with vector data).
Stuart has been doing some further work on the FG1000 implementation over the christmas break 2017. Key changes are:
# Using Richard's [[Emesary]] IPC frame to link between the MFD and underlying simulation state. This should make it easy to run the MFD on a separate FG instance, and provides a good demarkation between the individual aircraft systems and the FG1000 itself.
# Create various underlying classes to support UI features - highlighting, editing. The idea here is that one can create the UI as an SVG file, and these are used to control it. For an example of this in use, see the Airport Information page. Press the CRSR knob to create a cursor on the ICAO airport ID, then use the inside FMS knob to start editing the ID. This should make creating most of the rest of the pages far easier. See [[Canvas MFD Framework]] for details of the elements now supported.


There's still a huge number of pages to write, and the pages around route planning will likely be particular "fun", but it should be far faster now these blocks are in place.  
As of 01/2018, an initial implementation of the MFD is available on git/next from the Debug Menu->FG1000.  It includes a native [[Canvas]]-based surround using an SVG file, Engine Information System (EIS), page group selection using the FMS control, plus a selection of pages (see below).


The [[FG1000]] wiki page shows the pages that have been created so far (4 out of 28!). Stuart is pretty happy with the overall architecture now, so if anyone wants to create some of the pages they are very welcome to do so!<ref>{{cite web  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36179339/  |title =  <nowiki> Re: [Flightgear-devel] FG1000 Status Update </nowiki>  |author =  <nowiki> Stuart Buchanan </nowiki>  |date  =  Jan 5th, 2018  |added  =  Jan 5th, 2018  |script_version = 0.36  }}</ref>
There's still a huge number of pages to write, and the pages around route planning will likely be particular challenging, but it should be far faster now these blocks are in place.  The other key piece that hasn't been started is the PFD.  If anyone is interested in this as a project (it should be easier
than the MFD!) then please get in touch with Stuart. Equally, if anyone is interested in creating specific page, please also get in touch.  The various Nearest... and ...Information pages should be quite easy to do based on the pages that have been written alreadySee the Design Notes for details.


Next steps:
Next steps:
Line 41: Line 25:
* Styling the pages - making the iconography match Garmin exactly.
* Styling the pages - making the iconography match Garmin exactly.


Over the last couple of days Stuart pushed some further updates to the FG1000.
It is now pretty usable as a moving map and EFB, though Stuart is still planning to integrate the route manager.  
 
# Integration with NAV/COM properties via an Emesary bridge. Amongst other things, this now means that you can select a frequency from (say) the Nearest Airports page, press ENT and have it loaded into the standby NAV/COM channel of the selected radio.
# A new GUI using an SVG kindly created by Michat on the forum.
 
It is now pretty usable as a moving map and EFB, though Stuart is still planning to integrate the route manager. He think it's now at the stage where it would be worth starting integration work with some aircraft. In particular it would be good to offer a version of the Cessna 172 with it. Stuart will contact the c172p-detailed team to see if they are interested. One major piece of work Stuart hasn't yet started is writing the PFD. If someone is interested in helping out, that would be a very good piece of work to be able to hand off, as it's somewhat self-contained so there's less problem stepping on each others toes, and the building-blocks for writing it are already there. If anyone is interesed, get in touch :) <ref>{{cite web
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36189981/
  |title  =  <nowiki> Re: [Flightgear-devel] FG1000 Status Update </nowiki>
  |author =  <nowiki> Stuart Buchanan </nowiki>
  |date  =  Jan 14th, 2018
  |added  =  Jan 14th, 2018
  |script_version = 0.36
  }}</ref>
 


You can access it from the Debug menu.  All the buttons and knobs are set up, though some of them don't actually do anything!
== A Cheat's Guide to Using the FG1000 ==
See the Garmin website for documentation, but for a quick cheat's guide:


- Use the outer FMS knob (shift-mouse wheel on the FMS knob on the bottom right) to navigate through the page groups.
For those without the time or interest to read the G1000 User Guide, here's a very quick run-down on navigating through the MFD:


- Use the inner FMS knob (mouse wheel on the FMS knob on the bottom right) to navigate through the pages within the group.
* Use the outer FMS knob (shift-mouse wheel on the FMS knob on the bottom right) to navigate through the page groups.
 
* Use the inner FMS knob (mouse wheel on the FMS knob on the bottom right) to navigate through the pages within the group.  The currently selected page is shown in blue. If you stop moving the cursor, the page will be loaded in 0.5s.
- To moved around the page, click on the FMS knob, and then use the FMS knob to navigate around the page.
* Within a page, click on the FMS knob.  This activates the cursor (CRSR) and you should see some element highlighted on the page.  You can navigate around the page using the outer and inner FMS knobs.  The Outer FMS knob (shift-mouse wheel) typical moves the cursor between elements.  The Inner FMS knob typically changes the selected item.
 
* If you have a frequency selected, press the ENT key to load it into the standy NAV/COM frequency as appropriate.
- Press ENT when any frequency is highlighted to load it into the standby frequency of the NAV/COM.
* The NAV/COM controls towards the top of the UI work as you'd expect - you've got two channel NAV/COM with an active and standby frequency and automatic ID of NAV frequenciesThey all integrate with the standard properties, so should work automatically with most aircraft.
 
<ref>{{cite web
  |url    =  https://forum.flightgear.org/viewtopic.php?p=326383&sid=3bf022788187248462943dc0bf1a47ba#p326383
  |title =  <nowiki> Re: Canvas G1000 </nowiki>
  |author =  <nowiki> stuart </nowiki>
  |date  =  Jan 14th, 2018
  |added  =  Jan 14th, 2018
  |script_version = 0.36
  }}</ref>


== Page Status ==


This is the current status of the individual pages.  "Done" indicates that they are functionally complete, though the iconography is not correct.
This is the current status of the individual pages.  "Done" indicates that they are functionally complete, though the iconography is not correct.
Line 152: Line 114:
| MENU key || Not started ||  
| MENU key || Not started ||  
|-
|-
| Header (COM/NAV/GPS || Started || NAV/COMM state is pushed from standard properties, but the fascia buttons are not yet connected.
| NAV/COM  || 95% Complete || Volume controls to be added
|-
| GPE Header || Not starter ||
|}
|}


Line 479: Line 443:
* MFD.nas - top level MFD device, loads the other Nasal files (likely to be moved elsewhere later) and pages.
* MFD.nas - top level MFD device, loads the other Nasal files (likely to be moved elsewhere later) and pages.
* PageGroupControllers.nas - controller for the Page Group display in the bottom right of the MFD, controlled by the FMS knob, and which allows selection between different page groups and individual pages.
* PageGroupControllers.nas - controller for the Page Group display in the bottom right of the MFD, controlled by the FMS knob, and which allows selection between different page groups and individual pages.
* [PageName]/[PageName].nas - MFD page, inheriting from the MDF_Generic.PFD_Page.  Creates any required MapStructure and hierarchy of softkeys.
* [PageName]/[PageName].nas - MFD page, inheriting from the MFDPage.nas.  Creates any required MapStructure and hierarchy of softkeys.
* [PageName]/[PageName]Controller.nas - Controller for the MFD page and the MapStructure layers.
* [PageName]/[PageName]Controller.nas - Controller for the MFD page and the MapStructure layers, inheriting from MFDPageController.nas
* [PageName]/[PageName]Style.nas - Style controls for the MapStructure layers for the give Page.
* [PageName]/[PageName]Style.nas - Style controls for the MapStructure layers for the given Page.
* [PageName]/[PageName]Options.nas - Options for the MapStructure layers for the give Page.
* [PageName]/[PageName]Options.nas - Options for the MapStructure layers for the given Page.
 
Key design notes:
* Most of the underlying Canvas [[MapStructure]] layers are now written (though they require styling, and/or would benefit from replacement with vector data).
* [[Emesary]] IPC framwork is used to link between the MFD and underlying simulation state. This should make it easy to run the MFD on a separate FG instance, and provides a good demarkation between the individual aircraft systems and the FG1000 itself.
* Various underlying UI classes are used to handle highlighting, selection and scrolling of fields.  See [[Canvas MFD Framework]] for details of the elements now supported.
 
 


== Resources ==
== Resources ==