ECSS Package
- spacepackets.ecss.check_pus_crc(tc_packet: bytes) bool
Checks the CRC of a given raw PUS packet. It is expected that the passed packet is the exact raw PUS packet. Both TC and TM packets can be passed to this function because both packet formats have a CCITT-CRC16 at the last two bytes as specified in the PUS standard.
- Returns:
True if the CRC is valid, False otherwise.
- class spacepackets.ecss.defs.PusService(value)
Bases:
IntEnum
An enumeration.
- S11_TC_SCHED = 11
- S15_TM_STORAGE = 15
- S17_TEST = 17
- S1_VERIFICATION = 1
- S20_PARAMETER = 20
- S23_FILE_MGMT = 23
- S2_RAW_CMD = 2
- S3_HOUSEKEEPING = 3
- S5_EVENT = 5
- S6_MEMORY_MGMT = 6
- S8_FUNC_CMD = 8
- S9_TIME_MGMT = 9
- class spacepackets.ecss.defs.PusVersion(value)
Bases:
IntEnum
An enumeration.
- ESA_PUS = 0
- PUS_A = 1
- PUS_C = 2
ECSS PUS Telecommand Module
ECSS PUS Telemetry Module
ECSS Fields Submodule
- class spacepackets.ecss.fields.PacketFieldEnum(pfc: int, val: int)
Bases:
PacketFieldBase
- static check_pfc(pfc: int) int
Check for byte alignment of the PFC. Do not use this if to plan to pack multiple enumerations into one byte
- len()
Return the length in bytes. This will raise a ValueError for non-byte-aligned PFC values.
- classmethod unpack(data: bytes, pfc: int)
Construct from a raw bytestream.
- Raises:
BytesTooShortError – Raw bytestream too short.
- class spacepackets.ecss.fields.PacketFieldU16(val: int)
Bases:
PacketFieldEnum
- class spacepackets.ecss.fields.PacketFieldU32(val: int)
Bases:
PacketFieldEnum
- class spacepackets.ecss.fields.PacketFieldU8(val: int)
Bases:
PacketFieldEnum
- class spacepackets.ecss.fields.PfcReal(value)
Bases:
IntEnum
An enumeration.
- DOUBLE_PRECISION_IEEE = 2
- DOUBLE_PRECISION_MIL_STD_6_OCTETS = 4
- FLOAT_PRECISION_MIL_STD_4_OCTETS = 3
- FLOAT_SIMPLE_PRECISION_IEEE = 1
- class spacepackets.ecss.fields.PfcSigned(value)
Bases:
IntEnum
An enumeration.
- EIGHT_BYTES = 16
- ELEVEN_BIT = 7
- FIFTEEN_BIT = 11
- FIVE_BIT = 1
- FOURTEEN_BIT = 10
- FOUR_BIT = 0
- FOUR_BYTES = 14
- NINE_BIT = 5
- ONE_BYTE = 4
- SEVEN_BIT = 3
- SIX_BIT = 2
- SIX_BYTES = 15
- TEN_BIT = 6
- THIRTEEN_BIT = 9
- THREE_BYTES = 13
- TWELVE_BIT = 8
- TWO_BYTES = 12
- class spacepackets.ecss.fields.PfcUnsigned(value)
Bases:
IntEnum
An enumeration.
- EIGHT_BYTES = 16
- ELEVEN_BIT = 7
- FIFTEEN_BIT = 11
- FIVE_BIT = 1
- FOURTEEN_BIT = 10
- FOUR_BIT = 0
- FOUR_BYTES = 14
- NINE_BIT = 5
- ONE_BIT = 17
- ONE_BYTE = 4
- SEVEN_BIT = 3
- SIX_BIT = 2
- SIX_BYTES = 15
- TEN_BIT = 6
- THIRTEEN_BIT = 9
- THREE_BIT = 19
- THREE_BYTES = 13
- TWELVE_BIT = 8
- TWO_BIT = 18
- TWO_BYTES = 12
ECSS Request ID Submodule
- class spacepackets.ecss.req_id.RequestId(tc_packet_id: PacketId, tc_psc: PacketSeqCtrl, ccsds_version: int = 0)
Bases:
object
The request ID which is used to identify PUS telecommands. The request ID consists of the first two bytes of the CCSDS primary header. It is primarily used to verify the execution of sent telecommands.
>>> from spacepackets.ccsds import PacketType, SequenceFlags >>> packet_id = PacketId(ptype=PacketType.TC, sec_header_flag=False, apid=0x22) >>> psc = PacketSeqCtrl(seq_flags=SequenceFlags.UNSEGMENTED, seq_count=17) >>> req_id = RequestId(packet_id, psc) >>> req_id RequestId(tc_packet_id=PacketId(ptype=<PacketType.TC: 1>, sec_header_flag=False, apid=34), tc_psc=PacketSeqCtrl(seq_flags=<SequenceFlags.UNSEGMENTED: 3>, seq_count=17), ccsds_version=0) >>> struct.pack("!I", req_id.as_u32()).hex(sep=",") '10,22,c0,11'
- as_u32()
- classmethod empty()
- classmethod from_sp_header(header: SpacePacketHeader) RequestId
ECSS PUS 1 Verification Service Submodule
ECSS PUS Service 1 Verification
- class spacepackets.ecss.pus_1_verification.FailureNotice(code: PacketFieldEnum, data: bytes)
Bases:
object
- len()
- class spacepackets.ecss.pus_1_verification.Service1Tm(apid: int, subservice: Subservice, timestamp: bytes, verif_params: VerificationParams | None = None, seq_count: int = 0, packet_version: int = 0, space_time_ref: int = 0, destination_id: int = 0)
Bases:
AbstractPusTm
Service 1 TM class representation.
- property error_code: PacketFieldEnum | None
- property failure_notice: FailureNotice | None
- classmethod from_tm(tm: PusTm, params: UnpackParams) Service1Tm
- property packet_seq_control: PacketSeqCtrl
- property service
- property sp_header: SpacePacketHeader
- property step_id: PacketFieldEnum | None
Retrieve the step number. Returns NONE if this packet does not have a step ID
- property subservice
- property tc_req_id
- classmethod unpack(data: bytes, params: UnpackParams) Service1Tm
Parse a service 1 telemetry packet.
- Parameters:
params
data
- Raises:
ValueError – Subservice invalid.
BytesTooShortError – passed data too short
TmSourceDataTooShortError – TM source data too short.
- Returns:
- class spacepackets.ecss.pus_1_verification.Subservice(value)
Bases:
IntEnum
An enumeration.
- INVALID = 0
- TM_ACCEPTANCE_FAILURE = 2
- TM_ACCEPTANCE_SUCCESS = 1
- TM_COMPLETION_FAILURE = 8
- TM_COMPLETION_SUCCESS = 7
- TM_START_FAILURE = 4
- TM_START_SUCCESS = 3
- TM_STEP_FAILURE = 6
- TM_STEP_SUCCESS = 5
- class spacepackets.ecss.pus_1_verification.UnpackParams(timestamp_len: 'int', bytes_step_id: 'int' = 1, bytes_err_code: 'int' = 1)
Bases:
object
- class spacepackets.ecss.pus_1_verification.VerificationParams(req_id: 'RequestId', step_id: 'Optional[StepId]' = None, failure_notice: 'Optional[FailureNotice]' = None)
Bases:
object
- failure_notice: FailureNotice | None = None
- len()
- step_id: PacketFieldEnum | None = None
- verify_against_subservice(subservice: Subservice)
- spacepackets.ecss.pus_1_verification.create_acceptance_failure_tm(apid: int, pus_tc: PusTc, failure_notice: FailureNotice, timestamp: bytes) Service1Tm
- spacepackets.ecss.pus_1_verification.create_acceptance_success_tm(apid: int, pus_tc: PusTc, timestamp: bytes) Service1Tm
- spacepackets.ecss.pus_1_verification.create_completion_failure_tm(apid: int, pus_tc: PusTc, failure_notice: FailureNotice, timestamp: bytes) Service1Tm
- spacepackets.ecss.pus_1_verification.create_completion_success_tm(apid: int, pus_tc: PusTc, timestamp: bytes) Service1Tm
- spacepackets.ecss.pus_1_verification.create_start_failure_tm(apid: int, pus_tc: PusTc, failure_notice: FailureNotice, timestamp: bytes) Service1Tm
- spacepackets.ecss.pus_1_verification.create_start_success_tm(apid: int, pus_tc: PusTc, timestamp: bytes) Service1Tm
- spacepackets.ecss.pus_1_verification.create_step_failure_tm(apid: int, pus_tc: PusTc, step_id: PacketFieldEnum, failure_notice: FailureNotice, timestamp: bytes) Service1Tm
- spacepackets.ecss.pus_1_verification.create_step_success_tm(apid: int, pus_tc: PusTc, step_id: PacketFieldEnum, timestamp: bytes) Service1Tm
ECSS PUS 3 Housekeeping Service Submodule
- class spacepackets.ecss.pus_3_hk.Subservice(value)
Bases:
IntEnum
An enumeration.
- TC_DISABLE_PERIODIC_DIAGNOSTICS_GEN = 8
- TC_DISABLE_PERIODIC_HK_GEN = 6
- TC_ENABLE_PERIODIC_DIAGNOSTICS_GEN = 7
- TC_ENABLE_PERIODIC_HK_GEN = 5
- TC_GENERATE_ONE_DIAGNOSTICS_REPORT = 28
- TC_GENERATE_ONE_PARAMETER_REPORT = 27
- TC_MODIFY_DIAGNOSTICS_REPORT_COLLECTION_INTERVAL = 32
- TC_MODIFY_PARAMETER_REPORT_COLLECTION_INTERVAL = 31
- TM_DIAGNOSTICS_REPORT = 26
- TM_DIAG_DEFINITION_REPORT = 12
- TM_HK_DEFINITIONS_REPORT = 10
- TM_HK_REPORT = 25
- TM_REPORT_DIAG_REPORT_STRUCTURES = 11
- TM_REPORT_HK_REPORT_STRUCTURES = 9