fprime icon indicating copy to clipboard operation
fprime copied to clipboard

Load and Go Sequences

Open gcgandhi opened this issue 1 year ago • 4 comments

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.

gcgandhi avatar Aug 17 '23 20:08 gcgandhi

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.

Joshua-Anderson avatar Aug 18 '23 19:08 Joshua-Anderson

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!

rrieber avatar Aug 23 '23 16:08 rrieber

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 avatar Aug 23 '23 21:08 Joshua-Anderson

@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.

gcgandhi avatar Aug 23 '23 22:08 gcgandhi