Puslib is a Python implementation of the telemetry and telecommand packet utilization standard (PUS). It is a standard widely used in the space industry for the purposes of remote monitoring and control of spacecraft subsystems and payloads.
This package is mainly intended for ground segment tools, e.g.:
- data extraction and post-processing of telemetry.
- simulators.
- EGSE SW, and thus enabling the use of mission control systems for controling and monitoring of EGSE equipment.
- enable Python based commanding for mission control systems and other PUS based systems.
- mission-specific tools.
- student projects.
pip install puslib
Python 3.10 or later is required.
from datetime import datetime from functools import partial from puslib import packet from puslib import time MyTmPacket = partial(packet.PusTmPacket.deserialize, has_type_counter_field=False, has_destination_field=False) MyCucTime = partial(time.CucTime, 4, 2, has_preamble=False) with open('telemetry.dump', 'rb') as f: content = f.read() data = memoryview(content) offset = 0 cuc_time = MyCucTime() while offset < len(data): packet_length, packet = MyTmPacket(data[offset:], cuc_time, validate_fields=False, validate_pec=False) offset += packet_length if packet.service == 3 and packet.subservice == 25: print(packet)
- CCSDS packet handling (telecommands and telemetry packets)
- CCSDS Unsegmented Time Code (CUC) support
- Policy handling of mission specific or implementation specific configurations
- Simple abstraction of application processes
- Streams for telemetry and telecommand I/O access
- PUS Services:
- PUS 1: Request Verification
- PUS 3: Housekeeping (partial support)
- PUS 5: Event Reporting
- PUS 8: Function Management
- PUS 17: Test (partial support)
- PUS 20: On-board Parameter Management (partial support)