Skip to content
Snippets Groups Projects
Select Git revision
  • nightly_master
  • master default
  • cmake_ana_dev
  • fairroot_target_dev
  • cmake_remaining_files
  • cmake_test_dev
  • cmake_mq_dev
  • cmake_reco_dev
  • cmake_test2
  • cmake_test1
  • cmake_test
  • cmake-dev
  • temp
  • APR21
  • dev_2021_20
  • dev_2021_19
  • RC3_APR21
  • dev_2021_18
  • RC2_APR21
  • dev_2021_17
  • RC1_APR21
  • dev_2021_16
  • dev_2021_15
  • dev_2021_14
  • dev_2021_13
  • dev_2021_12
  • dev_2021_11
  • dev_2021_10
  • dev_2021_09
  • dev_2021_08
  • dev_2021_07
  • dev_2021_06
32 results

CODEOWNERS

Blame
  • Forked from Computing / cbmroot
    Source project has a limited visibility.
    CbmMQDefs.h 1.71 KiB
    /* 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);
          }
          else {
            LOG(fatal) << "State Change not yet implemented";
            device->ChangeState(fair::mq::Transition::ErrorFound);
          }
        }
    
        void LogState(FairMQDevice* device)
        {
          LOG(info) << "Current State: " << device->GetCurrentStateName();
        }
    
        bool CheckCurrentState(FairMQDevice* device, cbm::mq::State state)
        {
          if (state == cbm::mq::State::Running) { return !(device->NewStatePending()); }
          else {
            LOG(fatal) << "State not yet implemented";
            device->ChangeState(fair::mq::Transition::ErrorFound);
            return 0;
          }
        }
      }  // namespace mq
    }  // namespace cbm