00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00033
00034 #ifdef OS_WINNT
00035 #include <io.h>
00036 #include <time.h>
00037 #endif
00038 #include <fcntl.h>
00039 #include <stdlib.h>
00040 #include <stdio.h>
00041 #include <string.h>
00042 #include <sys/stat.h>
00043 #include <sys/types.h>
00044
00045 #ifndef EXPRT
00046 #define EXPRT
00047 #endif
00048
00049
00050 #endif
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 #ifdef YBOS_VERSION_3_3
00062 #define YBOS_PHYREC_SIZE 8190
00063 #else
00064 #define YBOS_PHYREC_SIZE 8192
00065 #endif
00066 #define YBOS_HEADER_LENGTH 4
00067 #define YBOS_BUFFER_SIZE 3*(YBOS_PHYREC_SIZE<<2) + MAX_EVENT_SIZE + 128
00068
00069 #define YB_BANKLIST_MAX 32
00070
00071 #define YB_STRING_BANKLIST_MAX YB_BANKLIST_MAX * 4
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 #define YB_SUCCESS 1
00082 #define YB_EVENT_NOT_SWAPPED 2
00083 #define YB_DONE 2
00084 #define YB_WRONG_BANK_TYPE -100
00085 #define YB_BANK_NOT_FOUND -101
00086 #define YB_SWAP_ERROR -102
00087 #define YB_NOMORE_SLOT -103
00088 #define YB_UNKNOWN_FORMAT -104
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100 #define H_BLOCK_SIZE 0
00101 #define H_BLOCK_NUM 1
00102 #define H_HEAD_LEN 2
00103 #define H_START 3
00104
00105
00106
00107 #define D_RECORD 1
00108 #define D_HEADER 2
00109 #define D_EVTLEN 3
00110
00111
00112
00113 #define YB_COMPLETE 1
00114 #define YB_INCOMPLETE 2
00115 #define YB_NO_RECOVER -1
00116 #define YB_NO_RUN 0
00117 #define YB_ADD_RUN 1
00118
00119
00120
00121 #define DSP_RAW 1
00122 #define DSP_BANK 2
00123
00124
00125
00126 #define DSP_UNK 0
00127 #define DSP_DEC 1
00128 #define DSP_HEX 2
00129 #define DSP_ASC 3
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142 #define SWAP_D2WORD(_d2w) {\
00143 WORD _tmp2; \
00144 _tmp2 = *((WORD *)(_d2w)); \
00145 *((WORD *)(_d2w)) = *(((WORD *)(_d2w))+1); \
00146 *(((WORD *)(_d2w))+1) = _tmp2; \
00147 }
00148
00149
00150 #ifdef CHAOS_EVID_FMT
00151 extern chaos;
00152 #endif
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208 #if (!defined (EVID_TRINAT) && !defined (EVID_CHAOS) && !defined (EVID_TWIST))
00209 #define EVID_TRINAT
00210 #endif
00211
00212 #if defined(EVID_TRINAT)
00213 #define YBOS_EVID_EVENT_ID(e) *((WORD *)(e)+1)
00214 #define YBOS_EVID_TRIGGER_MASK(e) *((WORD *)(e)+0)
00215 #define YBOS_EVID_SERIAL(e) *((DWORD *)(e)+1)
00216 #define YBOS_EVID_TIME(e) *((DWORD *)(e)+2)
00217 #define YBOS_EVID_RUN_NUMBER(e) *((DWORD *)(e)+3)
00218 #define YBOS_EVID_EVENT_NB(e) *((DWORD *)(e)+1)
00219 #elif defined(EVID_CHAOS)
00220 #define YBOS_EVID_EVENT_ID(e) *((WORD *)(e)+3)
00221 #define YBOS_EVID_TRIGGER_MASK(e) *((WORD *)(e)+2)
00222 #define YBOS_EVID_SERIAL(e) *((DWORD *)(e)+2)
00223 #define YBOS_EVID_TIME(e) *((DWORD *)(e)+3)
00224 #define YBOS_EVID_RUN_NUMBER(e) *((DWORD *)(e)+4)
00225 #define YBOS_EVID_EVENT_NB(e) *((DWORD *)(e)+0)
00226 #elif defined(EVID_TWIST)
00227 #define YBOS_EVID_EVENT_ID(e) *((WORD *)(e)+1)
00228 #define YBOS_EVID_TRIGGER_MASK(e) *((WORD *)(e)+0)
00229 #define YBOS_EVID_SERIAL(e) *((DWORD *)(e)+1)
00230 #define YBOS_EVID_TIME(e) *((DWORD *)(e)+2)
00231 #define YBOS_EVID_RUN_NUMBER(e) *((DWORD *)(e)+3)
00232 #define YBOS_EVID_EVENT_NB(e) *((DWORD *)(e)+1)
00233
00234 #endif
00235
00236
00237
00238
00239 #define YBOS_EVID_BANK(__a, __b, __c, __d, __e) {\
00240 DWORD * pbuf;\
00241 ybk_create(__a, "EVID", I4_BKTYPE, &pbuf);\
00242 *(pbuf)++ = (DWORD)__b;\
00243 *(pbuf)++ = (DWORD)__c;\
00244 *(pbuf)++ = (DWORD)__d;\
00245 *(pbuf)++ = (DWORD)ss_millitime();\
00246 *(pbuf)++ = (DWORD)__e;\
00247 ybk_close(__a, pbuf);\
00248 }
00249
00250
00251
00252
00253 #define MIDAS_EVID_BANK(__a, __b, __c, __d, __e) {\
00254 DWORD * pbuf;\
00255 bk_create(__a, "EVID", TID_DWORD, &pbuf);\
00256 *(pbuf)++ = (DWORD)__b;\
00257 *(pbuf)++ = (DWORD)__c;\
00258 *(pbuf)++ = (DWORD)__d;\
00259 *(pbuf)++ = (DWORD)ss_millitime();\
00260 *(pbuf)++ = (DWORD)__e;\
00261 bk_close(__a, pbuf);\
00262 }
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275 #define I2_BKTYPE 1
00276 #define A1_BKTYPE 2
00277 #define I4_BKTYPE 3
00278 #define F4_BKTYPE 4
00279 #define D8_BKTYPE 5
00280 #define I1_BKTYPE 8
00281 #define MAX_BKTYPE I1_BKTYPE+1
00282
00283
00284
00285
00286
00287 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00288
00289
00290
00291 typedef struct {
00292 DWORD *ptop;
00293 DWORD *pbuf;
00294 DWORD *pwrt;
00295 DWORD *pbot;
00296 DWORD *pend;
00297 DWORD reco;
00298 DWORD recn;
00299 } YBOS_INFO;
00300
00301
00302
00303 typedef struct {
00304 DWORD rec_size;
00305 DWORD header_length;
00306 DWORD rec_num;
00307 DWORD offset;
00308
00309 } YBOS_PHYSREC_HEADER;
00310
00311
00312
00313 typedef struct {
00314 DWORD name;
00315 DWORD number;
00316 DWORD index;
00317 DWORD length;
00318 DWORD type;
00319 } YBOS_BANK_HEADER;
00320
00321
00322
00323 #define MAX_FILE_PATH 128
00324 #define MAX_FRAG_SIZE 2000
00325 #define MAX_YM_FILE 8
00326 #define NLINE 8
00327
00328
00329
00330 typedef struct {
00331 INT file_ID;
00332 INT size;
00333 INT fragment_size;
00334 INT total_fragment;
00335 INT current_fragment;
00336 INT current_read_byte;
00337 INT run_number;
00338 INT spare;
00339 } YM_CFILE;
00340
00341
00342
00343 typedef struct {
00344 char path[MAX_FILE_PATH];
00345 } YM_PFILE;
00346
00347
00348
00349 typedef struct {
00350 INT fHandle;
00351 INT file_ID;
00352 INT current_fragment;
00353 INT current_read_byte;
00354 char path[MAX_FILE_PATH];
00355 } R_YM_FILE;
00356
00357
00358
00359
00360 #ifdef __cplusplus
00361 extern "C" {
00362 #endif
00363
00364 INT EXPRT yb_file_recompose(void *pevt, INT fmt, char *svpath, INT file_mode);
00365 INT EXPRT feodb_file_dump(EQUIPMENT * eqp, char *eqpname, char *pevent,
00366 INT run_number, char *path);
00367
00368 void EXPRT yb_any_bank_display(void *pmbh, void *pbk, INT fmt,
00369 INT dsp_mode, INT dsp_fmt);
00370 void EXPRT yb_any_event_display(void *pevt, INT data_fmt, INT dsp_mode, INT dsp_fmt);
00371 INT EXPRT yb_any_all_info_display(INT what);
00372 INT EXPRT yb_any_physrec_display(INT data_fmt);
00373
00374 INT EXPRT yb_any_physrec_skip(INT data_fmt, INT bl);
00375 INT EXPRT yb_any_physrec_get(INT data_fmt, void **prec, DWORD * psize);
00376 INT EXPRT yb_any_file_rclose(INT data_fmt);
00377 INT EXPRT yb_any_file_ropen(char *infile, INT data_fmt);
00378 INT EXPRT yb_any_file_wopen(INT type, INT data_fmt, char *filename, INT * hDev);
00379 INT EXPRT yb_any_file_wclose(INT handle, INT type, INT data_fmt);
00380 INT EXPRT yb_any_log_write(INT handle, INT data_fmt, INT type,
00381 void *prec, DWORD nbytes);
00382 INT EXPRT yb_any_event_swap(INT data_fmt, void *pevent);
00383 INT EXPRT yb_any_event_get(INT data_fmt, void **pevent, DWORD * psize);
00384
00385
00386 void EXPRT ybk_init(DWORD * pevent);
00387 void EXPRT ybk_create(DWORD * pevent, char *bkname, DWORD btype, void *pbkdat);
00388 INT EXPRT ybk_close(DWORD * pevent, void *pbkdat);
00389 INT EXPRT ybk_size(DWORD * pevent);
00390 INT EXPRT ybk_list(DWORD * pevent, char *bklist);
00391 INT EXPRT ybk_locate(DWORD * pevent, char *bkname, void *pdata);
00392 INT EXPRT ybk_find(DWORD * pevent, char *bkname, DWORD * bklength,
00393 DWORD * bktype, void **pbkdata);
00394 void EXPRT ybk_create_chaos(DWORD * pevent, char *bname, DWORD btype, void *pbkdat);
00395 INT EXPRT ybk_iterate(DWORD * pevent, YBOS_BANK_HEADER ** pybkh, void **pdata);
00396 INT EXPRT ybk_close_chaos(DWORD * pevent, DWORD btype, void *pbkdat);
00397
00398 #ifdef INCLUDE_LOGGING
00399 INT EXPRT ybos_log_open(LOG_CHN * log_chn, INT run_number);
00400 INT EXPRT ybos_write(LOG_CHN * log_chn, EVENT_HEADER * pevent, INT evt_size);
00401 INT EXPRT ybos_log_close(LOG_CHN * log_chn, INT run_number);
00402 #endif
00403
00404 INT EXPRT ybos_event_get(DWORD ** plrl, DWORD * size);
00405 INT EXPRT ybos_get_tid_size(INT tid);
00406
00407 #ifdef __cplusplus
00408 }
00409 #endif
00410
00411
00412
00413 #endif
00414
00415
00416