G3000 CAS (Crew Alerting System)
Introduction
Because CAS alerts and their logic are largely airplane-specific, the base G3000 package does not define any CAS alerts. Instead, CAS alerts must be specified on a per-airplane basis. There are two ways to do this: using Typescript/plugins and using panel.xml
. It is recommended to use the plugin method, because it will give you access to all the features of the API. The panel.xml
method is provided mainly for those who are used to the Annunciations
API used by the legacy G3000 code.
The G3000 CAS is implemented using the SDK CAS System API. Please refer to the linked documentation for more detailed information on how to use the API, including how to define alerts in panel.xml
.
Accessing CasSystem
The base G3000 package creates one CasSystem
instance on each PFD and MFD instrument. Plugins can reference these instances via their binders. Currently, no CasSystem
instance is created on GTC instruments.
Do not create extra instances of CasSystem
on the PFD or MFD. Having multiple instances on one instrument will lead to undesired behavior.
Setting up CAS Displays
Once you have set up your alert logic, the next step is to display the resulting CAS messages. By default, the G3000 does not render any CAS displays. Generally, G3000 CAS displays are found either on the PFD or in the EIS area, depending on the airplane. You may configure the G3000 to render the PFD CAS display via panel.xml
. Rendering a CAS display in the EIS must be done via plugin.
When rendering the CAS display, it is recommended to use the G3000CASDisplay
component. This component will render CAS messages to a simple list that can be styled with CSS of your choosing. It also handles the logic necessary to implement scrolling of the CAS using the GTCs. Here is an example of how to set up a G3000CASDisplay
:
import { G3000CASDisplay } from '@microsoft/msfs-wtg3000-common';
<G3000CASDisplay
bus={bus} /* The event bus */
numAnnunciationsShown={10} /* Display up to 10 messages at a time. */
annunciations={casSystem.casActiveMessageSubject} /* Pass in the array of messages to be displayed from CasSystem. */
pfdIndices={[1, 2]} /* Sets up the display to be scrolled by the GTCs controlling both PFD-1 and PFD-2. */
/>
The pfdIndices
prop determines which PFD-controlling GTC or GTCs can scroll the display. It accepts an array containing any combination of 1
and 2
, representing PFD indexes. If rendering a CAS into the EIS, the typical scenario is to configure the display to be scrolled by both PFD-controlling GTCs (unless the installation only has one PFD-controlling GTC).
If you wish to write your own code to scroll a G3000CASDisplay
, you must use the event bus topics defined by CASControlEvents
. All topics are suffixed by PFD index. The cas_scroll_up_enable_x
and cas_scroll_down_enable_x
topics are published by G3000CASDisplay
and are used to inform you if the display can be scrolled up or down. Publishing the cas_scroll_up_x
and cas_scroll_down_x
topics will command the selected displays to scroll up and down.
When controlling a G3000CASDisplay
that is configured to accept both index-1 and index-2 commands, only send the command for one index at a time. If you send a scroll command for each index, the display will scroll twice!