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.7 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)