Skip to content
Snippets Groups Projects
Select Git revision
  • stage4
  • fuhlig_master default
  • must_simulation
  • test_CI
  • master protected
  • test_for_empty_branches
  • must_simulation_2
  • fix_mvd_CI_tests
  • remove_classimp_macro
  • fix_deprecated_mq_classes
  • jul24_patches
  • add_placement_matrix
  • allow_geom_placement
  • update_flesnet
  • docs_modernize-use-nullptr
  • fix_issue_1687
  • refactor_access_tcl
  • fix_deprecated_header_2
  • fix_deprecated_header
  • fix_missing_headers
  • fix_missing_includes
  • RC1_feb23
  • RC2_APR21
23 results

CbmMQDefs.h

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