PUS Package
Submodules
Module contents
This module contains PUS data structures and helpers common for both PUS telemetry and telecommands.
Content:
tmtccmd.pus.VerificationWrapperhelper class
- class tmtccmd.pus.CustomFsfwPusService(value)
Bases:
IntEnumAn enumeration.
- SERVICE_200_MODE = 200
- class tmtccmd.pus.VerificationWrapper(pus_verificator: PusVerificator, console_logger: Logger | None, file_logger: Logger | None)
Bases:
object- add_tm(srv_1_tm: Service1Tm) TmCheckResult
- log_progress_to_console_from_status(status: VerificationStatus, req_id: RequestId, subservice: Subservice | None = None)
- log_to_console(srv_1_tm: Service1Tm, res: TmCheckResult)
- log_to_console_from_req_id(req_id: RequestId, res: TmCheckResult, subservice: Subservice | None = None)
- log_to_file(srv_1_tm: Service1Tm, res: TmCheckResult)
- log_to_file_from_req_id(req_id: RequestId, res: TmCheckResult, subservice: Subservice | None = None)
- log_to_file_from_status(status: VerificationStatus, req_id: RequestId, subservice: Subservice | None = None)
- static step_num(status: VerificationStatus)
- property verificator: PusVerificator
- tmtccmd.pus.gen_file_char_from_status(status: StatusField)
Service 1 Telecommand Verification Module
- class tmtccmd.pus.tm.s1_verification.Service1FsfwWrapper(tm: Service1Tm)
Bases:
object
Service 2 Raw Commanding Telemetry Module
Service 3 Housekeeping Modules
PUS Service 3 components. FSFW specific support.
- class tmtccmd.pus.tm.s3_fsfw_hk.Service3FsfwHkPacket(pus_tm: PusTm)
Bases:
objectHousekeeping service HK telemetry parser.
This class can be used to parse the FSFW HK packets for HK packets with the
spacepackets.ecss.pus_3_hk.SubserviceTM_HK_REPORT (25) and TM_DIAGNOSTICS_REPORT (26) subservice. It parses the object ID, set ID fields and the HK data.- Raises:
ValueError – Subservice is not correct or the TM source data length is smaller than 8, which is the minimum required size to unpack object ID and set ID.
- object_id: ComponentIdU32
Object ID.
- class tmtccmd.pus.tm.s3_hk_base.HkContentType(value)
Bases:
EnumAn enumeration.
- DEFINITIONS = <class 'enum.auto'>
- HK = <class 'enum.auto'>
- class tmtccmd.pus.tm.s3_hk_base.Service3Base(object_id: int, custom_hk_handling: bool = False)
Bases:
objectBase class. The TMTC core provides a Service 3 implementation which is intended to be used with the FSFW. However, users can define an own Service 3 implementation.
The TMTC printer utility uses the fields defined in this base class to perform prinouts so if a custom class is defined, the user should implement this class and fill the fields in the TM handling hook if printout of the HK field and validity checking is desired.
- property hk_definitions_list: tuple[list, list]
Can be implemented by a child class to print definitions lists. The first list should contain a header with parameter names, and the second list shall contain the corresponding set IDs
- property object_id: ComponentIdU32
Contains definitions and functions related to PUS Service 3 Telecommands.
- tmtccmd.pus.tc.s3_fsfw_hk.create_disable_periodic_hk_command_with_diag(diag: bool, sid: bytes) PusTc
Deprecated since version v6.0.0rc0: use diagnostic agnostic API if possible
- tmtccmd.pus.tc.s3_fsfw_hk.create_enable_periodic_hk_command_with_diag(diag: bool, sid: bytes) PusTc
Deprecated since version v6.0.0rc0: use diagnostic agnostic API if possible
- tmtccmd.pus.tc.s3_fsfw_hk.create_enable_periodic_hk_command_with_interval(sid: bytes, interval_seconds: float) tuple[PusTc, PusTc]
- tmtccmd.pus.tc.s3_fsfw_hk.create_enable_periodic_hk_command_with_interval_with_diag(diag: bool, sid: bytes, interval_seconds: float) tuple[PusTc, PusTc]
Deprecated since version v6.0.0rc0: use diagnostic agnostic API if possible
- tmtccmd.pus.tc.s3_fsfw_hk.create_modify_collection_interval_cmd(sid: bytes, interval_seconds: float) PusTc
- tmtccmd.pus.tc.s3_fsfw_hk.create_modify_collection_interval_cmd_with_diag(diag: bool, sid: bytes, interval_seconds: float) PusTc
Deprecated since version v6.0.0rc0: use diagnostic agnostic API if possible
- tmtccmd.pus.tc.s3_fsfw_hk.disable_periodic_hk_command(diag: bool, sid: bytes) PusTc
Deprecated since version v4.0.0a2: use create… API instead
- tmtccmd.pus.tc.s3_fsfw_hk.enable_periodic_hk_command(diag: bool, sid: bytes) PusTc
Deprecated since version v4.0.0a2: use create… API instead
- tmtccmd.pus.tc.s3_fsfw_hk.enable_periodic_hk_command_with_interval(diag: bool, sid: bytes, interval_seconds: float) tuple[PusTc, PusTc]
Deprecated since version v4.0.0a2: use create… API instead
- tmtccmd.pus.tc.s3_fsfw_hk.generate_one_diag_command(sid: bytes) PusTc
Deprecated since version v4.0.0a2: use create… API instead
Service 5 Event Module
Contains definitions and functions related to PUS Service 5 Telecommands.
- tmtccmd.pus.tc.s5_event.create_disable_event_reporting_command(apid: int = 0, seq_count: int = 0) PusTc
- tmtccmd.pus.tc.s5_event.create_enable_event_reporting_command(apid: int = 0, seq_count: int = 0) PusTc
Service 5 Event Module - sat-rs support
sat-rs specific PUS event support.
Service 5 Event Module - FSFW support
FSFW specific PUS event support
- class tmtccmd.pus.s5_fsfw_event_defs.EventInfo(id: int = 0, name: str = '', severity: str = '', info: str = '', file_location: str = '')
Bases:
object
- class tmtccmd.pus.s5_fsfw_event_defs.Severity(value)
Bases:
IntEnumAn enumeration.
- HIGH = 4
- INFO = 1
- LOW = 2
- MEDIUM = 3
Contains classes and functions to deserialize PUS Service 5 Telemetry
- class tmtccmd.pus.tm.s5_fsfw_event.EventDefinition(event_id: 'int', reporter_id: 'bytes', param1: 'int', param2: 'int')
Bases:
object- classmethod empty() EventDefinition
- classmethod from_bytes(data: bytes) EventDefinition
- class tmtccmd.pus.tm.s5_fsfw_event.Service5Tm(apid: int, subservice: Subservice, event: EventDefinition, timestamp: bytes, ssc: int = 0, destination_id: int = 0, misc_params: MiscParams | None = None)
Bases:
AbstractPusTmCreate a FSFW tailored Event Service 5 telemetry instance. Use the unpack function to create an instance from a raw bytestream instead. :raises ValueError: Invalid input arguments
- property event_definition: EventDefinition
- classmethod from_tm(pus_tm: PusTm) Service5Tm
- property packet_seq_control: PacketSeqCtrl
- property sp_header: SpacePacketHeader
- classmethod unpack(data: bytes | bytearray, timestamp_len: int) Service5Tm
Service 8 Action Commanding Module
FSFW specific PUS actions support
- class tmtccmd.pus.s8_fsfw_action_defs.CustomSubservice(value)
Bases:
IntEnumAn enumeration.
- TC_FUNCTIONAL_CMD = 128
- TM_DATA_REPLY = 130
Contains classes and functions to handle PUS Service 8 telemetry.
- class tmtccmd.pus.tm.s8_fsfw_action.Service8FsfwDataReply(pus_tm: PusTm)
Bases:
objectFSFW Action service data reply telemetry parser.
This class can be used to parse the FSFW action data replies with the
tmtccmd.pus.s8_fsfw_action_defs.CustomSubservice.TM_DATA_REPLYsubservice. It parses the object ID, the action ID and the reply data.- Raises:
ValueError – Subservice is not correct or the TM source data length is smaller than 8, which is the minimum required size to unpack object ID and action ID.
- object_id: ComponentIdU32
Object ID.
Service 11 Telecommand Scheduling Module
- class tmtccmd.pus.s11_tc_sched_defs.Subservice(value)
Bases:
IntEnumUnless specified, TCs and TMs are related to a request ID
- TC_DELETE = 5
- TC_DELETE_WITH_FILTER = 6
- TC_DETAIL_REPORT_FILTER_BASED = 11
- TC_DETAIL_REPORT_TIME_BASED = 9
- TC_DISABLE = 2
- TC_ENABLE = 1
- TC_INSERT = 4
- TC_RESET = 3
- TC_TIMESHIFT = 7
- TC_TIMESHIFT_ALL = 15
- TC_TIMESHIFT_WITH_FILTER = 8
- TM_DETAIL_REPORT_FILTER_BASED = 12
- TM_DETAIL_REPORT_TIME_BASED = 10
- class tmtccmd.pus.s11_tc_sched_defs.TcSchedReqId(apid: int, seq_cnt: int, src_id: int)
Bases:
object- Raises:
ValueError – Input invalid
- classmethod build_from_tc(tc: PusTc) TcSchedReqId
- property id_u64
Service 17 Test Module
Service 20 Parameter Module - FSFW support
- class tmtccmd.pus.s20_fsfw_param_defs.CustomSubservice(value)
Bases:
IntEnumAn enumeration.
- TC_DUMP = 129
- TC_LOAD = 128
- TM_DUMP_REPLY = 130
- class tmtccmd.pus.s20_fsfw_param_defs.FsfwParamId(object_id: bytes, param_id: ParameterId, ptc: Ptc, pfc: int, rows: int, columns: int)
Bases:
objectWrapper for the whole FSFW specific parameter data. It contains the ECSS PTC and PFC numbers and the number of columns and rows in the parameter. See https://ecss.nl/standard/ecss-e-st-70-41c-space-engineering-telemetry-and-telecommand-packet-utilization-15-april-2016/ p.428 for more information.
- Parameters:
ptc – ECSS PTC number
pfc – ECSS PFC number
rows – Number of rows in parameter (for matrix entries, 1 for vector entries, 1 for scalar entries)
columns – Number of columns in parameter (for matrix or vector entries, 1 for scalar entries)
- Returns:
Parameter information field as 4 byte bytearray
- pack() bytearray
Convert the wrapper to the raw byte format expected for PUS TC or PUS TM creation.
- param_id: ParameterId
- ptc: Ptc
- classmethod unpack(data: bytes | bytearray) FsfwParamId
- class tmtccmd.pus.s20_fsfw_param_defs.Parameter(fsfw_param_id: 'FsfwParamId', param_raw: 'bytes')
Bases:
object- property columns
- classmethod empty()
- fsfw_param_id: FsfwParamId
- property object_id
- pack() bytearray
Convert the wrapper to the raw byte format expected for PUS TC or PUS TM creation.
- property param_id
- property pfc
- property ptc
- property rows
- class tmtccmd.pus.s20_fsfw_param_defs.ParameterId(domain_id: 'int', unique_id: 'int', linear_index: 'int')
Bases:
object- classmethod empty() ParameterId
- classmethod unpack(data: bytes | bytearray) ParameterId
- tmtccmd.pus.s20_fsfw_param_defs.create_matrix_double_parameter(object_id: bytes, domain_id: int, unique_id: int, parameters: Sequence[Sequence[float]]) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_matrix_float_parameter(object_id: bytes, domain_id: int, unique_id: int, parameters: Sequence[Sequence[float]]) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_boolean_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: bool) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_double_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: float) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_float_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: float) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_i16_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: int) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_i32_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: int) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_i8_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: int) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_u16_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: int) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_u32_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: int) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_scalar_u8_parameter(object_id: bytes, domain_id: int, unique_id: int, parameter: int) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_vector_double_parameter(object_id: bytes, domain_id: int, unique_id: int, parameters: Sequence[float]) Parameter
- tmtccmd.pus.s20_fsfw_param_defs.create_vector_float_parameter(object_id: bytes, domain_id: int, unique_id: int, parameters: Sequence[float])
- tmtccmd.pus.s20_fsfw_param_defs.deserialize_scalar_entry(ptc: int, pfc: int, param_data: bytes) int | float
Try to deserialize a scalar parameter entry (row = 1 and column = 1).
- Raises:
ValueError – Passed parameter data length invalid.
NotImplementedError – Parsing of parameter data not implemented for given PTC and PFC.
Contains definitions and functions related to PUS Service 20 Telecommands.
- tmtccmd.pus.tc.s20_fsfw_param.create_dump_param_cmd(param_fsfw_id: FsfwParamId, apid: int = 0) PusTc
- tmtccmd.pus.tc.s20_fsfw_param.create_load_param_cmd_from_raw(parameter_raw: bytes, apid: int = 0) PusTc
- tmtccmd.pus.tc.s20_fsfw_param.pack_boolean_parameter_app_data(object_id: bytes, domain_id: int, unique_id: int, parameter: bool) bytearray | None
Deprecated since version 3.1.0: use create_scalar_boolean_parameter instead
- tmtccmd.pus.tc.s20_fsfw_param.pack_parameter_id(domain_id: int, unique_id: int, linear_index: int) bytearray
Packs the Parameter ID (bytearray with 4 bytes) which is part of the service 20 packets. The first byte of the parameter ID is the domain ID, the second byte is a unique ID and the last two bytes are a linear index if a parameter is not loaded from index 0. :param domain_id: One byte domain ID :param unique_id: One byte unique ID :param linear_index: Two byte linear index.
Deprecated since version 4.0.0a2: use ParameterId helper class with pack() instead
- tmtccmd.pus.tc.s20_fsfw_param.pack_scalar_boolean_parameter_app_data(object_id: bytes, domain_id: int, unique_id: int, parameter: bool) bytearray | None
Tailored towards FSFW applications.
- Parameters:
object_id
domain_id
unique_id
parameter
- Returns:
Application data
Deprecated since version 4.0.0a2: Please use create_scalar_boolean_parameter instead
- tmtccmd.pus.tc.s20_fsfw_param.pack_scalar_double_param_app_data(object_id: bytes, domain_id: int, unique_id: int, parameter: float) bytearray | None
Deprecated since version 4.0.0a2: Please use create_scalar_double_parameter instead
- tmtccmd.pus.tc.s20_fsfw_param.pack_scalar_float_param_app_data(object_id: bytes, domain_id: int, unique_id: int, parameter: float) bytearray | None
Deprecated since version 4.0.0a2: use create_scalar_float_parameter instead
- tmtccmd.pus.tc.s20_fsfw_param.pack_scalar_u8_parameter_app_data(object_id: bytes, domain_id: int, unique_id: int, parameter: int) bytearray | None
Tailored towards FSFW applications.
- Parameters:
object_id
domain_id
unique_id
parameter
- Returns:
Application data
Deprecated since version 4.0.0a2: Please use create_scalar_u8_parameter instead
- tmtccmd.pus.tc.s20_fsfw_param.pack_type_and_matrix_data(ptc: int, pfc: int, rows: int, columns: int) bytearray
Deprecated since version 4.0.0a2: use ParamWrapper helper class with pack() instead
- tmtccmd.pus.tc.s20_fsfw_param.prepare_param_packet_header(object_id: bytes, domain_id: int, unique_id: int, ptc: Ptc, pfc: int, rows: int, columns: int, start_at_idx: int = 0) bytearray | None
Deprecated since version 4.0.0a2: use ParamWrapper helper class with pack() instead
- class tmtccmd.pus.tm.s20_fsfw_param.Service20FsfwTm(subservice: int, source_data: bytes, timestamp: bytes, apid: int = 0)
Bases:
AbstractPusTm- classmethod empty() Service20FsfwTm
- property packet_seq_control: PacketSeqCtrl
- property sp_header: SpacePacketHeader
- classmethod unpack(raw_telemetry: bytes, timestamp_len: int) Service20FsfwTm
- class tmtccmd.pus.tm.s20_fsfw_param.Service20ParamDumpWrapper(param_tm: Service20FsfwTm)
Bases:
object- get_param() Parameter
Tries to build a
Parameterfrom the own raw telemetry data.- Raises:
ValueError – Telemetry source data too short.
Service 200 Mode Commanding Module - FSFW support
- class tmtccmd.pus.s200_fsfw_mode_defs.Subservice(value)
Bases:
IntEnumAn enumeration.
- TC_MODE_ANNOUNCE = 4
- TC_MODE_ANNOUNCE_RECURSIVE = 5
- TC_MODE_COMMAND = 1
- TC_MODE_COMMAND_FORCES = 2
- TC_MODE_READ = 3
- TM_CANT_REACH_MODE = 7
- TM_MODE_REPLY = 6
- TM_WRONG_MODE_REPLY = 8
Core components for mode commanding (custom PUS service).
- class tmtccmd.pus.tc.s200_fsfw_mode.Mode(value)
Bases:
IntEnumStandard modes when commanding objects. These mode IDs are reserved by the FSFW, so it is recommended to avoid these numbers for custom modes.
- NORMAL = 2
- OFF = 0
- ON = 1
- RAW = 3
- tmtccmd.pus.tc.s200_fsfw_mode.create_mode_command(object_id: bytes, mode: int | Mode, submode: int) PusTc
- tmtccmd.pus.tc.s200_fsfw_mode.pack_mode_command(object_id: bytes, mode: int | Mode, submode: int) PusTc
Deprecated since version v4.0.0a2: use create… API instead
- tmtccmd.pus.tc.s200_fsfw_mode.pack_mode_data(object_id: bytes, mode: Mode | int, submode: int) bytearray
FSFW modes: Mode 0: Off, Mode 1: Mode On, Mode 2: Mode Normal, Mode 3: Mode Raw
Base class for Service 200 mode commanding reply handling.