Skip to content
Snippets Groups Projects
CbmMQDefs.h 1.71 KiB
Newer Older
/* Copyright (C) 2019 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
   SPDX-License-Identifier: GPL-3.0-only
   Authors: Florian Uhlig [committer] */
#include "FairMQDevice.h"

namespace cbm
{
  namespace mq
  {
    enum class Transition : int
    {
      Idle,
      DeviceReady,
      Ready,
      Stop,
      End,
      ErrorFound
    };

    enum class State : int
    {
      Running
    };
    void ChangeState(FairMQDevice* device, cbm::mq::Transition transition)
    {
      if (transition == cbm::mq::Transition::ErrorFound) { device->ChangeState(fair::mq::Transition::ErrorFound); }
      else if (transition == cbm::mq::Transition::End) {
        device->ChangeState(fair::mq::Transition::End);
      }
      else if (transition == cbm::mq::Transition::Ready) {
        device->ChangeState(fair::mq::Transition::ResetTask);
      }
      else if (transition == cbm::mq::Transition::DeviceReady) {
        device->ChangeState(fair::mq::Transition::ResetDevice);
      }
      else if (transition == cbm::mq::Transition::Idle) {
        device->ChangeState(fair::mq::Transition::Stop);
Administrator's avatar
Administrator committed
        LOG(fatal) << "State Change not yet implemented";
        device->ChangeState(fair::mq::Transition::ErrorFound);
    void LogState(FairMQDevice* device)
    {
Administrator's avatar
Administrator committed
      LOG(info) << "Current State: " << device->GetCurrentStateName();
Administrator's avatar
Administrator committed

    bool CheckCurrentState(FairMQDevice* device, cbm::mq::State state)
    {
      if (state == cbm::mq::State::Running) { return !(device->NewStatePending()); }
      else {
Administrator's avatar
Administrator committed
        LOG(fatal) << "State not yet implemented";
        device->ChangeState(fair::mq::Transition::ErrorFound);
        return 0;
      }
Administrator's avatar
Administrator committed
  }  // namespace mq
}  // namespace cbm