GSI Object Oriented Online Offline (Go4)  GO4-6.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
sMbs.h
Go to the documentation of this file.
1 // $Id: sMbs.h 3333 2021-10-18 11:27:07Z linev $
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #ifndef MbsStruct_H
15 #define MbsStruct_H
16 
17 #define LMD__TYPE_FILE_HEADER_101_1 0x00010065
18 #define LMD__TYPE_EVENT_HEADER_10_1 0x0001000a
19 #define LMD__TYPE_FILE_INDEX_101_2 0x00020065
20 #define LMD__TYPE_BUFFER_HEADER_10_1 0x0001000a
21 #define LMD__TYPE_BUFFER_HEADER_100_1 0x00010064
22 #define LMD__TYPE_TIME_STAMP_11_1 0x0001000b
23 #define LMD__GET_EVENTS NULL
24 #define LMD__STANDARD_HEADER NULL
25 #define LMD__INTERNAL_HEADER NULL
26 #define LMD__INDEX 1
27 #define LMD__OVERWRITE 1
28 #define LMD__LARGE_FILE 1
29 #define LMD__MIN_BUFFER 0
30 #define LMD__BUFFER 1
31 #define LMD__VERBOSE 1
32 #define LMD__NO_VERBOSE 0
33 #define LMD__NO_BUFFER 0
34 #define LMD__NO_INDEX 0
35 #define LMD__NO_OVERWRITE 0
36 #define LMD__NO_LARGE_FILE 0
37 #define LMD__NO_VERBOSE 0
38 #define LMD__VERBOSE 1
39 #define LMD__ENDIAN_LITTLE 1
40 #define LMD__ENDIAN_BIG 2
41 #define LMD__ENDIAN_UNKNOWN 0
42 
43 #include "s_stdint.h"
44 
45 typedef uint64_t lmdoff_t;
46 
47 // must #include <stdint.h>
48 // on Lynx, define int32_t, uint32_t, int16_t
49 // structure used to talk between client and server
50 // Client connects to server (MBS) and reads this structure first
51 
52 //--------------------------------------------------
53 // Structure maps the MBS transport info buffer
54 typedef struct{
55  uint32_t iEndian; // byte order. Set to 1 by sender
56  uint32_t iMaxBytes; // maximum buffer size
57  uint32_t iBuffers; // buffers per stream
58  uint32_t iStreams; // number of streams
60 
61 //--------------------------------------------------
62 // Buffer header, maps s_bufhe, some fields used in different way
63 typedef struct{
64  uint32_t iMaxWords; // compatible with s_bufhe (total buffer size - header)
65  uint32_t iType; // compatible with s_bufhe, low=type (=100), high=subtype
66  uint32_t iUsed; // not used for iMaxWords>MAX__DLEN (16360), low 16bits only
67  uint32_t iBuffer; // compatible with s_bufhe
68  uint32_t iElements; // compatible with s_bufhe
69  uint32_t iTemp; // Used volatile
70  uint32_t iTimeSpecSec; // compatible with s_bufhe (2*32bit)
71  uint32_t iTimeSpecNanoSec; // compatible with s_bufhe (2*32bit)
72  // struct timespec TimeSpec;
73  uint32_t iEndian; // compatible with s_bufhe free[0]
74  uint32_t iWrittenEndian;// one of LMD__ENDIAN_x
75  uint32_t iUsedWords; // total words without header to read for type=100, free[2]
76  uint32_t iFree3; // free[3]
78 
79 //--------------------------------------------------
80 // Buffer header, maps s_bufhe
81 typedef struct{
82  uint32_t iMaxWords; // compatible with s_bufhe (total buffer size - header)
83  uint32_t iType; // compatible with s_bufhe, low=type (=100), high=subtype
84  lmdoff_t iTableOffset; // optional offset to element offset table in file
85  uint32_t iElements; // compatible with s_bufhe
86  uint32_t iOffsetSize; // Offset size, 4 or 8 [bytes]
87  uint32_t iTimeSpecSec; // compatible with s_bufhe (2*32bit)
88  uint32_t iTimeSpecNanoSec; // compatible with s_bufhe (2*32bit)
89  // struct timespec TimeSpec;
90  uint32_t iEndian; // compatible with s_bufhe free[0]
91  uint32_t iWrittenEndian;// one of LMD__ENDIAN_x
92  uint32_t iUsedWords; // total words without header to read for type=100, free[2]
93  uint32_t iFree3; // free[3]
95 
96 //--------------------------------------------------
97 typedef struct{
98  uint32_t iMaxWords;
99  uint32_t iType;
100  uint32_t iTimeSpecSec;
102 } sMbsTimeStamp;
103 
104 //--------------------------------------------------
105 // maps s_evhe
106 typedef struct{
107  uint32_t iWords; // following data words
108  uint32_t iType; // compatible with s_ve10_1, low=type (=10), high=subtype
109 } sMbsHeader;
110 
111 //--------------------------------------------------
112 // maps s_ve10_1
113 typedef struct{
114  uint32_t iWords; // data words + 4
115  uint32_t iType; // compatible with s_ve10_1, low=type (=10), high=subtype
116  uint32_t iTrigger;
117  uint32_t iEventNumber;
119 
120 //--------------------------------------------------
121 // maps s_ves10_1
122 typedef struct{
123  uint32_t iWords; // data words + 2
124  uint32_t iType; // compatible with s_ves10_1, low=type (=10), high=subtype
125  uint32_t iSubeventID; // 2 low bytes=procid, next byte=subcrate, high byte control
127 
128 #endif
uint32_t iWords
Definition: sMbs.h:123
uint32_t iFree3
Definition: sMbs.h:93
uint32_t iTimeSpecNanoSec
Definition: sMbs.h:101
uint32_t iTrigger
Definition: sMbs.h:116
uint32_t iElements
Definition: sMbs.h:68
uint32_t iType
Definition: sMbs.h:124
uint32_t iTimeSpecSec
Definition: sMbs.h:70
uint32_t iType
Definition: sMbs.h:83
uint32_t iMaxWords
Definition: sMbs.h:64
uint32_t iWrittenEndian
Definition: sMbs.h:74
uint32_t iBuffer
Definition: sMbs.h:67
lmdoff_t iTableOffset
Definition: sMbs.h:84
uint32_t iWords
Definition: sMbs.h:107
uint32_t iTimeSpecSec
Definition: sMbs.h:87
uint32_t iFree3
Definition: sMbs.h:76
uint32_t iType
Definition: sMbs.h:65
uint32_t iType
Definition: sMbs.h:115
uint32_t iTimeSpecNanoSec
Definition: sMbs.h:88
uint64_t lmdoff_t
Definition: sMbs.h:45
uint32_t iMaxWords
Definition: sMbs.h:82
uint32_t iElements
Definition: sMbs.h:85
uint32_t iType
Definition: sMbs.h:108
uint32_t iTimeSpecSec
Definition: sMbs.h:100
uint32_t iTimeSpecNanoSec
Definition: sMbs.h:71
uint32_t iUsedWords
Definition: sMbs.h:75
uint32_t iEventNumber
Definition: sMbs.h:117
uint32_t iMaxBytes
Definition: sMbs.h:56
uint32_t iEndian
Definition: sMbs.h:73
uint32_t iOffsetSize
Definition: sMbs.h:86
uint32_t iTemp
Definition: sMbs.h:69
uint32_t iUsedWords
Definition: sMbs.h:92
uint32_t iWords
Definition: sMbs.h:114
uint32_t iEndian
Definition: sMbs.h:55
uint32_t iEndian
Definition: sMbs.h:90
uint32_t iBuffers
Definition: sMbs.h:57
uint32_t iUsed
Definition: sMbs.h:66
uint32_t iType
Definition: sMbs.h:99
uint32_t iMaxWords
Definition: sMbs.h:98
uint32_t iStreams
Definition: sMbs.h:58
uint32_t iWrittenEndian
Definition: sMbs.h:91
uint32_t iSubeventID
Definition: sMbs.h:125