1 #ifndef _Belle2_RunInfoBuffer_h
2 #define _Belle2_RunInfoBuffer_h
4 #include "daq/slc/system/SharedMemory.h"
5 #include "daq/slc/system/MMutex.h"
6 #include "daq/slc/system/MCond.h"
7 #include "daq/slc/readout/ronode_info.h"
37 CPRFIFO_LEF_FULL = 0x80
49 bool open(
const std::string& nodename,
50 int nodeid = 0,
bool recreate =
false);
62 const std::string getName()
const {
return m_nodename; }
63 const std::string getPath()
const {
return m_path; }
64 bool isAvailable()
const {
return m_info != NULL; }
66 unsigned int getNodeId()
const {
return m_info->nodeid; }
67 unsigned int getState()
const {
return m_info->state; }
68 unsigned int getErrorFlag()
const {
return m_info->eflag; }
69 unsigned int getExpNumber()
const {
return m_info->expno; }
70 unsigned int getRunNumber()
const {
return m_info->runno; }
71 unsigned int getSubNumber()
const {
return m_info->subno; }
72 int getInputPort()
const {
return m_info->io[0].port; }
73 int getInputAddress()
const {
return m_info->io[0].addr; }
74 unsigned int getInputCount()
const {
return m_info->io[0].count; }
75 unsigned long long getInputNBytes()
const {
return m_info->io[0].nbyte; }
76 int getOutputPort()
const {
return m_info->io[1].port; }
77 int getOutputAddress()
const {
return m_info->io[1].addr; }
78 unsigned int getOutputCount()
const {
return m_info->io[1].count; }
79 unsigned long long getOutputNBytes()
const {
return m_info->io[1].nbyte; }
80 void setNodeId(
unsigned int id) { m_info->nodeid = id; }
81 void setState(State state) { m_info->state = (
unsigned int)state; }
82 void setErrorFlag(EFlag eflag) { m_info->eflag = (
unsigned int)eflag; }
83 void setExpNumber(
unsigned int expno) { m_info->expno = expno; }
84 void setRunNumber(
unsigned int runno) { m_info->runno = runno; }
85 void setSubNumber(
unsigned int subno) { m_info->subno = subno; }
86 void setInputPort(
int port) { m_info->io[0].port = port; }
87 void setInputAddress(
int addr) { m_info->io[0].addr = addr; }
88 void setInputCount(
unsigned int count) { m_info->io[0].count = count; }
89 void setInputNBytes(
unsigned long long nbyte) { m_info->io[0].nbyte = nbyte; }
90 void addInputCount(
unsigned int count) { m_info->io[0].count += count; }
91 void addInputNBytes(
unsigned long long nbyte) { m_info->io[0].nbyte += nbyte; }
92 void setOutputPort(
int port) { m_info->io[1].port = port; }
93 void setOutputAddress(
int addr) { m_info->io[1].addr = addr; }
94 void setOutputCount(
unsigned int count) { m_info->io[1].count = count; }
95 void setOutputNBytes(
unsigned long long nbyte) { m_info->io[1].nbyte = nbyte; }
96 void addOutputCount(
unsigned int count) { m_info->io[1].count += count; }
97 void addOutputNBytes(
unsigned long long nbyte) { m_info->io[1].nbyte += nbyte; }
98 event_header& getEventHeader() {
return m_info->header; }
99 void copyEventHeader(
int* buf);
100 bool isNotReady() {
return (m_info) && m_info->state == NOTREADY; }
101 bool isReady() {
return (m_info) && m_info->state == READY; }
102 bool isRunning() {
return (m_info) && m_info->state == RUNNING; }
103 bool isPausing() {
return (m_info) && m_info->state == PAUSING; }
104 bool isPaused() {
return (m_info) && m_info->state == PAUSED; }
105 bool isResuming() {
return (m_info) && m_info->state == RESUMING; }
107 bool waitRunning(
int timeout);
108 bool waitReady(
int timeout);
109 bool reportRunning();
110 bool reportError(EFlag eflag);
112 bool reportNotReady();
115 std::string m_nodename;