You are on page 1of 15

GTN750 Integrator's guide

V1.31
GTN750 Integrator's guide V1.31
Files
Unique aircraft ident
Interface files
Panel.cfg file
Sound
Cockpit xml definition file
Variables
OBS
GS Indicator
Switching GPSs
G1000 replacement
panel.cfg file
sound
WTT Mode
WTT mode configuration file
WTT mode for the G3X and Aera panels
Autopilot gauge
PMS50 autopilot hidden gauge (APGA)

This document is intended for virtual aircraft manufacturers who wish to integrate the GTN750
and/or GTN650 into their cockpit.

The aircraft manufacturer must provide the 3D representation of the GTN750/GTN650. However
you can use our own bezel available here .

The GTN 750 is delivered as a separate package that is installed in the community folder by the
end user.

Your aircraft detects if the PMS50 package for the GTN750 is installed and in the community
folder and, if yes, it provides a way to switch to it.
Files
The files to be installed with the aircraft package are located in the files folder of the integration
kit.

There are 2 subfolders:

interface contains all the code that interfaces with the instrument.
sounds contains the sound files.

Important: Be sure to drop the files from the latest GTN750 package. This documentation
version is for the integration files taken from GTN750 package v2.1.76 minimum.

Unique aircraft ident


You must define an IDENT of the form:

"MyCompany-MyAircraft"

where MyCompany and MyAircraft must be replaced by your real names. Be sure to not use any
space nor special characters, only letters a to z, digits 0 to 9 and the '-' character.

This is to be sure to identify uniquely your files inside the virtual file system.

In the rest of this document, YOUR-IDENT means your own ident.

Interface files
From the root of the package, create the following folder:

html_ui/Pages/VCockpit/Instruments/NavSystems/YOUR-IDENT/

Then go to the integration interface subfolder and copy the pms50_gtn750_int folder in this
newly created folder.
Panel.cfg file
Your panel.cfg file must include the code to call the HTML gauge. Here is an example of such a
code:

[Vcockpit08]
Background_color = 0,0,0
size_mm = 650,768
visible = 0
pixel_size = 650,768
texture = $GTN750_screen
htmlgauge00= NavSystems/YOUR-IDENT/pms50_gtn750_int/gtn750_int.html, 0, 0, 650,768

[Vcockpit09]
Background_color = 0,0,0
size_mm = 650,290
visible = 0
pixel_size = 650,290
texture = $GTN650_screen
htmlgauge00= NavSystems/YOUR-IDENT/pms50_gtn750_int/gtn650_int.html?index=2, 0, 0, 650,290

The name of the texture is up to you and depends of your 3D model

The screen dimensions must stay at 650 by 768 for the GTN750 and 650 by 290 for the GTN650.

If you have a dual GTN750 installation in your cockpit or a combo GTN750/650, you can set the
index of the instrument by adding an index as an URL parameter:

htmlgauge00= NavSystems/YOUR-IDENT/pms50_gtn750_int/gtn650_int.html?index=2, 0, 0, 650,768

By default the index is 1. If the index is greater than 1, the instrument will be associated to
COM2/NAV2 instead of COM1/NAV1.
Your aircraft must be validated by PMS50 and you must provide PMS50 a free license to test
it.

Sound
The integration kit delivers the sound for the instrument's touch screen buttons. It's up to the
manufacturer to provide other sounds for the real 3D buttons of the instrument.

The sound file button_gtn750.wav must be installed in the sound folder of the aircraft and the
sound.xml file must be modified.

Just add the following line in the <AvionicSounds> section:

<AvionicSounds>
...
<Sound WwiseData="false" WwiseEvent="custom_sound_12" FileName="button_gtn750" ViewPoint="Inside"/>
</AvionicSounds>

Cockpit xml definition file


This is the place to link the 3D animations to HTML events of the GTN750 instrument.
Here is the list of the HTML events for the GTN750:

GTN750_HomePush
GTN750_HomePushLong
GTN750_DirectToPush
GTN750_KnobSmallInc
GTN750_KnobSmallDec
GTN750_KnobLargeInc
GTN750_KnobLargeDec
GTN750_KnobPush
GTN750_KnobPushLong
GTN750_VolInc
GTN750_VolDec
GTN750_VolPush
Here is the list of the HTML events for the GTN650:

GTN650_HomePush
GTN650_HomePushLong
GTN650_DirectToPush
GTN650_KnobSmallInc
GTN650_KnobSmallDec
GTN650_KnobLargeInc
GTN650_KnobLargeDec
GTN650_KnobPush
GTN650_KnobPushLong
GTN650_VolInc
GTN650_VolDec
GTN650_VolPush

So the xml definition <ModelBehaviors> section must be modified to include the necessary
statements.
Here is an example of such a definition:

<ModelBehaviors>
<Include Path="Asobo\Common.xml"/>
<!-- PMS50 GTN750 -->
<Component ID="GTN750_Vol" Node="GTN750_Vol">
<UseTemplate Name="ASOBO_GT_Knob_Infinite_Push_Timed">
<ANIM_NAME_KNOB>GTN750_Vol</ANIM_NAME_KNOB>
<ANIM_NAME_PUSH>GTN750_VolPush</ANIM_NAME_PUSH>
<CLOCKWISE_CODE>(&gt;H:GTN750_VolInc)</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>(&gt;H:GTN750_VolDec)</ANTICLOCKWISE_CODE>
<LEFT_SINGLE_CODE>(&gt;H:GTN750_VolPush)</LEFT_SINGLE_CODE>
</UseTemplate>
</Component>
<Component ID="GTN750_KnobSmall" Node="GTN750_KnobSmall">
<UseTemplate Name="ASOBO_GT_Knob_Infinite_Push_Timed">
<ANIM_NAME_KNOB>GTN750_KnobSmall</ANIM_NAME_KNOB>
<ANIM_NAME_PUSH>GTN750_KnobSmallPush</ANIM_NAME_PUSH>
<CLOCKWISE_CODE>(&gt;H:GTN750_KnobSmallInc)</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>(&gt;H:GTN750_KnobSmallDec)</ANTICLOCKWISE_CODE>
<SHORT_CLICK_CODE>(&gt;H:GTN750_KnobPushLong)</SHORT_CLICK_CODE>
<LONG_CLICK_CODE>(&gt;H:GTN750_HomePush)</LONG_CLICK_CODE>
<LONG_CLICK_TIME>1</LONG_CLICK_TIME>
</UseTemplate>
</Component>
<Component ID="GTN750_KnobLarge" Node="GTN750_KnobLarge">
<UseTemplate Name="ASOBO_GT_Knob_Infinite">
<ANIM_NAME>GTN750_KnobLarge</ANIM_NAME>
<CLOCKWISE_CODE>(&gt;H:GTN750_KnobLargeInc)</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>(&gt;H:GTN750_KnobLargeDec)</ANTICLOCKWISE_CODE>
</UseTemplate>
</Component>
<Component ID="GTN750_HomePush" Node="GTN750_HomePush">
<UseTemplate Name="ASOBO_GT_Push_Button_Timed">
<ANIM_NAME>GTN750_HomePush</ANIM_NAME>
<SHORT_CLICK_CODE>(&gt;H:GTN750_HomePush)</SHORT_CLICK_CODE>
<LONG_CLICK_CODE>(&gt;H:GTN750_HomePushLong)</LONG_CLICK_CODE>
</UseTemplate>
</Component>
<Component ID="GTN750_DirectToPush" Node="GTN750_DirectToPush">
<UseTemplate Name="ASOBO_GT_Push_Button">
<ANIM_NAME>GTN750_DirectToPush</ANIM_NAME>
<LEFT_SINGLE_CODE>(&gt;H:GTN750_DirectToPush)</LEFT_SINGLE_CODE>
</UseTemplate>
</Component>
</ModelBehaviors>

You should also manage the starting of the instrument as you do for the other Gauges.

The instrument identifier for the GTN750 must be GTN750 .


The instrument identifier for the GTN650 must be GTN650 .

Important. If you have associated the instrument to COM2/NAV2 (index=2 in the panel.cfg
file), the H variables sent to the instrument must be modified by adding "_2". For example
the variable H:GTN650_HomePush should be changed to H:GTN650_2_HomePush .

Variables
The GTN750 code provides some L variables. These are local variables that you can get from
your cockpit xml definition file or from another gauge.

the variable L:PMS50_GTN750_INSTALLED tells if the GTN750 has been installed or not
(true or false). This variable can be used to operate a switch between 2 GPSs in your cockpit
xml definition file.
the variable L:PMS50_GTN750_RUNNING tells if the GTN750 code has been started or not
(true or false). If the cockpit has 2 GTN750 units, this variable will be set to true if at least 1
unit is working.
the variable L:PMS50_GTN650_INSTALLED tells if the GTN650 has been installed or not
(true or false). This variable can be used to operate a switch between 2 GPSs in your cockpit
xml definition file.
the variable L:PMS50_GTN650_RUNNING tells if the GTN650 code has been started or not
(true or false). If the cockpit has 2 GTN650 units, this variable will be set to true if at least 1
unit is working.
the variable L:PMS50_GTN_UNIT_index_KNOBMODE where index is the GTN750 UNIT
COM/NAV index (1 or 2) tells the current action managed by the lower right knob. Current
values can be 0 for radio settings, 1 for OBS angle setting and 2 for Waypoint selection.
the variable L:PMS50_GTN_UNIT_index_KNOBCOMNAV where index is the GTN750 UNIT
COM/NAV index (1 or 2) tells if the lower right knob (while in radio set mode) deals with
COM (value 0) or NAV (value 1).
the variable L:PMS50_GTN_UNIT_index_COMNAV_INDEX where index is the GTN750 UNIT
COM/NAV index (1 or 2) tells if the current radio displays COM1/NAV1 (value 1) or
COM2/NAV2 (value 2). This variable makes sense because the GTN750 has an option to
override the current COM/NAV index in the radio part (see the main documentation)
allowing to set COM2/NAV2 even if the aircraft has a single GTN unit.
the variable L:PMS50_GTN750_VERSION gives the software version number. This is a
number of the form Mmmmbbb where M is the major version number, mmm is the minor
version number and bbb is the build number. Ex: version "2.1.47" will be given as 2001047.

These variables should stay in read only mode. Don't change their value.

OBS
The GTN750 implements the OBS feature. There is a way to set the OBS radial directly from the
GPS using the knobs but it's more realistic if your airplane allows setting it by the way of a
HSI/CDI mechanical OBS if you have one.

There is some few lines of code to modify to implement that. In your HSI/CDI code you should
find some code like this:

<CLOCKWISE_CODE>
(&gt;K:VOR1_OBI_INC)
</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>
(&gt;K:VOR1_OBI_DEC)
</ANTICLOCKWISE_CODE>

You should replace it by that:

<CLOCKWISE_CODE>
(&gt;K:VOR1_OBI_INC)
1 (A:GPS OBS ACTIVE,number) == if{ (A:NAV OBS:1, Degree) dnor (&gt;K:GPS_OBS_SET) }
</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>
(&gt;K:VOR1_OBI_DEC)
1 (A:GPS OBS ACTIVE,number) == if{ (A:NAV OBS:1, Degree) dnor (&gt;K:GPS_OBS_SET) }
</ANTICLOCKWISE_CODE>

GS Indicator
Currently, the sim do not provide a GS indicator for RNAV approaches. As a workaround we
provide our own GSI needle variables that work with the same range and values as the stock
variables.
These variables are L:GTN750_HSI_GSI_NEEDLE_VALID (true or false) and
L:GTN750_HSI_GSI_NEEDLE (-119 to +119). They work for both ILS and RNAV approaches.
The GSI Needle value of 119 correspond to a 0.7 degree angle error.
There is an optional GS indicator in the GTN50 map page.

If you integrate the WTT mode as a default (see chapter "WTT mode" in this
documentation), you can use the standard sim variables for the GSI. If you still use our
specific variables in WTT mode, that will work too.

Switching GPSs
You may want to be able to switch between the GTN750 and another GPS if the GTN package is
not installed.

For that you have to define both instruments in your 3D cockpit and manage the toggle
visibility.

There is some extra work here.

We are providing a variable named L:XMLVAR_GPS_DISABLED_GTN750 allowing to unload the


GTN750/GTN650 when it's not visible. It's important to use this variable otherwise you may have
some incompatibility between 2 GPSs in your cockpit.

Working Title also provides some similar variables to unload the code of their GPSs (typically the
GNS530 and GNS430).

Example of switching code in the xml definition file for switching between the WT GNS530 (on
COM1) and the GTN750:

<CallbackCode>
(L:MY_SWITCH, bool) 0 ==
if{
(L:MY_SWITCH, bool) ! (&gt;L:MY_SWITCH, bool)
1 (&gt;L:XMLVAR_GPS_DISABLED_GTN750,bool)
0 (&gt;L:XMLVAR_GPS_DISABLED_AS530_1,bool)
}
</CallbackCode>
...
<CallbackCode>
(L:MY_SWITCH, bool) 1 ==
if{
(L:MY_SWITCH, bool) ! (&gt;L:MY_SWITCH, bool)
0 (&gt;L:XMLVAR_GPS_DISABLED_GTN750,bool)
1 (&gt;L:XMLVAR_GPS_DISABLED_AS530_1,bool)
}
</CallbackCode>

You should also set this variable at airplane loading time.


Note: there is only one variable whatever the number of units so the
L:XMLVAR_GPS_DISABLED_GTN750 variable must set to false (0) if at least one GTN750 or
GTN650 unit is visible and to true in the other cases (no GTN750 or GTN650 visible).

Important:
Combinations like GNS/GNS, GTN/GTN or GNS/GTN work , but not GTN/GNS.
The reason for that is currently in the WT GNS code. Their autopilot module is delivered by the
GNS that has the index 1 (COM1/NAV1). If there is no GNS as index 1 (or if it's hidden), there is
no autopilot manager module in the cockpit (so no autopilot).
Updated: from the GTN version 2.1.75, we are able to synchronize a second WT unit with our
GTN750 as first unit so the combination GTN/GNS may work. This is an experimental behavior
and we may have side effects. For that to work the WTT mode must be integrated (see the
chapter "WTT Mode" in this documentation)
Anyway it's recommended to not mix the GPSs from different providers. If you have 2 units, it's
best to have GTN/GTN or GNS/GNS combination and avoid GNS/GTN or GTN/GNS.

G1000 replacement
We provide packages for some of the MSFS aircrafts equipped with a G1000Nxi. The GTN750
then replaces the G1000Nxi MFD.

However, it may happens that a third party MOD provides its own panel.cfg file.

If you want to keep your MODs, the only way is to modify yourself the panel.cfg file in the MOD
package.

The same situation may occur for a protected aircraft that comes from the marketplace. If you
have access to its panel.cfg file, then you can modify it in a way for the GTN750 to work.

The GNT650 is not available as a G1000 replacement.

Note: G1000 replacement is not recommended now. It has been made for early adoption
of the GTN750. It's better to not replace the G1000 and use the GTN750 toolbar panel.

panel.cfg file
Open the file.cfg and find the block corresponding to the G1000Nxi MFD. It's the one calling the
WTG1000_MFD.html gauge:

[VCockpit02]
size_mm=1024,768
pixel_size=1024,768
texture=$AS1000_PFD_3
background_color=42,42,40
htmlgauge00=NavSystems/WTG1000/MFD/WTG1000_MFD.html,0,0,1024,768

Make it an hidden gauge (size set to 0 and modify texture name). For that change the block to:

[VCockpit02]
size_mm=0,0
pixel_size=0,0
texture=$NONE
background_color=42,42,40
htmlgauge00=NavSystems/WTG1000/MFD/WTG1000_MFD.html,0,0,0,0

Then copy this block as a new VCockpit with a number that follows the highest Vcockpit number
and set its content as below (keep the G1000Nxi MFD texture name):

[VCockpit03]
size_mm=1024,768
pixel_size=1024,768
texture=$AS1000_PFD_3
background_color=42,42,40
htmlgauge00=NavSystems/PMS1750/GTN1750.html,0,0,1024,768

sound
If you have access to the sound file of the aircraft, you will be able to add the GTN750 sound.

Do that only if you have the necessary skills about MSFS package files.

The sound file button_gtn750.wav must be installed in the sound folder of the aircraft and the
sound.xml file must be modified.

Just add the following line in the <AvionicSounds> section:

<AvionicSounds>
...
<Sound WwiseData="false" WwiseEvent="custom_sound_12" FileName="button_gtn750" ViewPoint="Inside"/>
</AvionicSounds>

Then the layout.json file should also be modified to include the button_gtn750.wav file.

You can take one of the aircraft packages we provide as an example.

WTT Mode
The WTT is a framework developed by the Working Title company (owned by Microsoft) that
completely overrides the stock flight plan and autopilot management. It brings more features
than the stock framework. This will be the future standard in the sim.
We strongly recommend to integrate it natively in your aircraft.

For your aircraft to be compatible to this technology, it is necessary to add 2 hidden gauges in
the panel.cfg.

Here are the hidden gauges to add (Change the VCockpit numbers nn and nn+1):

[VCockpitnn]
size_mm=0,0
pixel_size=0,0
texture=$NONE
background_color=42,42,40
htmlgauge00= NavSystems/YOUR-IDENT/pms50_gtn750_int/AP1.html, 0,0,0,0

[VCockpitnn+1]
size_mm=0,0
pixel_size=0,0
texture=$NONE
background_color=42,42,40
htmlgauge00= NavSystems/YOUR-IDENT/pms50_gtn750_int/AP2.html, 0,0,0,0

In addition, you can set a configuration file path for the autopilot (see below)

There is nothing to do with the 3D tools (the texture name is a fake one).

Attention! Be sure that the files AP1.html and AP2.html are part of the interface files (in
directory html_ui/Pages/VCockpit/Instruments/NavSystems/YOUR-
IDENT/pms50_gtn750_int). If not here, copy them from the integration files folder.

The WTT mode may modify your autopilot gauge behavior. If you are just sending the
appropriate key events to the sim when pressing an autopilot button (recommended), that
should work without any modification. If you have special autopilot management and/or
override the sim autopilot key events, you will probably have to make the necessary changes in
your autopilot code to be compatible with the WTT mode.

The variable L:PMS50_AUTOPILOT_INSTALLED allows you to check if the GTN750 is in WTT mode
or not. You can also look at the GTN750 System / System Status page that should display WTT
mode status as "Internal" when WTT mode is active.

If you need to display the WTT flight plan map path in another cockpit instrument, this can be
done. Please contact us.

If you include the WTT mode in your aircraft and have a hot swapping with the GNS 530, we
strongly recommend to force using the WT GNS530 instead of the stock Asobo one.
Forcing the WT GNS530 consists of replacing the html GNS530 gauge path in your panel.cfg:
htmlgauge00=NavSystems/GPS/AS530/AS530.html, 0, 0, 320,234

with this one:

htmlgauge00=NavSystems/GPS/WT530/WT530.html?Index=1, 0, 0, 320,234

Same thing for the GNS430.


Check the WT documentations for further information.

WTT mode configuration file


You can define a configuration file for the WTT mode autopilot. This is useful only if you want to
override the default behavior.

The config file has a json format and you should deliver it in your package. Its path must be
unique to the virtual file system.
You give the path of the config file as a parameter of the PMS50_AP1.html gauge in the
panel.cfg.
Example:

[VCockpit09]
size_mm=0,0
pixel_size=0,0
texture=$NONE
background_color=42,42,40
htmlgauge00=NavSystems/PMS50/PMS50_AP1.html?configPath=Pages/VCockpit/Instruments/NavSystems/myaircaftspecific/
pms50_gtn750_int/config_autopilot.json, 0,0,0,0

The path is the complete path from the html_ui root.

Here is the content of the config file:

{
"altitude_large_increment": 1000
}

Currently there is only one entry available but this could change in the future.

The "altitude_large_increment" entry lets you define the limit between small and large increment
for the altitude selection. If the requested altitude selection is less than the limit, the selected
value will be by steps of altitude_large_increment/10. Otherwise the selected value will be by
steps of altitude_large_increment.
If you want to manage a knob with small and large selection set this value to 1000 if the
required steps are 100/1000 and to 100 if the required steps are 10/100.
The default value is 1000.

WTT mode for the G3X and Aera panels


The GTN750 package comes with a specific version of the G3X an Aera screens compatible with
the WTT mode.
The main GTN750 package must be installed for this to work and the WTT mode must be
enabled as described above.

G3X Touch panel


In order to use the WTT G3X Touch panel, change the patch of the G3X Touch panel in your
panel.cfg files by this one:

NavSystems/PMSG3X/AS3X_Touch.html

Here is an example:

[VCockpit01]
size_mm=1280,800
pixel_size=1280,800
texture=$AS3X_Screen_1
htmlgauge00=NavSystems/PMSG3X/AS3X_Touch.html?Index=1, 0,0,1280,800

[VCockpit02]
size_mm=1280,800
pixel_size=1280,800
texture=$AS3X_Screen_2
htmlgauge00=NavSystems/PMSG3X/AS3X_Touch.html?Index=2, 0,0,1280,800

...

G3X (not touch) panel


In order to use the WTT G3X (not touch) panel, change the patch of the G3X panel in your
panel.cfg files by this one:

NavSystems/PMSG3X/AS3X.html

Here is an example:

[VCockpit01]
size_mm=720,1200
pixel_size=720,1200
texture=$AS3X_Screen_1
htmlgauge00=NavSystems/PMSG3X/AS3X.html?Index=1, 0,0,720, 1200

...

Aera panel
In order to use the WTT Aera panel, change the patch of the Aera panel in your panel.cfg files by
this one:

NavSystems/PMSAera/Aera.html

Here is an example:

[VCockpit01]
size_mm = 1280,800
pixel_size = 1280,800
texture = GPS_AERA_SCREEN
htmlgauge00 = NavSystems/PMSAera/Aera.html,0,0,1280,800

...

Autopilot gauge
We give here some explanations about the way to create a compatible autopilot gauge in your
aircraft.

We strongly recommend to use HTML/Javascript for your autopilot gauge even if you have no
screen for it (screen size 0 in panel.cfg).

We have 2 components involved in autopilot management: the autopilot manager and the
autopilot gauge.

The autopilot manager is receiving orders from the autopilot gauge and processes these orders
(K events) by changing the roll and pitch. It also maintains the autopilot internal state and
updates the corresponding state sim variables. Today the 2 known autopilot managers are the
stock Asobo one and the WT one. Both are doing the job very well.

The autopilot gauge is sending the orders (K events) to the autopilot manager when the user
presses a button, reads the autopilot state variables updated by the manager and displays the
state.
It should not keep itself an internal autopilot state in order to be always sync with the autopilot
manager.
The gauge display should always reflect the manager state.
There is an exception to that if the autopilot gauge needs a manual arming mode button or
needs to engage VS or FLC modes without targeting a selected altitude. The gauge will have to
implement this logic by itself because this is not managed in the sim.

If things are done in this way, the aircraft autopilot will work fine and will be also easily settable
from an external software (ex stream deck). It will be compatible with both the stock and WT
autopilot managers.

The GTN750 autopilot page is made in this correct way. You can use it to test the aircraft
autopilot gauge. If this last is well done, every order on one side should produce a state that is
reflected on the other side so the gauges are sync (with the exception of the manual arming
mode).

The GTN750 autopilot code is open source. You can reuse it, modify it and deliver it as the
autopilot gauge in your aircraft package without any authorization from us.
However, you don't have the right to replace the original GTN750 package file by your own
version.
The filename is autopilot.js an can be found in the official GTN750 package in the following
directory:

html_ui\Pms50\gtn750\Pages\VCockpit\Instruments\NavSystems\GPS\GTN750\js

PMS50 autopilot hidden gauge (APGA)


PMS50 provides a hidden autopilot module named APGA that could greatly simplify the work of
building an autopilot panel.

The idea is to define the panel on a buttons perspective: an autopilot panel is just a set of
buttons and/or knobs and eventually a screen to display the autopilot state.

The APGA directly manages the logic behind that. The work of the autopilot panel builder is
then limited to send the H event to the APGA corresponding to the button or knob and to get
back some L variables to display the autopilot state.

The APGA is a standalone component completely independent of the GTN750 or any other
gauge.

The APGA code is open source.


You can use it, modify it and deliver it in your aircraft package without any authorization from
PMS50.

There is a separate documentation for the APGA (APGA.pdf) that can be found in the Integration
folder of the GTN750 package.

You might also like