minsp.mo module

The minsp.mo module provides MAL header related classes.

class minsp.mo.MALHeader(version: int = 0, sdu_type: int = 0, service_area: int = 0, service: int = 0, operation: int = 0, area_version: int = 0, is_error: int = 0, qos_level: int = 0, session: int = 0, secondary_apid: int = 0, secondary_apid_qualifier: int = 0, transaction_id: int = 0, source_id_flag: int = 0, destination_id_flag: int = 0, priority_flag: int = 0, timestamp_flag: int = 0, network_zone_flag: int = 0, session_name_flag: int = 0, domain_flag: int = 0, authentication_id_flag: int = 0, source_id: int = 0, destination_id: int = 0, segment_counter: int = 0, priority: int = 0, timestamp: datetime | None = None, network_zone: str = '', session_name: str = '', domain: str = '', authentication_id: str = '')

Bases: object

Represents a MAL (Message Abstraction Layer) secondary header as defined by CCSDS 524.1-B-1.

This header is used in CCSDS Space Packet Protocols to provide structured metadata about messages, including addressing, quality of service, and transport-level information.

Parameters:
  • version (int) – MAL version (3 bits, usually 1).

  • sdu_type (str) – SDU type (5 bits), e.g., 1 for message, 2 for acknowledgment.

  • service_area (int) – Numeric identifier of the service area (16 bits).

  • service (int) – Specific service within the area (16 bits).

  • operation (int) – Operation identifier (8 bits).

  • area_version (int) – Version of the service area (8 bits).

  • is_error (int) – Error flag (1 bit): 0 = normal, 1 = error.

  • qos_level (int) – Quality of Service level (2 bits).

  • session (int) – Session type (2 bits), e.g., P2P, PUB/SUB.

  • secondary_apid (int) – 11-bit field representing the secondary Application Process ID.

  • secondary_apid_qualifier (int) – Qualifier for secondary APID (16 bits).

  • transaction_id (int) – Unique transaction ID (64 bits).

  • source_id_flag (int) – If set, source_id field is present (1 bit).

  • destination_id_flag (int) – If set, destination_id field is present (1 bit).

  • priority_flag (int) – If set, priority field is present (1 bit).

  • timestamp_flag (int) – If set, timestamp field is present (1 bit).

  • network_zone_flag (int) – If set, network_zone field is present (1 bit).

  • session_name_flag (int) – If set, session_name field is present (1 bit).

  • domain_flag (int) – If set, domain field is present (1 bit).

  • authentication_id_flag (int) – If set, authentication_id field is present (1 bit).

  • source_id (int) – Optional source identifier (8 bits).

  • destination_id (int) – Optional destination identifier (8 bits).

  • segment_counter (int) – Optional segment counter for sequencing (32 bits).

  • priority (int) – Optional message priority (32 bits).

  • timestamp (datetime) – Optional UTC timestamp (CUC 7-byte format).

  • network_zone (str) – Optional network zone string (UTF-8, length-prefixed).

  • session_name (str) – Optional session name string (UTF-8, length-prefixed).

  • domain (str) – Optional domain string (UTF-8, length-prefixed).

  • authentication_id – Optional authentication ID string (UTF-8, length-prefixed).

area_version: int = 0
as_bytes(sequence_flag=3) bytes

Packs the MAL header as a byte stream.

Raises:

ValueError – Timestamp flag set but no valid timestamp provided

Returns:

MAL header bytes.

Return type:

bytes

authentication_id: str = ''
authentication_id_flag: int = 0
destination_id: int = 0
destination_id_flag: int = 0
domain: str = ''
domain_flag: int = 0
classmethod from_bytes(data: bytes, sequence_flag: int = 3)

Unpacks a byte stream into a MALHeader instance.

Parameters:
  • data (bytes) – The byte stream.

  • sequence_flag (int) – The packet sequence flag, defaults to 3.

Raises:

ValueError – MAL header too short.

Returns:

A new MALHeader.

Return type:

MALHeader

is_error: int = 0
network_zone: str = ''
network_zone_flag: int = 0
operation: int = 0
priority: int = 0
priority_flag: int = 0
qos_level: int = 0
sdu_type: int = 0
secondary_apid: int = 0
secondary_apid_qualifier: int = 0
segment_counter: int = 0
service: int = 0
service_area: int = 0
session: int = 0
session_name: str = ''
session_name_flag: int = 0
source_id: int = 0
source_id_flag: int = 0
timestamp: datetime | None = None
timestamp_flag: int = 0
transaction_id: int = 0
version: int = 0