Release Notice: Astro
We are excited to announce the 0.1 release of the Astro. This release introduces the support for CCSDS Space Packet Protocol (CCSDS 133.0-B-1) in Go. This library is designed to help developers build reliable, protocol-compliant systems for space telemetry, telecommand, and data services.
Key Features
-
Core Protocol Support:
- Fully supports the Space Packet Service Data Units (SPDU) with the
SpacePacket
struct representing the SDU. - Implements mandatory service primitives for both the Packet Service and Octet String Service:
Packet.request
andPacket.indication
Octet_String.request
andOctet_String.indication
- Fully supports the Space Packet Service Data Units (SPDU) with the
-
Header and Data Management:
- Primary Header: Includes APID, version, sequence flags, and packet length.
- Secondary Header: Optional, with the
SecondaryHeaderFlag
indicating its presence. - User Data Field: Represents the payload or octet string for each packet.
-
Protocol Procedures:
- Packet Assembly: The
Encode
function assembles Space Packets from raw Octet Strings. - Packet Transfer: Ensures compliance with CCSDS standards for outgoing packets.
- Packet Extraction: The
Decode
function extracts payloads and headers from received packets.
- Packet Assembly: The
-
Management Parameters:
- Enforces maximum packet length as per CCSDS specifications.
- Ensures compliance with packet types and service-specific parameters.
-
Developer-Friendly API:
- Intuitive methods like
NewSpacePacket
,Encode
, andDecode
simplify packet handling. - Support for advanced features like optional secondary headers and sequence counts.
- Intuitive methods like
Conformance to CCSDS Standards
Fulfilled Requirements
Requirement | Status |
---|---|
Space Packet Service Data Units | Fully Implemented |
Space Packet Service Parameters | Partially Implemented (M/O) |
Octet String Service Parameters | Fully Implemented |
Space Packet Service Primitives | Fully Implemented |
Octet String Service Primitives | Fully Implemented |
Protocol Data Unit | Fully Implemented |
Protocol Procedures | Fully Implemented |
Management Parameters | Partially Implemented (M/O) |
Key Notes
- The library fulfills all mandatory requirements (M) as outlined in the CCSDS standard.
- Some optional requirements (O), such as the Packet Loss Indicator and QoS parameters, are not explicitly supported in this release.
- Custom implementations can extend the library to include optional features as needed.
Limitations
-
Optional Parameters:
SPP-4
(Packet Loss Indicator) andSPP-9
(Data Loss Indicator) are not supported.SPP-5
(QoS Requirements) is not explicitly integrated but can be implemented externally.SPP-25
(Packet Multiplexing Scheme) is not supported.
-
Service Type Management:
- While APIDs are implemented, explicit service type mappings (
SPP-26
) are not provided.
- While APIDs are implemented, explicit service type mappings (
Future Roadmap
- Enhanced QoS Support:
- Add integrated handling for Quality of Service parameters, including priority and delivery windows.
- Multiplexing Schemes:
- Implement support for packet multiplexing schemes for advanced use cases.
- Extended Error Handling:
- Introduce support for packet and data loss indicators.
- Performance Optimization:
- Optimize packet assembly and extraction for high-throughput applications.
Acknowledgments
We thank the CCSDS community for their guidance and the developers who contributed to this release.
For questions, feedback, or contributions, please reach out @ravi_suhag on X.
Full report for conformance:
Space Packet Service Data Units
- SPP-1 Space Packet SDU 3.2.2 M: The
SpacePacket
struct represents the Space Packet SDU. - SPP-2 Octet String SDU 3.2.3 M: The
UserData
field inSpacePacket
is an octet string.
Space Packet Service Parameters
- SPP-3 APID 3.3.2.2 M: The
APID
is part of thePrimaryHeader
. - SPP-4 Packet Loss Indicator 3.3.2.3 O: Not explicitly supported.
- SPP-5 QoS Requirement 3.3.2.4 O: Not explicitly supported.
Octet String Service Parameters
- SPP-6 Octet String 3.4.2.1 M: The
UserData
field inSpacePacket
is an octet string. - SPP-7 APID 3.4.2.2 M: The
APID
is part of thePrimaryHeader
. - SPP-8 Secondary Header Indicator 3.4.2.3 M: The
SecondaryHeaderFlag
inPrimaryHeader
indicates the presence of a secondary header. - SPP-9 Data Loss Indicator 3.4.2.4 O: Not explicitly supported.
Space Packet Service Primitives
- SPP-10 Packet.request 3.3.3.2 M: The
NewSpacePacket
function can be considered as the packet request. - SPP-11 Packet.indication 3.3.3.3 M: The
Decode
function can be considered as the packet indication.
Octet String Service Primitives
- SPP-12 Octet_String.request 3.4.3.2 M: The
NewSpacePacket
function handles octet string requests. - SPP-13 Octet_String.indication 3.4.3.3 M: The
Decode
function handles octet string indications.
Space Packet Protocol Data Unit
- SPP-14 Space Packet 4.1 M: The
SpacePacket
struct represents the Space Packet. - SPP-15 Packet Primary Header 4.1.3 M: The
PrimaryHeader
struct represents the primary header. - SPP-16 Packet Data Field 4.1.4 M: The
UserData
field represents the packet data field. - SPP-17 Packet Secondary Header 4.1.4.2 C1: The
SecondaryHeader
is optional and indicated bySecondaryHeaderFlag
. - SPP-18 User Data Field 4.1.4.3 C2: The
UserData
field is mandatory if the secondary header is not present.
Protocol Procedures
- SPP-19 Packet Assembly Function 4.2.2 M: The
Encode
function assembles the packet. - SPP-20 Packet Transfer Function 4.2.3 M: The
Encode
function prepares the packet for transfer. - SPP-21 Packet Extraction Function 4.3.2 M: The
Decode
function extracts the packet. - SPP-22 Packet Reception Function 4.3.3 M: The
Decode
function handles packet reception.
Management Parameters
- SPP-23 Maximum Packet Length (octets) Table 5-1 M: The
NewSpacePacket
function checks the packet length. - SPP-24 Packet Type of Outgoing Packets (used only by sending systems) Table 5-1 M: The
packetType
parameter inNewSpacePacket
handles this. - SPP-25 Packet Multiplexing Scheme (used only by sending and intermediate systems) Table 5-1 O: Not explicitly supported.
- SPP-26 Service Type (this parameter is specified for each APID at the sending and receiving ends of the managed data path) Table 5-1 M: Not explicitly supported.
Summary
The current implementation fulfills most of the mandatory requirements (marked with "M"). Optional requirements (marked with "O") are not explicitly supported.