eeros_architecture:sequencer:sequencer
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
eeros_architecture:sequencer:sequencer [2017/09/24 10:55] – [Forcing the Sequencer to Stop Immediately] graf | eeros_architecture:sequencer:sequencer [2021/12/23 17:40] (current) – ursgraf | ||
---|---|---|---|
Line 2: | Line 2: | ||
====== Sequencer ====== | ====== Sequencer ====== | ||
The sequencer is responsible to run the main sequence. There is a single instance of the sequencer and therefore only one main sequence. Further, the sequencer contains a list with all sequences. Whenever you define a sequence it will automatically be added to this list. The list helps to retrieve a reference to a given sequence. This can be helpful is you wish to pass information into this sequence.\\ | The sequencer is responsible to run the main sequence. There is a single instance of the sequencer and therefore only one main sequence. Further, the sequencer contains a list with all sequences. Whenever you define a sequence it will automatically be added to this list. The list helps to retrieve a reference to a given sequence. This can be helpful is you wish to pass information into this sequence.\\ | ||
- | First, get the instance of the sequencer. | + | First, get the instance of the sequencer. Make sure to set the default logger output to an output stream, as the sequencer uses loggers. |
<code cpp> | <code cpp> | ||
+ | Logger:: | ||
auto& sequencer = Sequencer:: | auto& sequencer = Sequencer:: | ||
</ | </ | ||
- | The next step is to define a meaningfull sequence (see [[.: | + | The next step is to define a meaningfull sequence (see [[.: |
<code cpp> | <code cpp> | ||
MainSequence mainSequence(" | MainSequence mainSequence(" | ||
- | | + | mainSequence(); |
- | | + | |
... // do other things such as starting the executor | ... // do other things such as starting the executor | ||
- | | + | |
</ | </ | ||
===== Forcing the Sequencer to Stop Immediately ===== | ===== Forcing the Sequencer to Stop Immediately ===== | ||
- | For a system under development you often want to abort a running system. This case must be handled carefully. As described in [[getting_started: | + | For a system under development you often want to abort a running system. This case must be handled carefully. As described in [[getting_started: |
<code cpp> | <code cpp> | ||
void signalHandler(int signum) { | void signalHandler(int signum) { | ||
Line 24: | Line 24: | ||
} | } | ||
</ | </ | ||
- | not only the safety system will gracefully shutdown but the sequencer running any set of sequences will terminate | + | not only the safety system will gracefully shutdown but the sequencer running any set of sequences will abort as well. Please make sure that your program waits for those sequences to abort before your main program stops. This can be accomplished as follows: |
+ | <code cpp> | ||
+ | ... | ||
+ | sequencer.wait(); | ||
+ | ... | ||
+ | </ | ||
eeros_architecture/sequencer/sequencer.1506243333.txt.gz · Last modified: 2017/09/24 10:55 (external edit)