Supported Windows
LEASE_ISL
The window is used to enable an inter-satellite communication link so that processes on the payloads can use the ISL to send data to, or receive data from, another satellite. This window will be scheduled on the satellite which will be sending data and the satellite to receive those data is specified as a parameter. Documentation about the software interfaces to transmit and receive using the ISL system can be found here.
Type
LEASE_ISL
Parameters
Name | Type | Required | Description |
---|---|---|---|
isl_receive_satellite_id | string | yes | The identifier for the satellite which will be receiving data from the satellite that this window is scheduled on. |
Special POST /window Response
In the POST /window
section, above, the response is noted as having a single ID returned. Since ISL windows come in pairs (i.e. one for each satellite involved), the POST /window endpoint will return a second ID. This will be the ID of the window created for the paired satellite. This will be found under an additional key, paired_id. See the example JSON response in this section.
- Bash
- Python
curl -X POST "${HOST}/tasking/window" \
-H "${AUTH_HEADER}" \
-H "Content-Type: application/json" \
-d @- << EOF
{
"type": "LEASE_ISL",
"satellite_id": "FM123",
"start": 1599445000,
"duration": 600,
"parameters": {
"isl_receive_satellite_id": "FM124"
}
}
EOF
{"data": {"id": "3014288", "paired_id": "3014289"}}
api = host + '/tasking/window'
json = {
'type': 'LEASE_ISL',
'satellite_id': 'FM123',
'start': 1599445000,
'duration': 600,
'parameters': {
'isl_receive_satellite_id': 'FM124'
}
}
requests.post(api, headers=auth, json=json)
{"data": {"id": "3014288", "paired_id": "3014289"}}
PAYLOAD_IPI
This window allows the user to run an executable on the imaging payload interface (IPI) which provides access to imaging/camera hardware. The user's executable can make use of software interfaces to trigger the capture of images on the IPI.
The window consists of two phases:
- A file copy phase during which files needed from other payloads can be copied to the payload.
- A processing phase where a customer-supplied executable is run with customer supplied arguments.
- A data retrieval phase where any files written to /outbox are queued for download.
Type
PAYLOAD_IPI
Parameters
Name | Type | Required | Description |
---|---|---|---|
adcs_config | adcs_config | no | See adcs_config default: { "mode": "NOOP" } |
downlink_budget | number | no | kilobytes of data to schedule for download |
copy_from | list of copy_from | no | See copy_from (default: []) |
user_command | user_command | yes | See user_command |
- Bash
- Python
curl -X POST "${HOST}/tasking/window" \
-H "${AUTH_HEADER}" \
-H "Content-Type: application/json" \
-d @- << EOF
{
"type": "PAYLOAD_IPI",
"satellite_id": "FM123",
"start": 1599445000,
"duration": 600,
"parameters": {
"downlink_budget": 0,
"copy_from": [
{
"src_payload": "SABERTOOTH",
"src_path": "/persist/data/locations1",
"dst_path": "/persist/data/locations1"
}
],
"adcs_config": {
"mode": "TRACKING",
"aperture": "IMAGER_TBD",
"target_latitude_north": 5.240337,
"target_longitude_east": -52.768472
},
"user_command": {
"executable": "/persist/bin/capture",
"executable_arguments": [
"--duration", "60",
"--interval", "10",
"--output-dir-for-download", "/outbox/images/"
]
}
}
}
EOF
{"data": {"id": "3014288"}}
api = host + '/tasking/window'
json = {
'type': 'LEASE_ISL',
'satellite_id': 'FM123',
'start': 1599445000,
'duration': 600,
'parameters': {
'isl_receive_satellite_id': 'FM124'
}
}
requests.post(api, headers=auth, json=json)
{"data": {"id": "3014288"}}
PAYLOAD_SDR
This is an updated version of the PAYLOAD_SDR window (the old version is no longer supported). It allows the user to run an executable on the software defined radio (SDR) payload. The supplied executable can make use of software interfaces to send or receive signals with the SDR payload. The previous version of the window included a capture_config, which has been replaced with the following applications, which can be used in a user_command, either invoked directly or included in a script etc. Further documentation can be found here.
- RFCollect
- RFTransmit
- IQGenerator
The window consists of three phases:
- A file copy phase during which files needed from other payloads can be copied to the payload. (Noted earlier as "pre-buffer.")
- A processing phase where a customer-supplied executable is run with customer supplied arguments.
- A data retrieval phase where any files written to /outbox are queued for download. (Noted earlier as "post-buffer.")
IQ Capture Size Limitations
Captured IQ files in uncompressed form must not exceed 1GB in size due to payload memory constraints.
To calculate the uncompressed file size for a capture, a useful upper bound (in kB) can be found by solving 4 * sample_rate_khz * capture_duration
rounded up to the nearest 16kB.
Note: The compressed file will likely be much smaller though actual compression ratios depend on signal parameters and will need to be determined experimentally.
Type
PAYLOAD_SDR
Parameters
Name | Type | Required | Description |
---|---|---|---|
adcs_config | adcs_config | no | See adcs_config default: { "mode": "NOOP" } |
downlink_budget | number | no | kilobytes of data to schedule for download |
copy_from | list of copy_from | no | See copy_from (default: []) |
user_command | user_command | yes | See user_command |
- Bash
- Python
curl -X POST "${HOST}/tasking/window" \
-H "${AUTH_HEADER}" \
-H "Content-Type: application/json" \
-d @- << EOF
{
"type": "PAYLOAD_SDR",
"satellite_id": "FM123",
"start": 1599445000,
"duration": 600,
"parameters": {
"downlink_budget": 0,
"copy_from": [
{
"src_payload": "SABERTOOTH",
"src_path": "/persist/data/waveform1",
"dst_path": "/persist/data/waveform1"
}
],
"adcs_config": {
"mode": "TRACKING",
"aperture": "SBAND_SDR",
"target_latitude_north": 5.240337,
"target_longitude_east": -52.768472
},
"user_command": {
"executable": "/persist/bin/phase1",
"executable_arguments": [
"--input", "/persist/data/waveform1",
"--output", "/output/results.txt"
]
}
}
}
EOF
{"data": {"id": "3014288"}}
api = host + '/tasking/window'
json = {
'type': 'PAYLOAD_SDR',
'satellite_id': 'FM123',
'start': 1599445000,
'duration': 600,
'parameters': {
'downlink_budget': 0,
'copy_from': [
{
'src_payload': 'SABERTOOTH',
'src_path': '/persist/data/waveform1',
'dst_path': '/persist/data/waveform1'
}
],
'adcs_config': {
'mode': 'TRACKING',
'aperture': 'SBAND_SDR',
'target_latitude_north': 5.240337,
'target_longitude_east': -52.768472
},
'user_command': {
'executable': '/persist/bin/phase1',
'executable_arguments': [
'--input', '/persist/data/waveform1',
'--output', '/output/results.txt'
]
}
}
}
requests.post(api, headers=auth, json=json)
{"data": {"id": "3014288"}}