Skip to main content

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.

danger

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.

caution

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!