Eyestar S4 inter-satellite link

For missions which fly the Nearspace Launch Eyestar S4 inter-satellite link, the OPS platform provides two commands for sending data to and receiving data from the satellite over the link.

The Eyestar provides the ability to send up to 200 bytes in a single message. Open Cosmos reserves the first three of these bytes to implement a rudimentary mailbox system and to allow for further functionality in future. Messages sent must therefore be no more than 197 bytes long.

GetResponsesV2

The GetResponsesV2 command returns a list of messages that have been received from the satellite. The command request should have the following structure:

{
  "dest_addr": 0,
  "packet_id_cursor": 1233
}

The dest_addr field filters packets by which mailbox they were sent to (based on the 3-byte header added by the satellite). Unless otherwise agreed this will be 0.

The packet_id_cursor field allows packets that have already been seen to be filtered out of the response. By sending the packet ID of the last packet that was successfully processed, only new packets will be seen in the response.

The command returns a single response, with the following example structure:

{
  "data": {
        "messages": [
            {
                "data": "ABCD/abcd",
                "packet_id": 1234,
                "gateway_ts": "2023-07-11T11:54:12Z",
            },
            ...
        ]
    },
    "type": "NSLResponses",
    "sequenceId": 123
}

Where the data field is a base64 encoding of the message, without the 3-byte Open Cosmos header.

The packet_id and gateway_ts fields are forwarded unmodified from the NSL system. The packet ID can be sent in future requests to filter for new messages.

SendBytes

The SendBytes command sends a message from the ground to the satellite via the inter-satellite link.

The command payload has the following structure:

{
  "dest_addr": 0,
  "data": "ABCD/abcd"
}

Where data is a base64 encoding of the data to be sent. dest_addr should be 0 unless otherwise agreed.

The command returns one response, with the following structure:

{
  "data": {
    "dry_run": false,
    "packet_id": 8668
  },
  "type": "SendBytesResponse",
  "createdAt": "2023-12-08T16:23:31.058066Z"
}

The dry_run field will always be false during normal operation. The packet_id field gives the packet ID assigned by NSL.