8 #include "artdaq/Application/detail/Commandable_sm.h"
9 #include "artdaq/Application/Commandable.hh"
11 using namespace statemap;
13 #pragma GCC diagnostic push
14 #pragma GCC diagnostic ignored "-Wunused-parameter"
18 Main_Booted Main::Booted(
"Main::Booted", 0);
19 Main_Initialized Main::Initialized(
"Main::Initialized", 1);
20 InitializedMap_Ready InitializedMap::Ready(
"InitializedMap::Ready", 2);
21 InitializedMap_InRun InitializedMap::InRun(
"InitializedMap::InRun", 3);
22 InRunMap_Running InRunMap::Running(
"InRunMap::Running", 4);
23 InRunMap_Paused InRunMap::Paused(
"InRunMap::Paused", 5);
24 InRunMap_InRunError InRunMap::InRunError(
"InRunMap::InRunError", 6);
26 void CommandableState::in_run_failure(CommandableContext& context)
31 void CommandableState::init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
36 void CommandableState::pause(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
41 void CommandableState::reinit(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
46 void CommandableState::resume(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
51 void CommandableState::shutdown(CommandableContext& context, uint64_t timeout)
56 void CommandableState::soft_init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
61 void CommandableState::start(CommandableContext& context, art::RunID
id, uint64_t timeout, uint64_t timestamp)
66 void CommandableState::stop(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
71 void CommandableState::Default(CommandableContext& context)
75 context.getState().getName(),
76 context.getTransition()));
79 void Main_Default::init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
81 Commandable& ctxt = context.getOwner();
83 CommandableState& endState = context.getState();
88 ctxt.badTransition(__func__);
89 context.setState(endState);
93 context.setState(endState);
98 void Main_Default::start(CommandableContext& context, art::RunID
id, uint64_t timeout, uint64_t timestamp)
100 Commandable& ctxt = context.getOwner();
102 CommandableState& endState = context.getState();
104 context.clearState();
107 ctxt.badTransition(__func__);
108 context.setState(endState);
112 context.setState(endState);
117 void Main_Default::stop(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
119 Commandable& ctxt = context.getOwner();
121 CommandableState& endState = context.getState();
123 context.clearState();
126 ctxt.badTransition(__func__);
127 context.setState(endState);
131 context.setState(endState);
136 void Main_Default::pause(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
138 Commandable& ctxt = context.getOwner();
140 CommandableState& endState = context.getState();
142 context.clearState();
145 ctxt.badTransition(__func__);
146 context.setState(endState);
150 context.setState(endState);
155 void Main_Default::resume(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
157 Commandable& ctxt = context.getOwner();
159 CommandableState& endState = context.getState();
161 context.clearState();
164 ctxt.badTransition(__func__);
165 context.setState(endState);
169 context.setState(endState);
174 void Main_Default::shutdown(CommandableContext& context, uint64_t timeout)
176 Commandable& ctxt = context.getOwner();
178 CommandableState& endState = context.getState();
180 context.clearState();
183 ctxt.badTransition(__func__);
184 context.setState(endState);
188 context.setState(endState);
193 void Main_Default::soft_init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
195 Commandable& ctxt = context.getOwner();
197 CommandableState& endState = context.getState();
199 context.clearState();
202 ctxt.badTransition(__func__);
203 context.setState(endState);
207 context.setState(endState);
212 void Main_Default::reinit(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
214 Commandable& ctxt = context.getOwner();
216 CommandableState& endState = context.getState();
218 context.clearState();
221 ctxt.badTransition(__func__);
222 context.setState(endState);
226 context.setState(endState);
231 void Main_Booted::Entry(CommandableContext& context)
234 Commandable& ctxt = context.getOwner();
239 void Main_Booted::init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
241 Commandable& ctxt = context.getOwner();
243 if (ctxt.do_initialize(pset, timeout, timestamp))
245 context.getState().Exit(context);
247 context.setState(Main::Initialized);
249 context.getState().Entry(context);
250 context.pushState(InitializedMap::Ready);
251 context.getState().Entry(context);
258 void Main_Booted::reinit(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
260 Commandable& ctxt = context.getOwner();
262 if (ctxt.do_initialize(pset, timeout, timestamp))
264 context.getState().Exit(context);
266 context.setState(Main::Initialized);
268 context.getState().Entry(context);
269 context.pushState(InitializedMap::Ready);
270 context.getState().Entry(context);
277 void Main_Booted::shutdown(CommandableContext& context, uint64_t timeout)
279 context.getState().Exit(context);
280 context.setState(Main::Booted);
281 context.getState().Entry(context);
284 void Main_Initialized::init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
286 Commandable& ctxt = context.getOwner();
288 if (ctxt.do_initialize(pset, timeout, timestamp))
290 context.getState().Exit(context);
292 context.setState(Main::Initialized);
294 context.getState().Entry(context);
295 context.pushState(InitializedMap::Ready);
296 context.getState().Entry(context);
300 context.getState().Exit(context);
301 context.setState(Main::Booted);
302 context.getState().Entry(context);
306 void Main_Initialized::reinit(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
308 Commandable& ctxt = context.getOwner();
310 if (ctxt.do_initialize(pset, timeout, timestamp))
312 context.getState().Exit(context);
314 context.setState(Main::Initialized);
316 context.getState().Entry(context);
317 context.pushState(InitializedMap::Ready);
318 context.getState().Entry(context);
322 context.getState().Exit(context);
323 context.setState(Main::Booted);
324 context.getState().Entry(context);
328 void Main_Initialized::shutdown(CommandableContext& context, uint64_t timeout)
330 Commandable& ctxt = context.getOwner();
332 if (ctxt.do_shutdown(timeout))
334 context.getState().Exit(context);
336 context.setState(Main::Booted);
337 context.getState().Entry(context);
341 Main_Default::shutdown(context, timeout);
345 void InitializedMap_Default::init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
347 Commandable& ctxt = context.getOwner();
349 CommandableState& endState = context.getState();
351 context.clearState();
354 ctxt.badTransition(__func__);
355 context.setState(endState);
359 context.setState(endState);
364 void InitializedMap_Default::start(CommandableContext& context, art::RunID
id, uint64_t timeout, uint64_t timestamp)
366 Commandable& ctxt = context.getOwner();
368 CommandableState& endState = context.getState();
370 context.clearState();
373 ctxt.badTransition(__func__);
374 context.setState(endState);
378 context.setState(endState);
383 void InitializedMap_Default::stop(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
385 Commandable& ctxt = context.getOwner();
387 CommandableState& endState = context.getState();
389 context.clearState();
392 ctxt.badTransition(__func__);
393 context.setState(endState);
397 context.setState(endState);
402 void InitializedMap_Default::pause(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
404 Commandable& ctxt = context.getOwner();
406 CommandableState& endState = context.getState();
408 context.clearState();
411 ctxt.badTransition(__func__);
412 context.setState(endState);
416 context.setState(endState);
421 void InitializedMap_Default::resume(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
423 Commandable& ctxt = context.getOwner();
425 CommandableState& endState = context.getState();
427 context.clearState();
430 ctxt.badTransition(__func__);
431 context.setState(endState);
435 context.setState(endState);
440 void InitializedMap_Default::shutdown(CommandableContext& context, uint64_t timeout)
442 Commandable& ctxt = context.getOwner();
444 CommandableState& endState = context.getState();
446 context.clearState();
449 ctxt.badTransition(__func__);
450 context.setState(endState);
454 context.setState(endState);
459 void InitializedMap_Default::soft_init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
461 Commandable& ctxt = context.getOwner();
463 CommandableState& endState = context.getState();
465 context.clearState();
468 ctxt.badTransition(__func__);
469 context.setState(endState);
473 context.setState(endState);
478 void InitializedMap_Default::reinit(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
480 Commandable& ctxt = context.getOwner();
482 CommandableState& endState = context.getState();
484 context.clearState();
487 ctxt.badTransition(__func__);
488 context.setState(endState);
492 context.setState(endState);
497 void InitializedMap_Ready::init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
499 context.getState().Exit(context);
501 context.init(pset, timeout, timestamp);
504 void InitializedMap_Ready::reinit(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
506 Commandable& ctxt = context.getOwner();
508 CommandableState& endState = context.getState();
510 context.clearState();
513 ctxt.do_reinitialize(pset, timeout, timestamp);
514 context.setState(endState);
518 context.setState(endState);
523 void InitializedMap_Ready::shutdown(CommandableContext& context, uint64_t timeout)
525 context.getState().Exit(context);
527 context.shutdown(timeout);
530 void InitializedMap_Ready::soft_init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
532 Commandable& ctxt = context.getOwner();
534 CommandableState& endState = context.getState();
536 context.clearState();
539 ctxt.do_soft_initialize(pset, timeout, timestamp);
540 context.setState(endState);
544 context.setState(endState);
549 void InitializedMap_Ready::start(CommandableContext& context, art::RunID
id, uint64_t timeout, uint64_t timestamp)
551 Commandable& ctxt = context.getOwner();
553 if (ctxt.do_start(
id, timeout, timestamp))
555 context.getState().Exit(context);
557 context.setState(InitializedMap::InRun);
559 context.getState().Entry(context);
560 context.pushState(InRunMap::Running);
561 context.getState().Entry(context);
568 void InitializedMap_InRun::Exit(CommandableContext& context)
571 Commandable& ctxt = context.getOwner();
576 void InitializedMap_InRun::stop(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
578 Commandable& ctxt = context.getOwner();
580 if (ctxt.do_stop(timeout, timestamp))
582 context.getState().Exit(context);
584 context.setState(InitializedMap::Ready);
585 context.getState().Entry(context);
589 InitializedMap_Default::stop(context, timeout, timestamp);
593 void InRunMap_Default::init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
595 Commandable& ctxt = context.getOwner();
597 CommandableState& endState = context.getState();
599 context.clearState();
602 ctxt.badTransition(__func__);
603 context.setState(endState);
607 context.setState(endState);
612 void InRunMap_Default::start(CommandableContext& context, art::RunID
id, uint64_t timeout, uint64_t timestamp)
614 Commandable& ctxt = context.getOwner();
616 CommandableState& endState = context.getState();
618 context.clearState();
621 ctxt.badTransition(__func__);
622 context.setState(endState);
626 context.setState(endState);
631 void InRunMap_Default::stop(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
633 Commandable& ctxt = context.getOwner();
635 CommandableState& endState = context.getState();
637 context.clearState();
640 ctxt.badTransition(__func__);
641 context.setState(endState);
645 context.setState(endState);
650 void InRunMap_Default::pause(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
652 Commandable& ctxt = context.getOwner();
654 CommandableState& endState = context.getState();
656 context.clearState();
659 ctxt.badTransition(__func__);
660 context.setState(endState);
664 context.setState(endState);
669 void InRunMap_Default::resume(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
671 Commandable& ctxt = context.getOwner();
673 CommandableState& endState = context.getState();
675 context.clearState();
678 ctxt.badTransition(__func__);
679 context.setState(endState);
683 context.setState(endState);
688 void InRunMap_Default::shutdown(CommandableContext& context, uint64_t timeout)
690 Commandable& ctxt = context.getOwner();
692 CommandableState& endState = context.getState();
694 context.clearState();
697 ctxt.badTransition(__func__);
698 context.setState(endState);
702 context.setState(endState);
707 void InRunMap_Default::soft_init(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
709 Commandable& ctxt = context.getOwner();
711 CommandableState& endState = context.getState();
713 context.clearState();
716 ctxt.badTransition(__func__);
717 context.setState(endState);
721 context.setState(endState);
726 void InRunMap_Default::reinit(CommandableContext& context, fhicl::ParameterSet
const& pset, uint64_t timeout, uint64_t timestamp)
728 Commandable& ctxt = context.getOwner();
730 CommandableState& endState = context.getState();
732 context.clearState();
735 ctxt.badTransition(__func__);
736 context.setState(endState);
740 context.setState(endState);
745 void InRunMap_Running::in_run_failure(CommandableContext& context)
747 context.getState().Exit(context);
748 context.setState(InRunMap::InRunError);
749 context.getState().Entry(context);
752 void InRunMap_Running::pause(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
754 Commandable& ctxt = context.getOwner();
756 if (ctxt.do_pause(timeout, timestamp))
758 context.getState().Exit(context);
760 context.setState(InRunMap::Paused);
761 context.getState().Entry(context);
768 void InRunMap_Running::stop(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
770 context.getState().Exit(context);
772 context.stop(timeout, timestamp);
775 void InRunMap_Paused::resume(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
777 Commandable& ctxt = context.getOwner();
779 if (ctxt.do_resume(timeout, timestamp))
781 context.getState().Exit(context);
783 context.setState(InRunMap::Running);
784 context.getState().Entry(context);
791 void InRunMap_Paused::stop(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
793 context.getState().Exit(context);
795 context.stop(timeout, timestamp);
798 void InRunMap_InRunError::pause(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
800 Commandable& ctxt = context.getOwner();
802 if (ctxt.do_pause(timeout, timestamp))
804 context.getState().Exit(context);
806 context.setState(InRunMap::Paused);
807 context.getState().Entry(context);
814 void InRunMap_InRunError::stop(CommandableContext& context, uint64_t timeout, uint64_t timestamp)
816 context.getState().Exit(context);
818 context.stop(timeout, timestamp);
822 #pragma GCC diagnostic pop