object

# `ccsds_tm_frames(FrameLength,SecondaryHeaderLength,HasFECF)`

- `FrameLength` - Fixed telemetry transfer frame length in octets.

- `SecondaryHeaderLength` - Length in octets of the telemetry transfer frame secondary header when present.

- `HasFECF` - Boolean indicating if frames include the frame error control field.

CCSDS telemetry transfer frame parser and generator.

Availability:
`logtalk_load(ccsds_frames(loader))`
Author: Paulo Moura
Version: 1:0:2
Date: 2026-06-24
Compilation flags:
`static, context_switching_calls`
Implements:
`public` ccsds_frame_protocol
Uses:
list
reader
type
Remarks:
(none)
Inherited public predicates:
data_field/2 fecf/2 frame_type/2 generate/2 generate/3 ocf/2 parse/2 spacecraft_id/2 valid/1 version/2 virtual_channel_id/2

## Public predicates

### `ocf_flag/2`

Extracts the operational control field flag. Returns `absent` or `present`.

Compilation flags:
`static`
Template:
`ocf_flag(Frame,Flag)`
Mode and number of proofs:
`ocf_flag(+compound,-atom)` - `one`

### `master_channel_frame_count/2`

Extracts the master channel frame count.

Compilation flags:
`static`
Template:
`master_channel_frame_count(Frame,Count)`
Mode and number of proofs:
`master_channel_frame_count(+compound,-integer)` - `one`

### `virtual_channel_frame_count/2`

Extracts the virtual channel frame count.

Compilation flags:
`static`
Template:
`virtual_channel_frame_count(Frame,Count)`
Mode and number of proofs:
`virtual_channel_frame_count(+compound,-integer)` - `one`

### `secondary_header_flag/2`

Extracts the telemetry transfer frame secondary header flag. Returns `absent` or `present`.

Compilation flags:
`static`
Template:
`secondary_header_flag(Frame,Flag)`
Mode and number of proofs:
`secondary_header_flag(+compound,-atom)` - `one`

### `synchronization_flag/2`

Extracts the synchronization flag value.

Compilation flags:
`static`
Template:
`synchronization_flag(Frame,Flag)`
Mode and number of proofs:
`synchronization_flag(+compound,-integer)` - `one`

### `packet_order_flag/2`

Extracts the packet order flag value.

Compilation flags:
`static`
Template:
`packet_order_flag(Frame,Flag)`
Mode and number of proofs:
`packet_order_flag(+compound,-integer)` - `one`

### `segment_length_identifier/2`

Extracts the segment length identifier value.

Compilation flags:
`static`
Template:
`segment_length_identifier(Frame,Identifier)`
Mode and number of proofs:
`segment_length_identifier(+compound,-integer)` - `one`

### `first_header_pointer/2`

Extracts the first header pointer value.

Compilation flags:
`static`
Template:
`first_header_pointer(Frame,Pointer)`
Mode and number of proofs:
`first_header_pointer(+compound,-integer)` - `one`

### `secondary_header/2`

Extracts the telemetry transfer frame secondary header. Returns `none` when absent.

Compilation flags:
`static`
Template:
`secondary_header(Frame,SecondaryHeader)`
Mode and number of proofs:
`secondary_header(+compound,-compound)` - `one`

### `update_fecf/2`

Computes the correct telemetry transfer frame FECF for the selected object configuration and returns the corresponding updated frame term.

Compilation flags:
`static`
Template:
`update_fecf(Frame,UpdatedFrame)`
Mode and number of proofs:
`update_fecf(+compound,-compound)` - `one_or_error`
Exceptions:
`Frame` is a variable:
`instantiation_error`
`Frame` is neither a variable nor a valid telemetry transfer frame term:
`domain_error(ccsds_frame_term,Frame)`

### `verify_fecf/1`

True if the telemetry transfer frame term contains the correct FECF for the selected object configuration.

Compilation flags:
`static`
Template:
`verify_fecf(Frame)`
Mode and number of proofs:
`verify_fecf(@compound)` - `zero_or_one`

## Protected predicates

(no local declarations; see entity ancestors if any)

## Private predicates

(no local declarations; see entity ancestors if any)

## Operators

(none)