Internet-Draft | eXtensible Flight System Protocol | July 2023 |
Spencer & Guy | Expires 11 January 2024 | [Page] |
Ths document presents a binary IP-based protocol to facilitate interoperable communications between avionics equipment. The protocol is UDP-based, stateless, and broadcast. Messages consist of a common header followed by a series of parameters and related attributes. The parameters may be informational, e.g., indicating airspeed is 150 kts, or commands, such as an instruction that deploys the landing gear.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 11 January 2024.¶
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Historically, avionics equipment used private protocols for device interconnection but the trend is towards open communication leveraging standard hardware. There have been various stages in the evolution of device interconnection from point-to-point analog communication to digital serial serial protocols, to bus-based solutions and currently IP-based over ethernet.¶
One of the concerns with all of these protocols in this industry is that extensive testing is required, so developing a common protocol and library with its extensive test cases will improve time to market, product quality, and hence lower cost and improved safety.¶
The eXtensible Flight System Protocol, XFS, is such an IP-based protocol which provides a common means that facilitates communications between airborne equipment. It is an open protocol which operates using binary-encoded UDP packets sent on a broadcast address. This approach allows the avionics system to function as a collection of safety-critical microservices with XFS at the hub of the entire avionics system. XFS can flexibly drive multiple displays and unify all the aircraft's subsystems all at the control of the system integrator.¶
In addition to the wire protocol described below, an xml schema is defined that allows additional message types and interactions. This format will be presented after the wire protocol is defined.¶
XFSp is a simple and compact protocol which uses a fast marshaling approach. Parameters may be coalesced, size and time permitting, into a single message to make transport more efficient. The message layout considers quad word alignment issues which can affect performance, especially on ARM-based architectures and pads to maintain efficiency. All messages are broadcast to all receivers so that the protocol is stateless and only the recipient controls whether a parameter will be processed.¶
XFSp is a UDP-based protocol so packet delivery is not guaranteed. Application-level behavior is needed to ensure critical requests are executed. Since the protocol is stateless, it relies on the requestor to monitor status to ensure an action was taken. For example, if a request to put the landing gear down is made, the requesting application must watch reports of the landing gear position and alert if the request is not satisfied in a timely manner.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The eXtensible Flight System Protocol is designed to operate on an airborne platform network. This network is intended to be isolated from the general Internet and comprises instruments, displays, sensors, and actuators performing various functions. XFSp messages are broadcast to every node on the network. XFSp message occur in three classes: Maintenance, Operational and Raw.¶
Maintenance and Operational messages consist of a header followed by a series of parameters. Parameters represent commands or information. XFSp is stateless. There is no required protocol level response to any command, however, informational responses may be made. For instance, a command to change the radio frequency of a certain radio may generate a application-level response indicating the new radio frequency. All XFSp messages go to all nodes and they simply discard things they don't care about.¶
Raw XFSp messages consist of a message header which specifies the length of the raw data, followed by that raw data. Raw data is classified as MIL-STD-1553, CANbus, digital samples, or serial data.¶
Each node in XFSp is assigned a source ID. These Source IDs MUST be unique within the XFSp network. The Source ID and the message number uniquely identify the message and are contained in the message header. Message IDs created by a node MUST be monotonically increasing. A receiving node MUST ignore all duplicate messages. The Source ID and a message number are used to ensure messages are processed in order and only once. Messages MUST be processed in order skipping any missing messages and MUST only be processed once. Senders and Receivers must account for integer overflow in message numbers. There is no retry mechanism at the protocol level; Missing and out-of-order messages SHALL be considered lost and if received out of order, a message MUST be ignored.¶
In addition to the Source ID and Message Number, The XFSp message header also contains the message class, the Message Operation ID, DO-178 certification level, [DO-178C] the confidence level and the payload length.¶
For best performance, an XFSp goal is to not send IP datagrams that have to be fragmented. Packets which exceed the MSS size will be fragmented. To achieve this goal XFSp messages SHOULD be less than the network Maximum Segment Size (MSS) size in length. On a modern Ethernet network, IEEE 802.3 [IEEE8023] specifies a maximum payload size of 1500 bytes. The size of the fixed IPv4 header is 20 bytes [RFC0791] or in IPv6 the fixed header is 40 bytes [RFC2640] UDP headers consume 8 bytes, [RFC0768] the XFSp header Section 3.1 uses 12 bytes leaving 1460 bytes for parameters or 1440 bytes on an IPv6 network.¶
XFSp messages are formatted as shown in the above diagram and consist of the following fields:¶
This section defines the dictionaries used in the message header. See Section 3.1.¶
Table 1, below, shows the values defined in the msg-class Dictionary. These values identify the message class: raw, maintenance or operational.¶
Name | Value | Definition |
---|---|---|
MAINT | %d2 | Maintenance Message |
OP | %d3 | Operational Message |
RAW | %d4 | Access to raw data stream (e.g., RS-232, RS-485, ARINC-429, etc) |
Table 2, below, shows the values defined in the msg-op Dictionary. These options further refine the operational message class.¶
Name | Value | Definition |
---|---|---|
FLIGHTDATA | %d2 | Flight Data Info |
DEVSTATUS | %d3 | Device Status |
GDL90 | %d4 | GDL-90 Format Messages without framing, FCS or escape characters. [GLD90] |
Table 3, below, shows the values defined in the msg-flag-cert Dictionary. These choices represent the message and parameter certification level tracking with respect to the [DO-178C] specification. The chosen value applies to all parameters in the message.¶
Name | Value | Definition |
---|---|---|
EXPERIMENTAL | %d0 | Experimental |
LEVEL-E | %d1 | DO-178 Level E |
LEVEL-D | %d2 | DO-178 Level D |
LEVEL-C | %d3 | DO-178 Level C |
LEVEL-B | %d4 | DO-178 Level B |
LEVEL-A | %d5 | DO-178 Level A |
Table 4, below, shows the values defined in the tcid Dictionary. XFS transcoder ID values for future use.¶
Name | Value | Definition |
---|---|---|
NONE | %d0 | No transcoder ID is required or asserted |
The section defines the elements common to all XFS parameters.¶
Table 5, below, shows the values defined in the param-confidence Dictionary. These options represent parameter format confidence levels.¶
Name | Value | Definition |
---|---|---|
USERSEL | %d128 | User selected value at runtime |
HIGH | %d100 | Confirmed known value |
SYSSEL | %d80 | System selected value at runtime |
UNANIMOUS | %d50 | Redundant data available and is rationalized |
RATIONAL | %d40 | Data being rationalized from other data sources with normal sources ignored |
VOTED | %d30 | Data is redundantly verified from identical instruments |
SMOOTHED | %d20 | Smoothed/filtered version of raw data |
RAW | %d10 | Raw, unchecked data |
ESTIMATE | %d5 | Rough estimation |
USELESS | %d0 | Value is missing or expected invalid and supplied for debugging ONLY |
The msg_flag_cert Dictionary is also used. See Table 3 for its definition.¶
Information and commands provided in messages have a limited usability lifetime or time-to-live. The Expire field is used to indicate how long the associated parameter is valid. It is an eight-bit field that is split into an exponent and mantissa to provide the maximum range and precision within this small space. The upper five bits represent the the mantissa and the lower three bit represent the exponent. If the value of the Expire field is %xFF, the value is interpreted to mean "the parameter does not expire," otherwise the expiry time value is determined by the following formula:¶
Expiration (milliseconds) = 3 * (M + 1) * 10^(E + 1).¶
For example, an expiry value of %x13 gives a mantissa of 00010 and an exponent of 011 yielding a value of (3 * 3) * 10^4 ms or 90 seconds.¶
Another example, %xF7 which gives a mantissa of 11110 and an exponent of 111 yielding a value of (3 * 31) * 10^(7+1) ms, 9.3 million seconds, or about 100 days.¶
A final example, %x00 which gives a mantissa of 00000 and an exponent of 000 yielding a value of (3 * 1) * 10^(0+1) ms, or 30 milliseconds.¶
The various attributes associated with parameters occur as both simple types, such as Integers and compound structures, such as Waypoints. This section defines the attribute formats that are used in XFSp.¶
Boolean Format¶
Parameter Identifier: %d1¶
Length: 4¶
Structure:¶
Item | Type | Description |
---|---|---|
bool-value | boolean | Zero for false, 1 for true, all others undefined |
Table 7, below, shows the values defined in the boolean Dictionary. These options represent nominal boolean values.¶
Name | Value | Definition |
---|---|---|
FALSE | %d0 | False |
TRUE | %d1 | True |
Unsigned 32-bit Integer Format¶
Parameter Identifier: %d2¶
Length: 4¶
Structure:¶
Item | Type | Description |
---|---|---|
uint-value | uint32 | 32-bit Unsigned Value |
Waypoint on a Flight Plan¶
Parameter Identifier: %d3¶
Length: 80¶
Structure:¶
Item | Type | Description |
---|---|---|
label | 12*12(OCTET) | Name of waypoint |
lat | int32 | Latitude of waypoint * 10,000,000 |
lon | int32 | Longitude of waypoint * 10,000,000 |
lonlen | int32 | Length of degree of longitude for this latitude in meters |
alt | int32 | Altitude associated with waypoint in 0.1ft |
minalt | int32 | Logical Minimum for Fix Crossing in 0.1ft |
maxalt | int32 | Logical Maximum Altitude for Fix Crossing in 0.1ft |
speed | int32 | Target indicated airspeed |
magadj | uint32 | Original (VOR) or Current (GPS) Magnetic Deviation in 0.01 degrees of NAVAID |
inbound | uint16 | Inbound course in 0.01 degrees |
outbound | uint16 | Outbound course in 0.01 degrees |
freqkhz | uint32 | Frequency in khz if this is a NAV AID |
wtype | fms-waypoint | Type of waypoint |
ctype | fms-container | Type of container |
flags | fms-flag | Flags for the waypoint / leg |
cumete | uint32 | Cumulative ETE from active waypoint in 0.01 seconds |
cumdis | uint32 | Cumulative distance from active waypoint in 0.001 nm |
container | 16*16(OCTET) | What container is this waypoint a part of (e.g., V431, ILS-18L, etc) |
Table 10, below, shows the values defined in the fms-waypoint Dictionary. These options represent flight management system waypoint types.¶
Name | Value | Definition |
---|---|---|
UNKNOWN | %d0 | Unknown or unspecified |
GS | %x80 | Glideslope component |
DME | %x40 | DME Component |
TACAN | %x20 | TACAN Component |
VOR | %d1 | VOR Component |
LOC | %d2 | Localizer component |
NDB | %d3 | NDB component |
LDA | %d4 | LDA Component |
SDF | %d5 | SDF Component |
FIX | %d6 | Generic RNAV Fix |
ILS | %d7 | Complete ILS system |
AIRPORT | %d8 | An Airport |
DIRECTFROM | %d9 | Starting point of a direct to |
WEATHER | %d10 | Weather reporting station only |
Table 11, below, shows the values defined in the fms-container Dictionary. These options represent flight management system container types.¶
Name | Value | Definition |
---|---|---|
UNKNOWN | %d0 | Unspecified or unknown container |
NONE | %d1 | No container |
VICTOR | %d2 | VOR Airway |
JET | %d3 | Jet Airway |
AMBER | %d4 | Amber Airway |
BLUE | %d5 | Blue Airway |
GREEN | %d6 | Green Airway |
RED | %d7 | Red Airway |
Q | %d8 | RNAV Q Routes |
T | %d9 | RNAV T Routes |
STAR | %d10 | Standard Arrival Procedure |
DP | %d11 | Standard Departure Procedure |
APP | %d12 | Instrument Approach |
Table 12, below, shows the values defined in the fms-flag Dictionary. These options represent flight management system waypoint and leg flags.¶
Name | Value | Definition |
---|---|---|
NONE | %d0 | No flags or leg type known |
LEGTYPE-VA | %d1 | Heading to Altitude |
LEGTYPE-VD | %d2 | Heading to DME Distance |
LEGTYPE-VI | %d3 | Heading to Next Leg Intercept |
LEGTYPE-VM | %d4 | Heading to Manual Termination |
LEGTYPE-VR | %d5 | Heading to Radial Termination |
LEGTYPE-CA | %d6 | Course to an Altitude |
LEGTYPE-CD | %d7 | Course to a DME Distance |
LEGTYPE-CI | %d8 | Course to Next Leg Intercept |
LEGTYPE-CR | %d9 | Course to Radial Termination |
LEGTYPE-CF | %d10 | Course to a Fix |
LEGTYPE-TF | %d11 | Tracking Between Two Fixes |
LEGTYPE-DF | %d12 | Direct to a Fix |
LEGTYPE-FA | %d13 | Course from a Fix to an Altitude |
LEGTYPE-FC | %d14 | Course from a Fix to an Along Track Distance |
LEGTYPE-FD | %d15 | Course from a Fix to a DME Distance |
LEGTYPE-FM | %d16 | Course from a Fix to a Manual Termination |
LEGTYPE-AF | %d17 | Constant DMA Arc to a Fix |
LEGTYPE-HF | %d18 | Hold to a Fix |
LEGTYPE-HA | %d19 | Hold to an Altitude |
LEGTYPE-HM | %d20 | Hold to a Manual Termination |
LEGTYPE-IF | %d21 | Initial Fix |
LEGTYPE-PI | %d22 | Procedure Turn to Intercept |
LEGTYPE-RF | %d23 | Radius to a Fix |
FLYOVER | %x01.00 | If not present, fly by |
DISC | %x02.00 | If present, Discontinuity before current waypoint |
ACTIVE | %x04.00 | If present, this is the active waypoint |
OBS | %x08.00 | If present, waypoint allows OBS to be set |
FAF | %x10.00 | If present, waypoint is final approach fix or after |
SUSPEND | %x20.00 | FMS sequencing is suspended at this waypoint |
LAST | %x40.00 | This waypoint is the last one in the flight plan |
String of characters (may not have NULL termination)¶
Parameter Identifier: %d4¶
Length: length(data) + 0¶
Structure:¶
Item | Type | Description |
---|---|---|
string-value | *(OCTET) | Optionally NUL terminated ISO-8559-1 String |
CAS Message¶
Parameter Identifier: %d5¶
Length: length(data) + 4¶
Structure:¶
Item | Type | Description |
---|---|---|
level | cas-msglvl | CAS level |
rsvd | uint8 | Reserved, set to 0 |
flags | cas-msgflag | CAS related flags |
label | *(OCTET) | Label for CAS Message |
Table 15, below, shows the values defined in the cas-msglvl Dictionary. These options represent Message levels for CAS messages and checklist items.¶
Name | Value | Definition |
---|---|---|
CLEAR | %d0 | Clear a previously issued CAS message -- issue from system only |
DEBUG | %d1 | In-system debugging output only |
LOG | %d2 | Log to system log, but do not display |
MAINT | %d3 | Display only for maintenance purposes |
STATUS | %d4 | Aircraft system status only |
ADVISORY | %d5 | Advisory, flight crew should be aware, may require later crew response |
CAUTION | %d6 | Caution, requires immediate flight crew awareness and later response |
WARNING | %d7 | Warning, requires immediate awareness and response. |
COMMENT | %d10 | Checklist Comment Associated with Previous Item |
UNCHKITEM | %d11 | Unchecked Checklist Item |
CHKITEM | %d12 | Checked Checklist Item |
CHKBRANCH | %d13 | Checklist Branch Choice |
Table 16, below, shows the values defined in the cas-msgflag Dictionary. These options represent Additional flags associated with CAS messages.¶
Name | Value | Definition |
---|---|---|
AUTO | %x01 | Item is automatically checked/unchecked |
Signed 32-bit Integer Format¶
Parameter Identifier: %d9¶
Length: 4¶
Structure:¶
Item | Type | Description |
---|---|---|
sint-value | int32 | Signed 32-bit two's complement value |
Bus and Electronic Circuit Breaker Format¶
Parameter Identifier: %d10¶
Length: length(data) + 24¶
Structure:¶
Item | Type | Description |
---|---|---|
state | ecb-state | State of Bus (in terms of ECB) |
ecbflags | ecb-flag | Flags regarding ECB state |
involts | int16 | Input Volts on Bus |
drawamps | int16 | Current draw on bus |
maxamps | int16 | Max Amps on bus |
champs | int16 | Caution high amps |
clamps | int16 | Caution low amps |
minamps | int16 | Minimum amps on bus (could be -) |
outvolts | int16 | Output Volts on Bus |
maxvolts | int16 | Max volts |
chvolts | int16 | Caution high voltage |
clvolts | int16 | Caution low voltage |
minvolts | int16 | Minimum low voltage |
label | *(OCTET) | Label for BUS Message (System/Item) |
Table 19, below, shows the values defined in the ecb-state Dictionary. These options represent Electronic circuit breaker status.¶
Name | Value | Definition |
---|---|---|
UNKNOWN | %d0 | Circuit is in an unknown condition |
OFF | %d1 | Circuit is turned off |
ON | %d2 | Circuit is turned on |
UNDERCUR | %d3 | Circuit is on, <100ma current drawn |
RESET | %d4 | Request Reset |
FORWARD | %d5 | ECB is active logical FWD direction |
REVERSE | %d6 | ECB is active logical REV direction |
TARGET | %d7 | ECB is set by target, not ON/OFF |
BRAKELOW | %d8 | ECB is set by target, not ON/OFF |
SHORTED | %d128 | Short Circuit |
OVERCUR | %d129 | Overcurrent (but not short circuit) |
OVERVOL | %d130 | Overvoltage situation |
DISABLED | %d131 | Disabled by state-fault |
RUNAWAY | %d132 | Disabled due to runaway (trim/flaps) |
COLLARED | %d133 | Should not reset in flight |
JAMMED | %d134 | Mechanical Jam detected |
PULLED | %d135 | Pulled |
BACKFLOW | %d136 | Disabled due to reverse current flow |
Table 20, below, shows the values defined in the ecb-flag Dictionary. These options represent Electronic circuit breaker parameter flags.¶
Name | Value | Definition |
---|---|---|
INPUTVOLTS | %x01 | Input Volts field is valid |
Range description format¶
Parameter Identifier: %d11¶
Length: 24¶
Structure:¶
Item | Type | Description |
---|---|---|
numticks | uint16 | How many valid ticks are in the parameter data |
units | param-units | Specifier for units for display |
divisor | int32 | For display purposes, what are logical divisions |
minval | int32 | Minimum valid value |
maxval | int32 | Maximum valid value |
mindisp | int32 | Where display starts (values lower than this are clipped) |
maxdisp | int32 | Where display stops (values higher tha this are clipped) |
ticks | starray | Actual tick data |
Table 22, below, shows the values defined in the param-units Dictionary. These options represent Units for the encoding and translation of XFS parameters.¶
Name | Value | Definition |
---|---|---|
UNSPEC | %x00 | Units not specified |
INHG | %x00.01 | Use inches of Hg for BARO/MANPRES |
FT | %x00.02 | Use feet for altitude |
NM | %x00.03 | Use nautical miles for distance |
C | %x00.04 | Use celcius for temperature |
LBFT | %x00.05 | Use pound-feet for torque |
S | %x00.06 | Use seconds for time |
A | %x00.07 | Use amps for current |
V | %x00.08 | Use volts for voltage |
LB | %x00.09 | Use pounds for weight |
IN | %x00.0a | Use inches for distance |
FPM | %x00.0b | Use feet per minute for rate of climb/descent |
LBPH | %x00.0c | Pounds per Hour for fuel flow |
DEGPS | %x00.0d | Degrees per second for attitude change |
DEG | %x00.0e | Degrees for attitude |
G | %x00.0f | G force for load |
RGBA | %x00.10 | 8888 RGBA Value |
KHZ | %x00.11 | Kilohertz for Frequency |
PCENT | %x00.12 | Percent of Maximum |
KT | %x00.13 | Knots for Speed |
NMPLB | %x00.14 | Nautical Miles per Pound |
KTPS | %x00.15 | Knots per second |
MACH | %x00.16 | Speed of sound |
CPM | %x00.17 | Count per minute |
PPM | %x00.18 | Parts per million |
LPM | %x00.19 | Liters Per Minute |
KW | %x00.1a | Kilowatt |
AH | %x00.1b | Amp Hour |
HPA | %x80.01 | Use Hecto pascals for BARO |
M | %x80.02 | Use meters for altitude |
SM | %x80.03 | Use statute miles for distance |
F | %x80.04 | Use fahrenheit for temperature |
NWM | %x80.05 | Use Newton Meters for torque |
PSI | %x80.06 | Use PSI for MANPRES |
MPH | %x80.07 | Use miles per hour for speed |
SMPLB | %x80.08 | Statues Miles per Pound |
MIN | %x80.09 | Minutes |
HR | %x80.0a | Hours |
HP | %x80.0b | Use Horsepower for power |
KG | %x80.0c | Use kilograms for weight |
UL | %xff.ff | Unitless |
GPIO summary format¶
Parameter Identifier: %d12¶
Length: 12¶
Structure:¶
Item | Type | Description |
---|---|---|
features | uint32 | 4-bit Feature (XFS_GPIO_FEATURE_*) x 8 |
outmodes | uint32 | 4-bit Output modes (XFS_GPIO_OUTPUT_*) x 8 |
inmodes | uint16 | 2-bit Input modes (XFS_GPIO_INPUT_*) x 8 |
flags | uint16 | Reserved for future use |
APP status format¶
Parameter Identifier: %d13¶
Length: length(data) + 56¶
Structure:¶
Item | Type | Description |
---|---|---|
state | scb-state | State of application* |
rsvd | uint8 | Reserved bits |
appflags | uint16 | Flags regarding app |
period | uint16 | Baseline runtime period (XFS_SCHED_PERIOD_*) |
avgcpu | uint16 | Average OS CPU time utilization in units per period over last second |
hwcpu | uint16 | High water OS CPU time utilization in units per period |
cpulim | uint16 | Limitation of OS CPU time utilization in units per period |
runtime | uint16 | Max allocated runtime (per period) |
deadline | uint16 | Deadline for completion (per period) |
avgruntime | uint16 | Average runtime over last 1s |
hwruntime | uint16 | High water runtime |
ivcsw | uint32 | Involuntary context switches |
aircraftid | 16*16(OCTET) | Aircraft Identifier |
swrev | 16*16(OCTET) | Software Version Identifier |
label | *(OCTET) | Name of APP |
Table 25, below, shows the values defined in the scb-state Dictionary. These options represent Software circuit breaker states.¶
Name | Value | Definition |
---|---|---|
UNKNOWN | %d0 | State of software is unknown |
STARTING | %d1 | Application is in startup phase |
RUNNING | %d2 | Application is running |
STOPPING | %d3 | Stopping has been requested |
RESTART | %d4 | Restart Application (PULL + RESET + START) |
RESET | %d5 | Allow application to be started |
HUNG | %d6 | Application is running but is no longer responsive |
DEGRADED | %d127 | Application is running in a degraded mode |
STOPPED | %d128 | Application is stopped |
STARTFAIL | %d129 | Application failed startup |
RUNAWAY | %d130 | Application has a runaway loop |
OVERCPU | %d131 | Application is using excessive CPU while in RUNNING state |
OVERMEM | %d132 | Application terminated due to memory overrun |
EXCEPTION | %d133 | Application terminated due to runtime exception |
ENDED | %d134 | Application ended without error or request |
ENDERROR | %d135 | Application ended with error condition |
PULLED | %d136 | Application should not be allowed to run until reset |
COLLARED | %d137 | Should not reset in flight |
Weight and Balance Range¶
Parameter Identifier: %d14¶
Length: 16¶
Structure:¶
Item | Type | Description |
---|---|---|
flags | uint16 | Flags if any |
numslices | uint16 | Number of slices specified |
maxtakeoff | uint32 | Max takeoff weight |
maxlanding | uint32 | Max landing weight |
maxzerofuel | uint32 | Max zero fuel weight |
slices | starray | Slices that form weight and balance envelope |
Aircraft Update Progress¶
Parameter Identifier: %d15¶
Length: length(data) + 56¶
Structure:¶
Item | Type | Description |
---|---|---|
aircraftid | 16*16(OCTET) | Aircraft Identifier |
progress | uint32 | Progress |
progflags | msg-cmd-updstat-flag | Progress Flags |
activity | 32*32(OCTET) | Description of current activity |
label | *(OCTET) | Name of CPU being updated |
Table 28, below, shows the values defined in the msg-cmd-updstat-flag Dictionary. These options represent Maintenance mode status update flags.¶
Name | Value | Definition |
---|---|---|
SUCCESS | %x01 | Update is complete and successful |
ERROR | %x02 | Error during update |
Position with flags to interpret whether servo should be engaged, disengaged or left alone and whether active¶
Parameter Identifier: %d16¶
Length: 8¶
Structure:¶
Item | Type | Description |
---|---|---|
servopos | int32 | undefined |
servomode | afcs-servo | undefined |
Table 30, below, shows the values defined in the afcs-servo Dictionary. These options represent Servo engagement flags.¶
Name | Value | Definition |
---|---|---|
ENGAGE | %x80.00.00.00 | If present in engagement request, along with 'ENGAGED' value, set engagement status |
ENGAGED | %d1 | For requests, retain current engagement state, for status, present if currently engaged |
DISENGAGED | %d0 | If engaged, disengage and for status, currently disengaged |
Database Information¶
Parameter Identifier: %d17¶
Length: 92¶
Structure:¶
Item | Type | Description |
---|---|---|
crc | uint32 | undefined |
name | 16*16(OCTET) | Name of database (e.g., com) |
supplier | 16*16(OCTET) | Who supplied the database |
region | 16*16(OCTET) | What region is the data valid |
cycle | 16*16(OCTET) | What cycle |
valid | 12*12(OCTET) | date at which validity begins YYYY-MM-DD string |
expires | 12*12(OCTET) | date after which data has data YYYY-MM-DD string |
This section declares the initial set of XFSp parameters. Each parameter is defined by a name and a short description. This is followed by the numeric parameter ID. Next, the meanings of the unit and subunit fields are provided, if applicable. and finally the parameter data format and a reference to the appropriate table defining the parameter attribute type.¶
GOAROUND - Go around requested¶
P-ALT - Pressure Altitude¶
T-ALT - True Altitude¶
IAS - Indicated Airspeed¶
CAS - Calibrated Airspeed¶
CASMSG - Crew Alerting System Message¶
THROTPOS - Throttle position¶
INAIR - Are we in the air (vs. on the ground)¶
BARO - Current barometric setting¶
CLTPOS - Collective Position¶
CLTPOSREQ - A/P Requested Collective Position¶
MAGHDG - Magnetic Heading¶
MAGCRS - Magnetic Course (via RNAV)¶
TRUECRS - True Course (via RNAV)¶
MAGDTK - Desired Course (via RNAV)¶
TRUEDTK - Desired course (via RNAV)¶
LAT - Current position latitude¶
LON - Current position longitude¶
RNAVALT - Altitude measured by RNAV¶
ROLL - Current degrees of roll, -18000 being being upside down towards left, 18000 being upside down to the right¶
PITCH - Current degrees of pitch, 9000 being straight up, -9000 being straight down¶
YAW - Yaw/Inclination as measured in G force¶
FUELTOT - Computed remaining fuel (divisor may be overridden by fuel type in FUELLEVLR)¶
RNAVHFOM - Horizontal Figure of Merit¶
RNAVVFOM - Vertical Figure of Merit¶
RNAVHPL - Horizontal Protection Level¶
RNAVVPL - Vertical Protection Level¶
IASRT - Indicated Airspeed Rate of Change¶
KBDSEL - Activate the named on-screen keyboard or none if empty¶
KEYPRESS - Send the FMS encoded key press to the given display¶
SURFPOS - Position of arbitrary control surface¶
SURFREQ - Requested control surface position¶
SURFTORQUE - Aerodynamic torque applied to a control surface relative to movement¶
SURFFORCE - Aerodynamic force applied to a control surface relative to movement¶
WINDSPD - Wind Speed¶
WINDBRG - True Bearing from which wind blows¶
COMFREQKHZ - Communication Frequency¶
NAVFREQKHZ - Navigation Frequency¶
COMVOL - Communication Volume (0-100)¶
NAVVOL - Communication Volume (0-100)¶
COMSQL - Communication Squelch (0-100)¶
MUX - Selected multiplexer input or output¶
ICSVOL - Intercom Volume (0-100)¶
COMSTATE - COM radio state¶
ICSRXCOMS - Which COM Radios to Monitor (mask)¶
ICSRXNAVS - Which NAV Radios to Monitor (mask)¶
ICSMODE - Intercom Mode¶
ICSTXCOMS - Which COM Radios to Transmit (mask)¶
DATE - Date in YYYY-MM-DD format¶
GLOAD - Current Normal to Aircraft Loading¶
RATEOFTURN - Turn Coordinator Rate Per Second¶
GROUNDSPEED - Groundspeed¶
VSPEED - Vertical speed¶
XPDRIDENT - XPDR Ident request (USERSELECT only). Non-standby transponders must IDENT regardless of UNIT. Used only to request IDENT, but IDENT state reported in XPDRMODE¶
XPDRRPS - XPDR Replies per second (normalized)¶
XPDRSQUAWK - XPDR Squawk as decimal integer (e.g., 1200). All transponders must change SQUAWK regardless of UNIT¶
XPDRMODE - XPDR Mode. Note that IDENT flag is ignored in USERSELECT condition.¶
NAVOBS - NAV OBS Value¶
NAVBRG - Bearing to nav aid¶
NAVCDI - Course Deviation (-1000 to 1000)¶
NAVGSI - Glide Slope (-1000 to 1000)¶
NAVFLAGS - Navigation Flags (see XFS_NAV_FLAG_*¶
FLAPREQ - Requested Flap Position 0 = up, 100000 = fully down, -100000 is fully negative¶
FLAPPOS - Flap actuator position, 0 = up, 100000 = fully down, -100000 is fully negative¶
ECBSTAT - ECB Status change or request, see xfs_ecb.h¶
PTRIMREQ - Requested Pitch Trim Position (negative nose down, 0 neutral, positive nose up)¶
PTRIMPOS - Pitch Trim Position (negative nose down, 0 neutral, positive nose up)¶
RTRIMREQ - Requested Roll Trim Position (negative left bank, 0 neutral, positive right bank)¶
RTRIMPOS - Roll Trim Position (negative left bank, 0 neutral, positive right bank)¶
BUSSTAT - Status of Bus¶
TEMP - Arbitrary Temperature in a location¶
TAS - True Airspeed¶
TAT - Total Air Temperature¶
OAT - Outside Air Temperature accounting for compressibility¶
D-ALT - Density Altitude¶
OILPRES - Oil Pressure¶
OILTEMP - Oil Temp¶
XFDFPS - XFD Display Frames Per Second (FPS)¶
TIREPRES - Tire Pressure¶
CHT - Cylinder Head Temperature¶
EGT - Exhaust Gas Temperature¶
COOLTEMP - Coolant Temperature¶
FUELFLOW - Fuel Flow¶
FUELPRES - Fuel Pressure¶
FUELLEVL - Fuel Level (divisor may be overridden by fuel type)¶
MANPRES - Manifold pressure¶
ENGRPM - Engine RPM¶
PROPRPM - Propeller RPM¶
MACH - Mach¶
IASBUG - Target indicated airspeed¶
HDGBUG - Bugged Magnetic Heading¶
ALTBUG - Bugged Altitude¶
WAYPOINT - A way point in a flight plan, subunit is position in flightplan, beginning with 1 for first waypoint. Subunit 0 is only used to indicate an empty flight plan.¶
INSERT - Insert A way point in a flight plan, subunit is position in flightplan which it should become (SYSSEL/USERSEL ONLY)¶
DELETE - Delete A way point in a flight plan, subunit is position in flightplan starting at 1 (SYSSEL/USERSEL ONLY). Label must match¶
NOTE - Notation of something important within the quick access log or bus¶
NAVGPS - GPS Mode¶
NAVDIS - Distance to next or last waypoint or DME for VOR/ILS/etc¶
NAVXTK - Cross track error (negative is left)¶
NAVETE - Time to next or last waypoint¶
BRIGHTNESS - Universal display brightness (0-1000 for night time mode, 1000-2000 for daytime modes¶
MANTEMP - Manifold temperature¶
DIRECT - Go direct to a way point in a flight plan, subunit is position in flightplan starting at 1 (SYSSEL/USERSEL ONLY). Label must match¶
ACTIVATE - Activate leg terminating at way point in a flight plan, subunit is position in flightplan (SYSSEL/USERSEL ONLY). Label must match¶
MMPARAM - Moving Map parameters. Subunit is one of XFS_MM_PARAM_*¶
SERVOREQ - Requested servo position and state¶
SERVOPOS - Current servo actuator position¶
SONICHAT - Ultrasonic rangefinder height above terrain¶
LIDARHAT - LIDAR rangefinder height above terrain¶
RADARHAT - Radar rangefinder height above terrain¶
HAT - Computed height above terrain¶
COMSTANDBY - Standby COM Frequency (same rules and range as COMFREQKHZ)¶
NAVSTANDBY - Standby NAV Frequency (same rules and range as NAVFREQKHZ)¶
STALLSPEED - Estimated real-time Stall speed¶
TIMEMS - Time in milliseconds from midnight zulu time¶
YTRIMREQ - Requested Yaw Trim Position (negative left, 0 neutral, positive right)¶
YTRIMPOS - Yaw Trim Position (negative left, 0 neutral, positive right)¶
VSPEEDBUG - Vertical speed bug in fpm¶
MUSICSRC - Music Source (0 = none)¶
AOA - Angle of attack as an actual angle¶
AOAR - Angle of attack range -- should contain green (beginning of approach range), white (reference angle), yellow (approaching stall) and a red (imminent stall)¶
GPIO - GPIO Input/Output¶
ANALOG - Raw Analog value 0-4095¶
PWM - PWM value 0-4095 -- subunit is port number, 1-8¶
XPDRACID - ICAO 24-bit Aircraft Identifier¶
XPDRFLID - Up to 8-character, NULL terminated flight ID¶
THROTREQ - Requested throttle position¶
RPMREQ - Prop governor requested RPM¶
TACHTIME - Tachometer time, unit is engine¶
TOTTIME - Total aircraft time¶
APPSTAT - Application Status / Requests¶
CDINAVSRC - Select index (> 0) of CDI NAV Source or 0 for none¶
BRGNAVSRC - Select index (> 0) CDI BRG Source or 0 for none¶
COMSEL - Select COM Radio for Tuning¶
NAVSEL - Select NAV Radio for Tuning¶
MSTRCAUTN - Master Caution Active when true. Resets by SYSSEL/USERSEL with value of FALSE¶
MSTRWARN - Master Warning Active when true. Resets by SYSSEL/USERSEL with value of FALSE¶
ROLLRT - Rate of change of about A/C longitudinal axis (P)¶
PITCHRT - Rate of change about A/C transverse axis (Q)¶
YAWRT - Rate of change about A/C vertical axis (R)¶
STKPITCH - Stick Pitch Position (negative nose down, 0 neutral, positive nose up)¶
STKROLL - Stick Roll Position (negative left bank, 0 neutral, positive right bank)¶
STKYAW - Pedal Yaw Position (negative left, 0 neutral, positive right)¶
BATTTEMP - Battery Temp¶
MOTORTEMP - Motor Temp¶
POWERTEMP - Temp of a device supplying/converting power to a propulsion system¶
TORQUE - Torque¶
TAILNUM - Up to 8-character, NULL terminated tail number¶
ROLLREQ - F/D requested degrees of roll in 100 * degrees with 0 being right side up, -18000 being being upside down towards left, 18000 being upside down to the right¶
PITCHREQ - F/D requested degrees of pitch in 100 * degrees with 0 being straight ahead, 9000 being straight up, -9000 being straight down¶
YAWREQ - F/D requested G force of inclination with 0 being no yaw¶
STKPITCHREQ - A/P Requested Stick Pitch Position (negative nose down, 0 neutral, positive nose up)¶
STKROLLREQ - A/P Requested Stick Roll Position (negative left bank, 0 neutral, positive right bank)¶
STKYAWREQ - A/P Requested Pedal Yaw Position (negative left, 0 neutral, positive right)¶
FDMODEACT - Active Flight Director Modes¶
FDMODEARM - Armed Flight Director Modes (XFS_AFCS_FD_MODE_*¶
ALTHOLDBUG - Altitude used by FD for altitude hold¶
APMODE - Autopilot Modes¶
ICSSQL - Intercom Squelch (0-100)¶
PITCHBUG - Target pitch¶
PTSPEED - Power Turbine Speed (commonly N1)¶
GTSPEED - Gas Turbine Speed (commonly N2 or Ng)¶
TIT - Turbine Inlet Temperature¶
ITT - Inter-Turbine Temperature¶
POWER - Power under current engine and environmental conditions relative to engine design maximum¶
ENGSTATUS - Engine specific set of flags or values¶
CABINALT - Cabin Equivalent Altitude¶
CABINALTREQ - Cabin Equivalent Altitude¶
DIFFPRES - Differential Pressure¶
DIFFPRESREQ - Requested Differential Pressure¶
FUELTEMP - Arbitrary Temperature in a location¶
ENGSTATE - Engine operating state¶
ENGSTATEREQ - Requested Engine operating state¶
BLEEDAIR - Bleed Air Level (Percent of Max)¶
BLEEDAIRREQ - Requested Bleed Air Level¶
LIGHTING - Lighting Color/Level¶
LIGHTINGREQ - Requested Lighting Color/Level¶
ICING - Deicing State¶
ICINGREQ - Requested Deicing State¶
LDGGEAR - Landing Gear State¶
LDGGEARREQ - Landing Gear State¶
CABINTEMP - Cabin Temperature in a zone¶
CABINTEMPREQ - Requested Cabin Temperature in a zone¶
CHKLIST - Checklist Item¶
WBRANGE - Weight and envelope per configuration¶
WBSTARM - Arm for given station¶
WBSTMAXWEIGHT - Maximum weight at given station¶
WBSTFLAGS - Flags about given station¶
WBSTWEIGHT - Actual weight at given station¶
TASEFF - Fuel Economy Relative to True Airspeed¶
GSEFF - Fuel Economy Relative to Groundspeed¶
TIMETOEMPTY - Time to Empty¶
DISTTOEMPTY - Distance to Empty¶
FLIGHTSTATE - State of Flight¶
UPDATESTATE - Status of any update¶
TORQUEREQ - Requested Torque¶
STKPITCHFRCE - Stick Pitch Force applied by the pilot, positive value - push, negative value - pull¶
STKROLLFRCE - Stick Roll Force applied by the pilot, positive value - roll right, negative value - roll left¶
STKYAWFRCE - Pedal Yaw Force applied by the pilot, positive value - right rudder, negative value - left rudder¶
APPITCHFRCE - Auto Pilot Pitch Force exerted on control surfaces, positive value - push, negative value - pull¶
APROLLFRCE - Auto Pilot Roll Force exerted on control surfaces, positive value - roll right, negative value - roll left¶
APYAWFRCE - Auto Pilot Yaw Force exerted on control surfaces, positive value - right rudder, negative value - left rudder¶
EFBPARAM - Up to 64-character, NULL terminated parameter value¶
OILPRESCOMP - Compensated Oil Pressure¶
MACHBUG - Target Mach¶
AOART - Angle of attack rate of change¶
TASBUG - Target true airspeed¶
GSBUG - Target groundspeed¶
AOABUG - Bugged AOA¶
ECUTIME - ECU Hours¶
DBASE - Active database information¶
EAS - Equivalent Airspeed¶
EASRT - Equivalent Airspeed Rate of Change¶
EASBUG - Target equivalent airspeed¶
POWERREQ - Requested power as percent of engine design maximum¶
BRAKE - Wheel brake status¶
BRAKEREQ - Amount of brake requested¶
NAVSQL - Communication Squelch (0-100)¶
STATIONID - VOR Station ID decoded from Morse code¶
SVPARAM - Synthetic Vision parameters. Subunit is one of XFS_SV_PARAM_*¶
FDCDISEL - Global selection of which CDI the flight director should track¶
BLOODOXY - Blood oxygen level of given seat occupant¶
PULSE - Pulse rate of given seat occupant¶
BREATHS - Breathing rate of given seat occupant¶
CARBMONOX - Carbon Monoxide levels detected by sensor¶
FLOWRATE - Oxygen flow rate¶
TANKPRES - Oxygen tank pressure¶
RNAVVS - Vertical speed computed from RNAV¶
COMPRESET - Selected COM Radio Preset (0=Non-preset frequency)¶
COMNAME - Name of COM Radio or Preset Frequency¶
NAVPRESET - Selected NAV Radio Preset (0=Non-preset frequency)¶
NAVNAME - Name of NAV Radio or Preset Frequency¶
VNORTH - North component of velocity in true world coordinates¶
VEAST - East component of velocity in true world coordinates¶
ENGPOWER - Current Engine Power¶
CHARGE - Measured remaining battery charge¶
CHARGETOT - Computed remaining charge¶
Application software on a node determines when information, commands, or raw data need to be sent onto the network. These transmissions are done as a message with raw data and message with parameters. If subsequent information or commands having the same message class, ID, and flags occur in a timely fashion, they MAY be coalesced into a single message.¶
For each parameter to be sent, the common header (See Section 3.2) the common data items MUST be populated. In addition, the Ident and Parameter Data MUST be populated with the corresponding data as per Section 3.4. The length in the common header MUST represent the actual length of the data, however, the parameter must be padded to a size that is a multiple of four octets.¶
The message header MUST be populated with the corresponding data as per Section 3.1, the message number MUST be monotonically increasing with an arbitrary initial value, and then the length in the common header MUST be set equal to the sum of the padded parameter length values. Once this assembly process is complete, the message may be transmitted.¶
Body text¶
XFSp is designed to be used with a broadcast UDP protocol however, there is no requirement to do so. Each endpoint MUST specify a listening address and port number with the default being 224.0.2.69 on port 20234. The actual address and port number are to be chosen by the system designer / installer for their particular needs. [RFC5771] specifies IPv4 Multicast Address Assignments and SHOULD be followed.¶
If the XFSp message is successfully transmitted, no further action is required.¶
XFSp messages are received on the address and port that was configured in the prior section. Upon receiving a message, the src id and message number MUST be examined to ensure that this message is neither out of order nor a duplicate: the message number must be higher than the previous received message, if any. Messages that are received out of order MUST be discarded. Then, if the message is considered valid, each XFSp MUST must examine each parameter and XFSp message to determine if requires local processing. Local processing is beyond the scope of this document.¶
Since there is no assured message delivery, all commands and information should be idempotent to ensure multiple interpretation, or execution results in the same outcome.¶
Message numbers will overflow. Handling of this case is TODO.¶
Since XFSp operates on a closed network, message signing is not currently supported but may be added in the future.¶
This section illustrates XFSp features by example. The first example controls the radio.¶
This example sets the radio Set Radio frequency and squelch.¶
This memo includes no request to IANA.¶
This document should not affect the security of the Internet.¶
This protocol is currently designed to be deployed on an isolated private network. As such, message encryption, authenticity, and modification detection are not protocol priorities.¶
Message Interception is not considered a significant threat for XFSp because there is no private data in the system.¶
Impersonation and Man in the Middle (MITM) are unlikely because normally the network is physically isolated and not routed to other networks. Strategies for signing messages are a future consideration.¶
Due to secure installation and physical isolation, Denial of Service is not a significant concern.¶