This implements an idea that has been around for a long time to handle command interrupt processing in a more direct -way that more closely matches the OBC behavior. In particular:
Notice END SCS commands (CODISASX) and cut all running commands in that SCS slot after the command time.
Implement RLTT as END SCS for slots 128 to 133.
Put appropriate END SCS commands in the Command Event definitions.
A key implementation detail is the definition of "running commands". The basic outline of how this works is as follows.
Make a list of CommandTable objects corresponding to each approved command load
Append to that list a CommandTable of commands for each Command Event.
Sort the list of CommandTables (called cmds_list) by the date of the first command in each table.
Iterate over cmds_list (for cmds in cmds_list:)
Find any RLTT or END SCS commands in cmds and collect them into a dict that captures the SCS numbers and end dates.
Iterate over all previous cmds in the cmds_list and cut commands accordingly.
Stack the cmds_list tables and then sort into the standard backstop order.
The key point to this change is that it simplifies the code logic and removes ad-hoc processing rules.
To do:
[x] Confirm that loads.csv is no longer used as an input to processing.
[x] Consider further cleanup in code and maybe remove the loads.csv and loads.dat output.
[x] Check command history near 2022:223 BSH. Dither stays enabled?
Interface impacts
New END SCS and LOAD_EVENT commands are stored in the archive. No changes to actual spacecraft commands.
Testing
Unit tests
[x] Mac with current "flight" archive ($SKA/data/kadi/cmds2.*)
Description
This implements an idea that has been around for a long time to handle command interrupt processing in a more direct -way that more closely matches the OBC behavior. In particular:
A key implementation detail is the definition of "running commands". The basic outline of how this works is as follows.
CommandTable
objects corresponding to each approved command loadCommandTable
of commands for each Command Event.CommandTable
s (calledcmds_list
) by the date of the first command in each table.cmds_list
(for cmds in cmds_list:
)cmds
and collect them into a dict that captures the SCS numbers and end dates.cmds
in thecmds_list
and cut commands accordingly.cmds_list
tables and then sort into the standard backstop order.The key point to this change is that it simplifies the code logic and removes ad-hoc processing rules.
To do:
loads.csv
is no longer used as an input to processing.loads.csv
andloads.dat
output.Interface impacts
New END SCS and LOAD_EVENT commands are stored in the archive. No changes to actual spacecraft commands.
Testing
Unit tests
$SKA/data/kadi/cmds2.*
)Independent check of unit tests by Jean
Functional tests