CbmRoot
Loading...
Searching...
No Matches
CbmMQDefs.h
Go to the documentation of this file.
1/* Copyright (C) 2019 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Florian Uhlig [committer] */
4
5#include "FairMQDevice.h"
6
7namespace cbm
8{
9 namespace mq
10 {
11 enum class Transition : int
12 {
13 Idle,
15 Ready,
16 Stop,
17 End,
19 };
20
21 enum class State : int
22 {
24 };
25
26 void ChangeState(FairMQDevice* device, cbm::mq::Transition transition)
27 {
28 if (transition == cbm::mq::Transition::ErrorFound) { device->ChangeState(fair::mq::Transition::ErrorFound); }
29 else if (transition == cbm::mq::Transition::End) {
30 device->ChangeState(fair::mq::Transition::End);
31 }
32 else if (transition == cbm::mq::Transition::Ready) {
33 device->ChangeState(fair::mq::Transition::ResetTask);
34 }
35 else if (transition == cbm::mq::Transition::DeviceReady) {
36 device->ChangeState(fair::mq::Transition::ResetDevice);
37 }
38 else if (transition == cbm::mq::Transition::Idle) {
39 device->ChangeState(fair::mq::Transition::Stop);
40 }
41 else {
42 LOG(fatal) << "State Change not yet implemented";
43 device->ChangeState(fair::mq::Transition::ErrorFound);
44 }
45 }
46
47 void LogState(FairMQDevice* device)
48 {
49 LOG(info) << "Current State: " << device->GetCurrentStateName();
50 }
51
52 bool CheckCurrentState(FairMQDevice* device, cbm::mq::State state)
53 {
54 if (state == cbm::mq::State::Running) { return !(device->NewStatePending()); }
55 else {
56 LOG(fatal) << "State not yet implemented";
57 device->ChangeState(fair::mq::Transition::ErrorFound);
58 return 0;
59 }
60 }
61 } // namespace mq
62} // namespace cbm
void ChangeState(FairMQDevice *device, cbm::mq::Transition transition)
Definition CbmMQDefs.h:26
bool CheckCurrentState(FairMQDevice *device, cbm::mq::State state)
Definition CbmMQDefs.h:52
void LogState(FairMQDevice *device)
Definition CbmMQDefs.h:47