Files
fpp/docs/spec/Specifiers/Telemetry-Packet-Specifiers.adoc
Rob Bocchino 9cdb165961 Revise spec
2025-09-22 23:38:17 -07:00

86 lines
2.7 KiB
Plaintext

=== Telemetry Packet Specifiers
A *telemetry packet specifier* specifies the format of a data
packet containing telemetry points.
A telemetry packet specifier is part of a
<<Specifiers_Telemetry-Packet-Set-Specifiers,telemetry packet set
specifier>>, which is in turn part of a
<<Definitions_Topology-Definitions,topology definition>>.
==== Syntax
`packet`
<<Lexical-Elements_Identifiers,_identifier_>>
_[_
`id` <<Expressions,_expression_>>
_]_
`group` <<Expressions,_expression_>>
`{` _telemetry-packet-member-sequence_ `}`
_telemetry-packet-member-sequence_ is an
<<Element-Sequences,element sequence>> in
which each element is a *telemetry packet member*,
and the terminating punctuation is a comma.
A telemetry packet member is one of the following:
* _non-annotatable-include-specifier_.
* _<<Instance-Member-Identifiers_Telemetry-Channel-Identifiers,
telemetry-channel-identifier>>_.
A _non-annotatable-include-specifier_ is identical to an
<<Specifiers_Include-Specifiers,include specifier>>,
but it is not an
<<Comments-and-Annotations_Annotations_Where-Annotations-Can-Occur,annotatable element>>.
==== Semantics
. The optional expression _e_ following `id` specifies the numeric
identifier for the packet.
If _e_ is present, then the type of _e_ must be
<<Type-Checking_Type-Conversion,convertible to>>
<<Types_Internal-Types_Integer,_Integer_>>, and _e_ must evaluate
to a nonnegative integer.
If _e_ is not present, then the default identifier is either zero (for the
first
packet appearing in a packet group) or the previous packet identifier plus one.
. The expression _e_ following `group` specifies the
*group* of the packet.
The group is a number that governs the sending of the packet.
In the F Prime flight software, sending of packets can be filtered
by group, so that only packets in certain groups are sent.
The type of _e_ must be
<<Type-Checking_Type-Conversion,convertible to>>
<<Types_Internal-Types_Integer,_Integer_>>, and _e_ must evaluate
to a nonnegative integer.
. FPP recursively resolves any include specifiers in
_telemetry-packet-member-sequence_.
This action converts _telemetry-packet-member-sequence_ to a list _L_ of
telemetry channel identifiers.
For each telemetry channel identifier _I_ in _L_,
the component instance referred to in _I_ must be
available in the enclosing topology, after resolving
to a <<Definitions_Topology-Definitions_Semantics,partially numbered
topology>>.
==== Examples
[source,fpp]
----
@ CDH packet has id 0 and group 0
packet CDH id 0 group 0 {
commandDispatcher.commandsDispatched
rateGroup1Hz.rgMaxTime
include "DownlinkTelemetryChannels.fppi"
include "UplinkTelemetryChannels.fppi"
}
@ Implicit id of ADCS packet is 1. Its group is 2.
packet ADCS group 2 {
adcs.mode
adcs.attitude
}
----