2023-09-01 19:37:23 +02:00
|
|
|
# Working with Actions
|
|
|
|
|
|
|
|
Space systems generally need to be commanded regularly. This can include commands periodically
|
2023-09-13 15:11:44 +02:00
|
|
|
required to ensure a healthy system, or commands to reach the mission goals.
|
2023-09-01 19:37:23 +02:00
|
|
|
|
|
|
|
These commands can be modelled using the concept of Actions. the ECSS PUS standard also provides
|
|
|
|
the PUS service 8 for actions, but provides few concrete subservices and specification on how
|
|
|
|
action commanding could look like.
|
|
|
|
|
|
|
|
`sat-rs` proposes two recommended ways to perform action commanding:
|
|
|
|
|
|
|
|
1. Target ID and Action ID based. The target ID is a 32-bit unsigned ID for an OBSW object entity
|
|
|
|
which can also accept Actions. The action ID is a 32-bit unsigned ID for each action that a
|
|
|
|
target is able to perform.
|
|
|
|
2. Target ID and Action String based. The target ID is the same as in the first proposal, but
|
|
|
|
the unique action is identified by a string.
|
|
|
|
|
2024-03-27 14:17:59 +01:00
|
|
|
The library provides an `ActionRequest` abstraction to model both of these cases.
|
2023-09-01 19:37:23 +02:00
|
|
|
|
|
|
|
## Commanding with ECSS PUS 8
|
|
|
|
|
|
|
|
`sat-rs` provides a generic ECSS PUS 8 action command handler. This handler can convert PUS 8
|
|
|
|
telecommands which use the commanding scheme 1 explained above to an `ActionRequest` which is
|
|
|
|
then forwarded to the target specified by the Target ID.
|
|
|
|
|
|
|
|
There are 3 requirements for the PUS 8 telecommand:
|
|
|
|
|
|
|
|
1. The subservice 128 must be used
|
|
|
|
2. Bytes 0 to 4 of application data must contain the target ID in `u32` big endian format.
|
|
|
|
3. Bytes 4 to 8 of application data must contain the action ID in `u32` big endian format.
|
|
|
|
4. The rest of the application data are assumed to be command specific additional parameters. They
|
2023-09-01 20:18:26 +02:00
|
|
|
will be added to an IPC store and the corresponding store address will be sent as part of the
|
2023-09-01 19:37:23 +02:00
|
|
|
`ActionRequest`.
|
|
|
|
|
|
|
|
## Sending back telemetry
|
|
|
|
|
|
|
|
There are some cases where the regular verification provided by PUS in response to PUS action
|
|
|
|
commands is not sufficient and some additional telemetry needs to be sent to ground. In that
|
|
|
|
case, it is recommended to chose some custom subservice for action TM data and then send the
|
|
|
|
telemetry using the same scheme as shown above, where the first 8 bytes of the application
|
|
|
|
data is reserved for the target ID and action ID.
|
|
|
|
|