Skip to content

v0.1.0

Latest
Compare
Choose a tag to compare
@ravisuhag ravisuhag released this 26 Jan 16:32
· 2 commits to main since this release

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

  1. 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 and Packet.indication
      • Octet_String.request and Octet_String.indication
  2. 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.
  3. 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.
  4. Management Parameters:

    • Enforces maximum packet length as per CCSDS specifications.
    • Ensures compliance with packet types and service-specific parameters.
  5. Developer-Friendly API:

    • Intuitive methods like NewSpacePacket, Encode, and Decode simplify packet handling.
    • Support for advanced features like optional secondary headers and sequence counts.

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

  1. Optional Parameters:

    • SPP-4 (Packet Loss Indicator) and SPP-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.
  2. Service Type Management:

    • While APIDs are implemented, explicit service type mappings (SPP-26) are not provided.

Future Roadmap

  1. Enhanced QoS Support:
    • Add integrated handling for Quality of Service parameters, including priority and delivery windows.
  2. Multiplexing Schemes:
    • Implement support for packet multiplexing schemes for advanced use cases.
  3. Extended Error Handling:
    • Introduce support for packet and data loss indicators.
  4. 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 in SpacePacket is an octet string.

Space Packet Service Parameters

  • SPP-3 APID 3.3.2.2 M: The APID is part of the PrimaryHeader.
  • 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 in SpacePacket is an octet string.
  • SPP-7 APID 3.4.2.2 M: The APID is part of the PrimaryHeader.
  • SPP-8 Secondary Header Indicator 3.4.2.3 M: The SecondaryHeaderFlag in PrimaryHeader 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 by SecondaryHeaderFlag.
  • 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 in NewSpacePacket 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.