fprime
fprime copied to clipboard
Load and Go Sequences
F´ Version | |
Affected Component | CmdSequencer |
Feature Description
Implement Load and Go Sequences. These are sequences that can run as soon as they are loaded onto the filesystem.
Rationale
Used on large flagship missions and was also requested by system engineers on CADRE.
My understanding is that load and go sequences don't require but pair well the concept of file uplink bundles, so you can deliver a bundle of files/sequences to the spacecraft, then use load and go to execute the main sequence of the bundle.
Otherwise it can be more challenging to ensure arrival of load-and-go sequence pre-reqs prior to start of the load and go.
I support this. I do want to mention that on M2020, the Load-and-go flag is buried in the "File Processing Field" of the "File Load Header". e.g. it's a flag in the file transfer layer, not in the sequence layer. I guess that might be appropriate.
But this feature is a huge timesaver. Traditionally, and operator would uplink a sequence, verify it's on board, then send an activate. Load-and-Go saves a round-trip-light time for activation.
And on CADRE, it's even more important. Our data can be be received on the rovers at 3Mbps. This means that if we chased a sequence load with an activate, there's a race condition between processing the file transfer and saving to disk and the reception of the activate immediate command. We have yet to test to see if this is a problem, but my hopes are not high.
TLDR, I second @gcgandhi's request!
Hmm, that's a good point. Multiple file transfers back to back is inherantly a little less likely to be problematic than a file transfer followed by a execute command.
It would be pretty easy to add a load-and-go flag to the fileuplink/filedownlink file transfer header, and if that flag was set, FileUplink could optionally (if connected) call a seq_execute(filepath)
port on receipt of an end file transfer packet.
@Joshua-Anderson I had the same idea as well when this was brought up by Rich:
So one implementation would be to update the File packet header to have this flag, may also need a flag to indicate its a sequence file. Then have the FileUplink component call CmdSequencer to run the sequence if needed after getting the end file packet. I estimate this would only take a couple days to implement/test.