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
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
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
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387 #ifndef _MIDAS_H_
00388 #define _MIDAS_H_
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418 #define MIDAS_VERSION "1.9.3"
00419
00420
00421 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00422
00423
00424
00425
00426
00427 #if defined( VAX ) || defined( __VMS )
00428 #define OS_VMS
00429 #endif
00430
00431 #if defined( _MSC_VER )
00432 #define OS_WINNT
00433 #endif
00434
00435 #if defined( __MSDOS__ )
00436 #define OS_MSDOS
00437 #endif
00438
00439 #if defined ( vxw )
00440 #define OS_VXWORKS
00441 #undef OS_UNIX
00442 #endif
00443
00444 #if !defined(OS_LINUX)
00445 #if defined ( __linux__ )
00446 #define OS_LINUX
00447 #endif
00448 #endif
00449
00450 #if defined(OS_LINUX) || defined(OS_OSF1) || defined(OS_ULTRIX) || defined(OS_FREEBSD) || defined(OS_SOLARIS) || defined(OS_IRIX)
00451 #define OS_UNIX
00452 #endif
00453
00454 #if !defined(OS_IRIX) && !defined(OS_VMS) && !defined(OS_MSDOS) && !defined(OS_UNIX) && !defined(OS_VXWORKS) && !defined(OS_WINNT)
00455 #error MIDAS cannot be used on this operating system
00456 #endif
00457
00458
00459
00460
00461
00462 #ifndef MIDAS_TYPE_DEFINED
00463 #define MIDAS_TYPE_DEFINED
00464
00465 typedef unsigned char BYTE;
00466 typedef unsigned short int WORD;
00467
00468 #ifdef __alpha
00469 typedef unsigned int DWORD;
00470 #else
00471 typedef unsigned long int DWORD;
00472 #endif
00473
00474 #ifndef OS_WINNT
00475 #ifndef OS_VXWORKS
00476 typedef DWORD BOOL;
00477 #endif
00478 #endif
00479
00480 #endif
00481
00482
00483
00484
00485
00486
00487
00488 #if defined(OS_MSDOS)
00489 typedef long int INT;
00490 #elif defined( OS_WINNT )
00491
00492
00493 #ifndef _INC_WINDOWS
00494 #include <windows.h>
00495 #endif
00496
00497 #else
00498 typedef int INT;
00499 #endif
00500
00501 typedef INT HNDLE;
00502
00503
00504 #ifdef OS_VXWORKS
00505 #ifndef __INCvxWorksh
00506 #include <vxWorks.h>
00507 #endif
00508 #endif
00509
00510
00511
00512
00513
00514
00515
00516
00517 #ifdef __alpha
00518 #define PTYPE long int
00519 #else
00520 #define PTYPE int
00521 #endif
00522
00523 #define TRUE 1
00524 #define FALSE 0
00525
00526
00527 #if defined(OS_MSDOS) || defined(OS_WINNT)
00528 #define DIR_SEPARATOR '\\'
00529 #define DIR_SEPARATOR_STR "\\"
00530 #elif defined(OS_VMS)
00531 #define DIR_SEPARATOR ']'
00532 #define DIR_SEPARATOR_STR "]"
00533 #else
00534 #define DIR_SEPARATOR '/'
00535 #define DIR_SEPARATOR_STR "/"
00536 #endif
00537
00538
00539 #if defined( _MSC_VER )
00540 #define INLINE __inline
00541 #elif defined(__GNUC__)
00542 #define INLINE __inline__
00543 #else
00544 #define INLINE
00545 #endif
00546
00547
00548 #endif
00549
00550
00551
00552
00553
00554
00555
00556 #ifdef OS_WINNT
00557 #define TAPE_BUFFER_SIZE 0x100000
00558 #else
00559 #define TAPE_BUFFER_SIZE 0x8000
00560 #endif
00561 #define NET_TCP_SIZE 0xFFFF
00562 #define OPT_TCP_SIZE 8192
00563 #define NET_UDP_SIZE 8192
00564
00565 #define EVENT_BUFFER_SIZE 0x100000
00566 #define EVENT_BUFFER_NAME "SYSTEM"
00567 #define MAX_EVENT_SIZE 0x80000
00568 #define DEFAULT_EVENT_BUFFER_SIZE 0x200000;
00569 #define DEFAULT_ODB_SIZE 0x100000
00570
00571 #define NAME_LENGTH 32
00572 #define HOST_NAME_LENGTH 256
00573 #define MAX_CLIENTS 32
00574 #define MAX_EVENT_REQUESTS 10
00575 #define MAX_OPEN_RECORDS 100
00576 #define MAX_ODB_PATH 256
00577 #define MAX_EXPERIMENT 32
00578 #define BANKLIST_MAX 32
00579 #define STRING_BANKLIST_MAX BANKLIST_MAX * 4
00580
00581
00582 #define MIDAS_TCP_PORT 1175
00583
00584
00585 #define DEFAULT_RPC_TIMEOUT 10000
00586 #define WATCHDOG_INTERVAL 1000
00587
00588 #define DEFAULT_WATCHDOG_TIMEOUT 10000
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601 #define STATE_STOPPED 1
00602 #define STATE_PAUSED 2
00603 #define STATE_RUNNING 3
00604
00605
00606
00607 #define FORMAT_MIDAS 1
00608 #define FORMAT_YBOS 2
00609 #define FORMAT_ASCII 3
00610 #define FORMAT_FIXED 4
00611 #define FORMAT_DUMP 5
00612 #define FORMAT_HBOOK 6
00613 #define FORMAT_ROOT 7
00614
00615
00616
00617 #define GET_ALL (1<<0)
00618 #define GET_SOME (1<<1)
00619 #define GET_FARM (1<<2)
00620
00621
00622
00623
00624 #define TID_BYTE 1
00625 #define TID_SBYTE 2
00626 #define TID_CHAR 3
00627 #define TID_WORD 4
00628 #define TID_SHORT 5
00629 #define TID_DWORD 6
00630 #define TID_INT 7
00631 #define TID_BOOL 8
00632 #define TID_FLOAT 9
00633 #define TID_DOUBLE 10
00634 #define TID_BITFIELD 11
00635 #define TID_STRING 12
00636 #define TID_ARRAY 13
00637 #define TID_STRUCT 14
00638 #define TID_KEY 15
00639 #define TID_LINK 16
00640 #define TID_LAST 17
00641
00642
00643
00644 #define SYNC 0
00645 #define ASYNC 1
00646
00647
00648
00649 #define MODE_READ (1<<0)
00650 #define MODE_WRITE (1<<1)
00651 #define MODE_DELETE (1<<2)
00652 #define MODE_EXCLUSIVE (1<<3)
00653 #define MODE_ALLOC (1<<7)
00654
00655
00656
00657 #define RPC_OTIMEOUT 1
00658 #define RPC_OTRANSPORT 2
00659 #define RPC_OCONVERT_FLAG 3
00660 #define RPC_OHW_TYPE 4
00661 #define RPC_OSERVER_TYPE 5
00662 #define RPC_OSERVER_NAME 6
00663 #define RPC_CONVERT_FLAGS 7
00664 #define RPC_ODB_HANDLE 8
00665 #define RPC_CLIENT_HANDLE 9
00666 #define RPC_SEND_SOCK 10
00667 #define RPC_WATCHDOG_TIMEOUT 11
00668 #define RPC_NODELAY 12
00669
00670 #define RPC_TCP 0
00671 #define RPC_FTCP 1
00672
00673
00674
00675 #define WF_WATCH_ME (1<<0)
00676 #define WF_CALL_WD (1<<1)
00677
00678
00679
00680 #define TR_START (1<<0)
00681 #define TR_STOP (1<<1)
00682 #define TR_PAUSE (1<<2)
00683 #define TR_RESUME (1<<3)
00684 #define TR_PRESTART (1<<4)
00685 #define TR_POSTSTART (1<<5)
00686 #define TR_PRESTOP (1<<6)
00687 #define TR_POSTSTOP (1<<7)
00688 #define TR_PREPAUSE (1<<8)
00689 #define TR_POSTPAUSE (1<<9)
00690 #define TR_PRERESUME (1<<10)
00691 #define TR_POSTRESUME (1<<11)
00692 #define TR_DEFERRED (1<<12)
00693
00694
00695
00696 #define EQ_PERIODIC (1<<0)
00697 #define EQ_POLLED (1<<1)
00698 #define EQ_INTERRUPT (1<<2)
00699 #define EQ_SLOW (1<<3)
00700 #define EQ_MANUAL_TRIG (1<<4)
00701 #define EQ_FRAGMENTED (1<<5)
00702
00703
00704
00705 #define RO_RUNNING (1<<0)
00706 #define RO_STOPPED (1<<1)
00707 #define RO_PAUSED (1<<2)
00708 #define RO_BOR (1<<3)
00709 #define RO_EOR (1<<4)
00710 #define RO_PAUSE (1<<5)
00711 #define RO_RESUME (1<<6)
00712
00713 #define RO_TRANSITIONS (RO_BOR|RO_EOR|RO_PAUSE|RO_RESUME)
00714 #define RO_ALWAYS (0xFF)
00715
00716 #define RO_ODB (1<<8)
00717
00718
00719
00720
00721
00722
00723 #define CH_BS 8
00724 #define CH_TAB 9
00725 #define CH_CR 13
00726
00727 #define CH_EXT 0x100
00728
00729 #define CH_HOME (CH_EXT+0)
00730 #define CH_INSERT (CH_EXT+1)
00731 #define CH_DELETE (CH_EXT+2)
00732 #define CH_END (CH_EXT+3)
00733 #define CH_PUP (CH_EXT+4)
00734 #define CH_PDOWN (CH_EXT+5)
00735 #define CH_UP (CH_EXT+6)
00736 #define CH_DOWN (CH_EXT+7)
00737 #define CH_RIGHT (CH_EXT+8)
00738 #define CH_LEFT (CH_EXT+9)
00739
00740
00741
00742
00743
00744
00745
00746 #define LAM_SOURCE(c, s) (c<<24 | ((s) & 0xFFFFFF))
00747
00748
00749
00750
00751
00752 #define LAM_STATION(s) (1<<(s-1))
00753
00754
00755
00756
00757
00758 #define LAM_SOURCE_CRATE(c) (c>>24)
00759
00760
00761
00762
00763
00764 #define LAM_SOURCE_STATION(s) ((s) & 0xFFFFFF)
00765
00766
00767
00768 #define CNAF 0x1
00769 #define CNAF_nQ 0x2
00770
00771 #define CNAF_INHIBIT_SET 0x100
00772 #define CNAF_INHIBIT_CLEAR 0x101
00773 #define CNAF_CRATE_CLEAR 0x102
00774 #define CNAF_CRATE_ZINIT 0x103
00775 #define CNAF_TEST 0x110
00776
00777
00778
00779
00780
00781
00782
00783
00784
00785 #ifndef max
00786 #define max(a,b) (((a) > (b)) ? (a) : (b))
00787 #endif
00788
00789
00790
00791 #ifndef min
00792 #define min(a,b) (((a) < (b)) ? (a) : (b))
00793 #endif
00794
00795
00796
00797
00798
00799 #define ALIGN(x) (((x)+7) & ~7)
00800
00801
00802
00803 #define VALIGN(adr,align) (((PTYPE) (adr)+align-1) & ~(align-1))
00804
00805
00806
00807
00808
00809
00810
00811
00812
00813
00814 #define EVENTID_ALL -1
00815 #define TRIGGER_ALL -1
00816
00817
00818
00819 #define MT_ERROR (1<<0)
00820 #define MT_INFO (1<<1)
00821 #define MT_DEBUG (1<<2)
00822 #define MT_USER (1<<3)
00823 #define MT_LOG (1<<4)
00824 #define MT_TALK (1<<5)
00825 #define MT_CALL (1<<6)
00826 #define MT_ALL 0xFF
00827
00828 #define MERROR MT_ERROR, __FILE__, __LINE__
00829 #define MINFO MT_INFO, __FILE__, __LINE__
00830 #define MDEBUG MT_DEBUG, __FILE__, __LINE__
00831 #define MUSER MT_USER, __FILE__, __LINE__
00832 #define MLOG MT_LOG, __FILE__, __LINE__
00833 #define MTALK MT_TALK, __FILE__, __LINE__
00834 #define MCALL MT_CALL, __FILE__, __LINE__
00835
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849 #define SUCCESS 1
00850 #define CM_SUCCESS 1
00851 #define CM_SET_ERROR 102
00852 #define CM_NO_CLIENT 103
00853 #define CM_DB_ERROR 104
00854 #define CM_UNDEF_EXP 105
00855 #define CM_VERSION_MISMATCH 106
00856 #define CM_SHUTDOWN 107
00857 #define CM_WRONG_PASSWORD 108
00858 #define CM_UNDEF_ENVIRON 109
00859 #define CM_DEFERRED_TRANSITION 110
00860 #define CM_TRANSITION_IN_PROGRESS 111
00861
00862
00863
00864
00865
00866
00867
00868 #define BM_SUCCESS 1
00869 #define BM_CREATED 202
00870 #define BM_NO_MEMORY 203
00871 #define BM_INVALID_NAME 204
00872 #define BM_INVALID_HANDLE 205
00873 #define BM_NO_SLOT 206
00874 #define BM_NO_MUTEX 207
00875 #define BM_NOT_FOUND 208
00876 #define BM_ASYNC_RETURN 209
00877 #define BM_TRUNCATED 210
00878 #define BM_MULTIPLE_HOSTS 211
00879 #define BM_MEMSIZE_MISMATCH 212
00880 #define BM_CONFLICT 213
00881 #define BM_EXIT 214
00882 #define BM_INVALID_PARAM 215
00883 #define BM_MORE_EVENTS 216
00884 #define BM_INVALID_MIXING 217
00885 #define BM_NO_SHM 218
00886
00887
00888
00889
00890
00891
00892 #define DB_SUCCESS 1
00893 #define DB_CREATED 302
00894 #define DB_NO_MEMORY 303
00895 #define DB_INVALID_NAME 304
00896 #define DB_INVALID_HANDLE 305
00897 #define DB_NO_SLOT 306
00898 #define DB_NO_MUTEX 307
00899 #define DB_MEMSIZE_MISMATCH 308
00900 #define DB_INVALID_PARAM 309
00901 #define DB_FULL 310
00902 #define DB_KEY_EXIST 311
00903 #define DB_NO_KEY 312
00904 #define DB_KEY_CREATED 313
00905 #define DB_TRUNCATED 314
00906 #define DB_TYPE_MISMATCH 315
00907 #define DB_NO_MORE_SUBKEYS 316
00908 #define DB_FILE_ERROR 317
00909 #define DB_NO_ACCESS 318
00910 #define DB_STRUCT_SIZE_MISMATCH 319
00911 #define DB_OPEN_RECORD 320
00912 #define DB_OUT_OF_RANGE 321
00913 #define DB_INVALID_LINK 322
00914 #define DB_CORRUPTED 323
00915 #define DB_STRUCT_MISMATCH 324
00916
00917
00918
00919
00920
00921
00922 #define SS_SUCCESS 1
00923 #define SS_CREATED 402
00924 #define SS_NO_MEMORY 403
00925 #define SS_INVALID_NAME 404
00926 #define SS_INVALID_HANDLE 405
00927 #define SS_INVALID_ADDRESS 406
00928 #define SS_FILE_ERROR 407
00929 #define SS_NO_MUTEX 408
00930 #define SS_NO_PROCESS 409
00931 #define SS_NO_THREAD 410
00932 #define SS_SOCKET_ERROR 411
00933 #define SS_TIMEOUT 412
00934 #define SS_SERVER_RECV 413
00935 #define SS_CLIENT_RECV 414
00936 #define SS_ABORT 415
00937 #define SS_EXIT 416
00938 #define SS_NO_TAPE 417
00939 #define SS_DEV_BUSY 418
00940 #define SS_IO_ERROR 419
00941 #define SS_TAPE_ERROR 420
00942 #define SS_NO_DRIVER 421
00943 #define SS_END_OF_TAPE 422
00944 #define SS_END_OF_FILE 423
00945 #define SS_FILE_EXISTS 424
00946 #define SS_NO_SPACE 425
00947 #define SS_INVALID_FORMAT 426
00948 #define SS_NO_ROOT 427
00949
00950
00951
00952
00953
00954
00955 #define RPC_SUCCESS 1
00956 #define RPC_ABORT SS_ABORT
00957 #define RPC_NO_CONNECTION 502
00958 #define RPC_NET_ERROR 503
00959 #define RPC_TIMEOUT 504
00960 #define RPC_EXCEED_BUFFER 505
00961 #define RPC_NOT_REGISTERED 506
00962 #define RPC_CONNCLOSED 507
00963 #define RPC_INVALID_ID 508
00964 #define RPC_SHUTDOWN 509
00965 #define RPC_NO_MEMORY 510
00966 #define RPC_DOUBLE_DEFINED 511
00967
00968
00969
00970
00971
00972
00973 #define FE_SUCCESS 1
00974 #define FE_ERR_ODB 602
00975 #define FE_ERR_HW 603
00976 #define FE_ERR_DISABLED 604
00977 #define FE_ERR_DRIVER 605
00978
00979
00980
00981 #define HS_SUCCESS 1
00982 #define HS_FILE_ERROR 702
00983 #define HS_NO_MEMORY 703
00984 #define HS_TRUNCATED 704
00985 #define HS_WRONG_INDEX 705
00986 #define HS_UNDEFINED_EVENT 706
00987 #define HS_UNDEFINED_VAR 707
00988
00989
00990
00991 #define FTP_SUCCESS 1
00992 #define FTP_NET_ERROR 802
00993 #define FTP_FILE_ERROR 803
00994 #define FTP_RESPONSE_ERROR 804
00995 #define FTP_INVALID_ARG 805
00996
00997
00998
00999 #define EL_SUCCESS 1
01000 #define EL_FILE_ERROR 902
01001 #define EL_NO_MESSAGE 903
01002 #define EL_TRUNCATED 904
01003 #define EL_FIRST_MSG 905
01004 #define EL_LAST_MSG 906
01005
01006
01007
01008 #define AL_SUCCESS 1
01009 #define AL_INVALID_NAME 1002
01010 #define AL_ERROR_ODB 1003
01011 #define AL_RESET 1004
01012
01013
01014
01015 #define CMD_INIT (1<<0)
01016 #define CMD_EXIT (1<<1)
01017 #define CMD_IDLE (1<<2)
01018 #define CMD_SET (1<<3)
01019 #define CMD_SET_ALL (1<<4)
01020 #define CMD_GET (1<<5)
01021 #define CMD_GET_ALL (1<<6)
01022 #define CMD_GET_CURRENT (1<<7)
01023 #define CMD_GET_CURRENT_ALL (1<<8)
01024 #define CMD_SET_CURRENT_LIMIT (1<<9)
01025 #define CMD_SET_CURRENT_LIMIT_ALL (1<<10)
01026 #define CMD_GET_DEMAND (1<<11)
01027 #define CMD_GET_DEFAULT_NAME (1<<12)
01028 #define CMD_GET_DEFAULT_THRESHOLD (1<<13)
01029 #define CMD_SET_LABEL (1<<14)
01030 #define CMD_ENABLE_COMMAND (1<<15)
01031 #define CMD_DISABLE_COMMAND (1<<16)
01032
01033
01034
01035 #define CMD_WRITE 100
01036 #define CMD_READ 101
01037 #define CMD_PUTS 102
01038 #define CMD_GETS 103
01039 #define CMD_DEBUG 104
01040 #define CMD_NAME 105
01041
01042
01043
01044 #define CMD_INTERRUPT_ENABLE 100
01045 #define CMD_INTERRUPT_DISABLE 101
01046 #define CMD_INTERRUPT_ATTACH 102
01047 #define CMD_INTERRUPT_DETACH 103
01048
01049
01050
01051 #define BD_GETS(s,z,p,t) info->bd(CMD_GETS, info->bd_info, s, z, p, t)
01052 #define BD_READS(s,z,p,t) info->bd(CMD_READ, info->bd_info, s, z, p, t)
01053 #define BD_PUTS(s) info->bd(CMD_PUTS, info->bd_info, s)
01054 #define BD_WRITES(s) info->bd(CMD_WRITE, info->bd_info, s)
01055
01056
01057
01058
01059
01060
01061
01062
01063 #define ANA_CONTINUE 1
01064 #define ANA_SKIP 0
01065
01066
01067
01068
01069
01070
01071
01072
01073
01074
01075
01076
01077
01078
01079 typedef struct {
01080 short int event_id;
01081 short int trigger_mask;
01082 DWORD serial_number;
01083 DWORD time_stamp;
01084 DWORD data_size;
01085 } EVENT_HEADER;
01086
01087
01088
01089
01090
01091
01092 #define TRIGGER_MASK(e) ((((EVENT_HEADER *) e)-1)->trigger_mask)
01093
01094
01095
01096
01097
01098
01099 #define EVENT_ID(e) ((((EVENT_HEADER *) e)-1)->event_id)
01100
01101
01102
01103
01104
01105
01106 #define SERIAL_NUMBER(e) ((((EVENT_HEADER *) e)-1)->serial_number)
01107
01108
01109
01110
01111
01112
01113 #define TIME_STAMP(e) ((((EVENT_HEADER *) e)-1)->time_stamp)
01114 #define EVENT_SOURCE(e,o) (* (INT*) (e+o))
01115
01116
01117
01118 #define EVENTID_BOR ((short int) 0x8000)
01119 #define EVENTID_EOR ((short int) 0x8001)
01120 #define EVENTID_MESSAGE ((short int) 0x8002)
01121
01122
01123
01124 #define EVENTID_FRAG1 ((unsigned short) 0xC000)
01125 #define EVENTID_FRAG ((unsigned short) 0xD000)
01126
01127
01128
01129 #define MIDAS_MAGIC 0x494d
01130
01131
01132
01133
01134 typedef struct {
01135 INT id;
01136 BOOL valid;
01137 short int event_id;
01138 short int trigger_mask;
01139 INT sampling_type;
01140
01141 void (*dispatch) (HNDLE, HNDLE, EVENT_HEADER *, void *);
01142 } EVENT_REQUEST;
01143
01144 typedef struct {
01145 char name[NAME_LENGTH];
01146 INT pid;
01147 INT tid;
01148 INT thandle;
01149 INT port;
01150 INT read_pointer;
01151 INT max_request_index;
01152 INT num_received_events;
01153 INT num_sent_events;
01154 INT num_waiting_events;
01155 float data_rate;
01156 BOOL read_wait;
01157 INT write_wait;
01158 BOOL wake_up;
01159 BOOL all_flag;
01160 DWORD last_activity;
01161 DWORD watchdog_timeout;
01162
01163 EVENT_REQUEST event_request[MAX_EVENT_REQUESTS];
01164
01165 } BUFFER_CLIENT;
01166
01167 typedef struct {
01168 char name[NAME_LENGTH];
01169 INT num_clients;
01170 INT max_client_index;
01171 INT size;
01172 INT read_pointer;
01173 INT write_pointer;
01174 INT num_in_events;
01175 INT num_out_events;
01176
01177 BUFFER_CLIENT client[MAX_CLIENTS];
01178
01179 } BUFFER_HEADER;
01180
01181
01182
01183 typedef struct {
01184 BOOL attached;
01185 INT client_index;
01186 BUFFER_HEADER *buffer_header;
01187 void *buffer_data;
01188 char *read_cache;
01189 INT read_cache_size;
01190 INT read_cache_rp;
01191 INT read_cache_wp;
01192 char *write_cache;
01193 INT write_cache_size;
01194 INT write_cache_rp;
01195 INT write_cache_wp;
01196 HNDLE mutex;
01197 INT shm_handle;
01198 INT index;
01199 BOOL callback;
01200
01201 } BUFFER;
01202
01203 typedef struct {
01204 DWORD type;
01205 INT num_values;
01206 char name[NAME_LENGTH];
01207 INT data;
01208 INT total_size;
01209 INT item_size;
01210 WORD access_mode;
01211 WORD notify_count;
01212 INT next_key;
01213 INT parent_keylist;
01214 INT last_written;
01215 } KEY;
01216
01217 typedef struct {
01218 INT parent;
01219 INT num_keys;
01220 INT first_key;
01221 } KEYLIST;
01222
01223
01224
01225
01226
01227
01228
01229
01230
01231
01232 #define DF_INPUT (1<<0)
01233 #define DF_OUTPUT (1<<1)
01234 #define DF_PRIO_DEVICE (1<<2)
01235 #define DF_READ_ONLY (1<<3)
01236
01237 typedef struct {
01238 char name[NAME_LENGTH];
01239 INT(*bd) (INT cmd, ...);
01240 void *bd_info;
01241 } BUS_DRIVER;
01242
01243 typedef struct {
01244 char name[NAME_LENGTH];
01245 INT(*dd) (INT cmd, ...);
01246 INT channels;
01247 INT(*bd) (INT cmd, ...);
01248 DWORD flags;
01249 void *dd_info;
01250 } DEVICE_DRIVER;
01251
01252 typedef struct {
01253 WORD event_id;
01254 WORD trigger_mask;
01255 char buffer[NAME_LENGTH];
01256 INT eq_type;
01257 INT source;
01258 char format[8];
01259 BOOL enabled;
01260 INT read_on;
01261 INT period;
01262 double event_limit;
01263 DWORD num_subevents;
01264 INT history;
01265 char frontend_host[NAME_LENGTH];
01266 char frontend_name[NAME_LENGTH];
01267 char frontend_file_name[256];
01268 } EQUIPMENT_INFO;
01269
01270 typedef struct {
01271 double events_sent;
01272 double events_per_sec;
01273 double kbytes_per_sec;
01274 } EQUIPMENT_STATS;
01275
01276 typedef struct eqpmnt *PEQUIPMENT;
01277
01278 typedef struct eqpmnt {
01279 char name[NAME_LENGTH];
01280 EQUIPMENT_INFO info;
01281 INT(*readout) (char *, INT);
01282 INT(*cd) (INT cmd, PEQUIPMENT);
01283 DEVICE_DRIVER *driver;
01284 void *event_descrip;
01285 void *cd_info;
01286 INT status;
01287 DWORD last_called;
01288 DWORD last_idle;
01289 DWORD poll_count;
01290 INT format;
01291 HNDLE buffer_handle;
01292 HNDLE hkey_variables;
01293 DWORD serial_number;
01294 DWORD subevent_number;
01295 DWORD odb_out;
01296 DWORD odb_in;
01297 DWORD bytes_sent;
01298 DWORD events_sent;
01299 EQUIPMENT_STATS stats;
01300 } EQUIPMENT;
01301
01302
01303
01304
01305
01306
01307
01308
01309
01310 #define BANK_FORMAT_VERSION 1
01311 #define BANK_FORMAT_32BIT (1<<4)
01312
01313 typedef struct {
01314 DWORD data_size;
01315 DWORD flags;
01316 } BANK_HEADER;
01317
01318 typedef struct {
01319 char name[4];
01320 WORD type;
01321 WORD data_size;
01322 } BANK;
01323
01324 typedef struct {
01325 char name[4];
01326 DWORD type;
01327 DWORD data_size;
01328 } BANK32;
01329
01330 typedef struct {
01331 char name[NAME_LENGTH];
01332 DWORD type;
01333 DWORD n_data;
01334 } TAG;
01335
01336 typedef struct {
01337 char name[9];
01338 WORD type;
01339 DWORD size;
01340 char **init_str;
01341 BOOL output_flag;
01342 void *addr;
01343 DWORD n_data;
01344 HNDLE def_key;
01345 } BANK_LIST;
01346
01347
01348
01349
01350
01351
01352
01353
01354 typedef struct {
01355 char name[NAME_LENGTH];
01356 char author[NAME_LENGTH];
01357 INT(*analyzer) (EVENT_HEADER *, void *);
01358 INT(*bor) (INT run_number);
01359 INT(*eor) (INT run_number);
01360 INT(*init) ();
01361 INT(*exit) ();
01362 void *parameters;
01363 INT param_size;
01364 char **init_str;
01365 BOOL enabled;
01366 } ANA_MODULE;
01367
01368 typedef struct {
01369 INT event_id;
01370 INT trigger_mask;
01371 INT sampling_type;
01372 char buffer[NAME_LENGTH];
01373 BOOL enabled;
01374 char client_name[NAME_LENGTH];
01375 char host[NAME_LENGTH];
01376 } AR_INFO;
01377
01378 typedef struct {
01379 double events_received;
01380 double events_per_sec;
01381 double events_written;
01382 } AR_STATS;
01383
01384 typedef struct {
01385 char event_name[NAME_LENGTH];
01386 AR_INFO ar_info;
01387 INT(*analyzer) (EVENT_HEADER *, void *);
01388 ANA_MODULE **ana_module;
01389 BANK_LIST *bank_list;
01390 INT rwnt_buffer_size;
01391 BOOL use_tests;
01392 char **init_string;
01393 INT status;
01394 HNDLE buffer_handle;
01395 HNDLE request_id;
01396 HNDLE hkey_variables;
01397 HNDLE hkey_common;
01398 void *addr;
01399 struct {
01400 DWORD run;
01401 DWORD serial;
01402 DWORD time;
01403 } number;
01404 DWORD events_received;
01405 DWORD events_written;
01406 AR_STATS ar_stats;
01407
01408 } ANALYZE_REQUEST;
01409
01410
01411
01412 typedef struct {
01413 char name[80];
01414 BOOL registered;
01415 DWORD count;
01416 BOOL value;
01417 } ANA_TEST;
01418
01419 #define SET_TEST(t, v) { if (!t.registered) test_register(&t); t.value = (v); }
01420 #define TEST(t) (t.value)
01421
01422 #ifdef DEFINE_TESTS
01423 #define DEF_TEST(t) ANA_TEST t = { #t, 0, 0, FALSE };
01424 #else
01425 #define DEF_TEST(t) extern ANA_TEST t;
01426 #endif
01427
01428
01429
01430
01431
01432
01433
01434
01435
01436 #define RT_DATA (*((DWORD *) "HSDA"))
01437 #define RT_DEF (*((DWORD *) "HSDF"))
01438
01439 typedef struct {
01440 DWORD record_type;
01441 DWORD event_id;
01442 DWORD time;
01443 DWORD def_offset;
01444 DWORD data_size;
01445 } HIST_RECORD;
01446
01447 typedef struct {
01448 DWORD event_id;
01449 char event_name[NAME_LENGTH];
01450 DWORD def_offset;
01451 } DEF_RECORD;
01452
01453 typedef struct {
01454 DWORD event_id;
01455 DWORD time;
01456 DWORD offset;
01457 } INDEX_RECORD;
01458
01459 typedef struct {
01460 DWORD event_id;
01461 char event_name[NAME_LENGTH];
01462 DWORD n_tag;
01463 TAG *tag;
01464 DWORD hist_fh;
01465 DWORD index_fh;
01466 DWORD def_fh;
01467 DWORD base_time;
01468 DWORD def_offset;
01469 } HISTORY;
01470
01471
01472
01473
01474
01475
01476
01477
01478
01479
01480
01481
01482 typedef struct {
01483 INT state;
01484 INT online_mode;
01485 INT run_number;
01486 INT transition_in_progress;
01487 INT requested_transition;
01488 char start_time[32];
01489 DWORD start_time_binary;
01490 char stop_time[32];
01491 DWORD stop_time_binary;
01492 } RUNINFO;
01493
01494 #define RUNINFO_STR(_name) char *_name[] = {\
01495 "[.]",\
01496 "State = INT : 1",\
01497 "Online Mode = INT : 1",\
01498 "Run number = INT : 0",\
01499 "Transition in progress = INT : 0",\
01500 "Requested transition = INT : 0",\
01501 "Start time = STRING : [32] Tue Sep 09 15:04:42 1997",\
01502 "Start time binary = DWORD : 0",\
01503 "Stop time = STRING : [32] Tue Sep 09 15:04:42 1997",\
01504 "Stop time binary = DWORD : 0",\
01505 "",\
01506 NULL }
01507
01508
01509
01510
01511
01512
01513
01514
01515
01516
01517
01518
01519 typedef struct {
01520 BOOL required;
01521 INT watchdog_timeout;
01522 DWORD check_interval;
01523 char start_command[256];
01524 BOOL auto_start;
01525 BOOL auto_stop;
01526 BOOL auto_restart;
01527 char alarm_class[32];
01528 DWORD first_failed;
01529 } PROGRAM_INFO;
01530
01531 #define AT_INTERNAL 1
01532 #define AT_PROGRAM 2
01533 #define AT_EVALUATED 3
01534 #define AT_PERIODIC 4
01535 #define AT_LAST 4
01536
01537 #define PROGRAM_INFO_STR(_name) char *_name[] = {\
01538 "[.]",\
01539 "Required = BOOL : n",\
01540 "Watchdog timeout = INT : 10000",\
01541 "Check interval = DWORD : 180000",\
01542 "Start command = STRING : [256] ",\
01543 "Auto start = BOOL : n",\
01544 "Auto stop = BOOL : n",\
01545 "Auto restart = BOOL : n",\
01546 "Alarm class = STRING : [32] ",\
01547 "First failed = DWORD : 0",\
01548 "",\
01549 NULL }
01550
01551
01552
01553 typedef struct {
01554 BOOL write_system_message;
01555 BOOL write_elog_message;
01556 INT system_message_interval;
01557 DWORD system_message_last;
01558 char execute_command[256];
01559 INT execute_interval;
01560 DWORD execute_last;
01561 BOOL stop_run;
01562 char display_bgcolor[32];
01563 char display_fgcolor[32];
01564 } ALARM_CLASS;
01565
01566 #define ALARM_CLASS_STR(_name) char *_name[] = {\
01567 "[.]",\
01568 "Write system message = BOOL : y",\
01569 "Write Elog message = BOOL : n",\
01570 "System message interval = INT : 60",\
01571 "System message last = DWORD : 0",\
01572 "Execute command = STRING : [256] ",\
01573 "Execute interval = INT : 0",\
01574 "Execute last = DWORD : 0",\
01575 "Stop run = BOOL : n",\
01576 "Display BGColor = STRING : [32] red",\
01577 "Display FGColor = STRING : [32] black",\
01578 "",\
01579 NULL }
01580
01581
01582
01583 typedef struct {
01584 BOOL active;
01585 INT triggered;
01586 INT type;
01587 INT check_interval;
01588 DWORD checked_last;
01589 char time_triggered_first[32];
01590 char time_triggered_last[32];
01591 char condition[256];
01592 char alarm_class[32];
01593 char alarm_message[80];
01594 } ALARM;
01595
01596 #define ALARM_ODB_STR(_name) char *_name[] = {\
01597 "[.]",\
01598 "Active = BOOL : n",\
01599 "Triggered = INT : 0",\
01600 "Type = INT : 3",\
01601 "Check interval = INT : 60",\
01602 "Checked last = DWORD : 0",\
01603 "Time triggered first = STRING : [32] ",\
01604 "Time triggered last = STRING : [32] ",\
01605 "Condition = STRING : [256] /Runinfo/Run number > 100",\
01606 "Alarm Class = STRING : [32] Alarm",\
01607 "Alarm Message = STRING : [80] Run number became too large",\
01608 "",\
01609 NULL }
01610
01611 #define ALARM_PERIODIC_STR(_name) char *_name[] = {\
01612 "[.]",\
01613 "Active = BOOL : n",\
01614 "Triggered = INT : 0",\
01615 "Type = INT : 4",\
01616 "Check interval = INT : 28800",\
01617 "Checked last = DWORD : 0",\
01618 "Time triggered first = STRING : [32] ",\
01619 "Time triggered last = STRING : [32] ",\
01620 "Condition = STRING : [256] ",\
01621 "Alarm Class = STRING : [32] Warning",\
01622 "Alarm Message = STRING : [80] Please do your shift checks",\
01623 "",\
01624 NULL }
01625
01626
01627
01628
01629
01630 #ifndef DOXYGEN_SHOULD_SKIP_THIS
01631
01632
01633
01634 #ifdef _MEM_DBG
01635 #define M_MALLOC(x) dbg_malloc((x), __FILE__, __LINE__)
01636 #define M_CALLOC(x,y) dbg_calloc((x), (y), __FILE__, __LINE__)
01637 #define M_FREE(x) dbg_free ((x), __FILE__, __LINE__)
01638 #else
01639 #define M_MALLOC(x) malloc(x)
01640 #define M_CALLOC(x,y) calloc(x,y)
01641 #define M_FREE(x) free(x)
01642 #endif
01643
01644 void *dbg_malloc(unsigned int size, char *file, int line);
01645 void *dbg_calloc(unsigned int size, unsigned int count, char *file,
01646 int line);
01647 void dbg_free(void *adr, char *file, int line);
01648
01649
01650
01651 #ifdef extname
01652 #define PAWC_NAME pawc_
01653 #else
01654 #define PAWC_NAME PAWC
01655 #endif
01656
01657 #define PAWC_DEFINE(size) \
01658 INT PAWC_NAME[size/4]; \
01659 INT pawc_size = size
01660
01661
01662 #undef GetCurrentTime
01663
01664
01665
01666
01667
01668 #define RPC_IN (1 << 0)
01669 #define RPC_OUT (1 << 1)
01670 #define RPC_POINTER (1 << 2)
01671 #define RPC_FIXARRAY (1 << 3)
01672 #define RPC_VARARRAY (1 << 4)
01673 #define RPC_OUTGOING (1 << 5)
01674
01675
01676
01677 #define ST_NONE 0
01678 #define ST_SINGLE 1
01679 #define ST_MTHREAD 2
01680 #define ST_MPROCESS 3
01681 #define ST_SUBPROCESS 4
01682 #define ST_REMOTE 5
01683
01684
01685
01686 typedef struct {
01687 WORD tid;
01688 WORD flags;
01689 INT n;
01690 } RPC_PARAM;
01691
01692 typedef struct {
01693 INT id;
01694 char *name;
01695 RPC_PARAM param[20];
01696 INT(*dispatch) (INT, void **);
01697 } RPC_LIST;
01698
01699
01700
01701 #define RPC_MIN_ID 1
01702 #define RPC_MAX_ID 9999
01703
01704
01705
01706 #define CF_ENDIAN (1<<0)
01707 #define CF_IEEE2VAX (1<<1)
01708 #define CF_VAX2IEEE (1<<2)
01709 #define CF_ASCII (1<<3)
01710
01711 #define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
01712 #define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
01713
01714 #define CSHORT(_i) (* ((short *) prpc_param[_i]))
01715 #define CPSHORT(_i) ( ((short *) prpc_param[_i]))
01716
01717 #define CINT(_i) (* ((INT *) prpc_param[_i]))
01718 #define CPINT(_i) ( ((INT *) prpc_param[_i]))
01719
01720 #define CWORD(_i) (* ((WORD *) prpc_param[_i]))
01721 #define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
01722
01723 #define CLONG(_i) (* ((long *) prpc_param[_i]))
01724 #define CPLONG(_i) ( ((long *) prpc_param[_i]))
01725
01726 #define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
01727 #define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
01728
01729 #define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
01730 #define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
01731
01732 #define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
01733 #define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
01734
01735 #define CFLOAT(_i) (* ((float *) prpc_param[_i]))
01736 #define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
01737
01738 #define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
01739 #define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
01740
01741 #define CSTRING(_i) ( ((char *) prpc_param[_i]))
01742 #define CARRAY(_i) ( ((void *) prpc_param[_i]))
01743
01744 #define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
01745 #define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
01746
01747 #define CSHORT(_i) (* ((short *) prpc_param[_i]))
01748 #define CPSHORT(_i) ( ((short *) prpc_param[_i]))
01749
01750 #define CINT(_i) (* ((INT *) prpc_param[_i]))
01751 #define CPINT(_i) ( ((INT *) prpc_param[_i]))
01752
01753 #define CWORD(_i) (* ((WORD *) prpc_param[_i]))
01754 #define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
01755
01756 #define CLONG(_i) (* ((long *) prpc_param[_i]))
01757 #define CPLONG(_i) ( ((long *) prpc_param[_i]))
01758
01759 #define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
01760 #define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
01761
01762 #define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
01763 #define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
01764
01765 #define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
01766 #define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
01767
01768 #define CFLOAT(_i) (* ((float *) prpc_param[_i]))
01769 #define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
01770
01771 #define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
01772 #define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
01773
01774 #define CSTRING(_i) ( ((char *) prpc_param[_i]))
01775 #define CARRAY(_i) ( ((void *) prpc_param[_i]))
01776
01777
01778
01779 #define cBYTE (* ((BYTE *) prpc_param[--n_param]))
01780 #define cPBYTE ( ((BYTE *) prpc_param[--n_param]))
01781
01782 #define cSHORT (* ((short *) prpc_param[--n_param]))
01783 #define cPSHORT ( ((short *) prpc_param[--n_param]))
01784
01785 #define cINT (* ((INT *) prpc_param[--n_param]))
01786 #define cPINT ( ((INT *) prpc_param[--n_param]))
01787
01788 #define cWORD (* ((WORD *) prpc_param[--n_param]))
01789 #define cPWORD ( ((WORD *) prpc_param[--n_param]))
01790
01791 #define cLONG (* ((long *) prpc_param[--n_param]))
01792 #define cPLONG ( ((long *) prpc_param[--n_param]))
01793
01794 #define cDWORD (* ((DWORD *) prpc_param[--n_param]))
01795 #define cPDWORD ( ((DWORD *) prpc_param[--n_param]))
01796
01797 #define cHNDLE (* ((HNDLE *) prpc_param[--n_param]))
01798 #define cPHNDLE ( ((HNDLE *) prpc_param[--n_param]))
01799
01800 #define cBOOL (* ((BOOL *) prpc_param[--n_param]))
01801 #define cPBOOL ( ((BOOL *) prpc_param[--n_param]))
01802
01803 #define cFLOAT (* ((float *) prpc_param[--n_param]))
01804 #define cPFLOAT ( ((float *) prpc_param[--n_param]))
01805
01806 #define cDOUBLE (* ((double *) prpc_param[--n_param]))
01807 #define cPDOUBLE ( ((double *) prpc_param[--n_param]))
01808
01809 #define cSTRING ( ((char *) prpc_param[--n_param]))
01810 #define cARRAY ( ((void *) prpc_param[--n_param]))
01811
01812
01813
01814
01815 #ifdef __cplusplus
01816 extern "C" {
01817 #endif
01818
01819
01820 #if defined(OS_WINNT) && defined(MIDAS_DLL)
01821 #define EXPRT __declspec(dllexport)
01822 #else
01823 #define EXPRT
01824 #endif
01825
01826
01827 INT EXPRT cm_get_error(INT code, char *string);
01828 char EXPRT *cm_get_version(void);
01829 INT EXPRT cm_get_environment(char *host_name, int host_name_size,
01830 char *exp_name, int exp_name_size);
01831 INT EXPRT cm_list_experiments(char *host_name,
01832 char
01833 exp_name[MAX_EXPERIMENT][NAME_LENGTH]);
01834 INT EXPRT cm_select_experiment(char *host_name, char *exp_name);
01835 INT EXPRT cm_connect_experiment(char *host_name, char *exp_name,
01836 char *client_name,
01837 void (*func) (char *));
01838 INT EXPRT cm_connect_experiment1(char *host_name, char *exp_name,
01839 char *client_name,
01840 void (*func) (char *), INT odb_size,
01841 DWORD watchdog_timeout);
01842 INT EXPRT cm_disconnect_experiment(void);
01843 INT EXPRT cm_register_transition(INT transition,
01844 INT(*func) (INT, char *));
01845 INT EXPRT cm_register_deferred_transition(INT transition,
01846 BOOL(*func) (INT, BOOL));
01847 INT EXPRT cm_check_deferred_transition(void);
01848 INT EXPRT cm_transition(INT transition, INT run_number, char *error,
01849 INT strsize, INT async_flag, INT debug_flag);
01850 INT EXPRT cm_register_server(void);
01851 INT EXPRT cm_register_function(INT id, INT(*func) (INT, void **));
01852 INT EXPRT cm_connect_client(char *client_name, HNDLE * hConn);
01853 INT EXPRT cm_disconnect_client(HNDLE hConn, BOOL bShutdown);
01854 INT EXPRT cm_set_experiment_database(HNDLE hDB, HNDLE hKeyClient);
01855 INT EXPRT cm_get_experiment_database(HNDLE * hDB, HNDLE * hKeyClient);
01856 INT EXPRT cm_set_experiment_mutex(INT mutex_alarm, INT mutex_elog);
01857 INT EXPRT cm_get_experiment_mutex(INT * mutex_alarm, INT * mutex_elog);
01858 INT EXPRT cm_set_client_info(HNDLE hDB, HNDLE * hKeyClient,
01859 char *host_name, char *client_name,
01860 INT computer_id, char *password,
01861 DWORD watchdog_timeout);
01862 INT EXPRT cm_get_client_info(char *client_name);
01863 INT EXPRT cm_set_watchdog_params(BOOL call_watchdog, DWORD timeout);
01864 INT EXPRT cm_get_watchdog_params(BOOL * call_watchdog, DWORD * timeout);
01865 INT EXPRT cm_get_watchdog_info(HNDLE hDB, char *client_name,
01866 DWORD * timeout, DWORD * last);
01867 INT EXPRT cm_enable_watchdog(BOOL flag);
01868 void EXPRT cm_watchdog(int);
01869 INT EXPRT cm_shutdown(char *name, BOOL bUnique);
01870 INT EXPRT cm_exist(char *name, BOOL bUnique);
01871 INT EXPRT cm_cleanup(char *client_name, BOOL ignore_timeout);
01872 INT EXPRT cm_yield(INT millisec);
01873 INT EXPRT cm_execute(char *command, char *result, INT buf_size);
01874 INT EXPRT cm_synchronize(DWORD * sec);
01875 INT EXPRT cm_asctime(char *str, INT buf_size);
01876 INT EXPRT cm_time(DWORD * time);
01877 BOOL EXPRT cm_is_ctrlc_pressed();
01878 void EXPRT cm_ack_ctrlc_pressed();
01879
01880 INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask,
01881 int (*func) (const char *));
01882 INT EXPRT cm_msg(INT message_type, char *filename, INT line,
01883 const char *routine, const char *format, ...);
01884 INT EXPRT cm_msg1(INT message_type, char *filename, INT line,
01885 const char *facility, const char *routine,
01886 const char *format, ...);
01887 INT EXPRT
01888 cm_msg_register(void (*func) (HNDLE, HNDLE, EVENT_HEADER *, void *));
01889 INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT * buf_size);
01890
01891 BOOL EXPRT equal_ustring(char *str1, char *str2);
01892 INT EXPRT strlcpy(char *dst, const char *src, INT size);
01893 INT EXPRT strlcat(char *dst, const char *src, INT size);
01894
01895
01896 INT EXPRT bm_open_buffer(char *buffer_name, INT buffer_size,
01897 INT * buffer_handle);
01898 INT EXPRT bm_close_buffer(INT buffer_handle);
01899 INT EXPRT bm_close_all_buffers(void);
01900 INT EXPRT bm_init_buffer_counters(INT buffer_handle);
01901 INT EXPRT bm_get_buffer_info(INT buffer_handle,
01902 BUFFER_HEADER * buffer_header);
01903 INT EXPRT bm_get_buffer_level(INT buffer_handle, INT * n_bytes);
01904 INT EXPRT bm_set_cache_size(INT buffer_handle, INT read_size,
01905 INT write_size);
01906 INT EXPRT bm_compose_event(EVENT_HEADER * event_header,
01907 short int event_id, short int trigger_mask,
01908 DWORD size, DWORD serial);
01909 INT EXPRT bm_request_event(INT buffer_handle, short int event_id,
01910 short int trigger_mask, INT sampling_type,
01911 INT * request_id, void (*func) (HNDLE, HNDLE,
01912 EVENT_HEADER
01913 *, void *));
01914 INT EXPRT bm_add_event_request(INT buffer_handle, short int event_id,
01915 short int trigger_mask, INT sampling_type,
01916 void (*func) (HNDLE, HNDLE,
01917 EVENT_HEADER *, void *),
01918 INT request_id);
01919 INT EXPRT bm_delete_request(INT request_id);
01920 INT EXPRT bm_send_event(INT buffer_handle, void *event, INT buf_size,
01921 INT async_flag);
01922 INT EXPRT bm_receive_event(INT buffer_handle, void *destination,
01923 INT * buf_size, INT async_flag);
01924 INT EXPRT bm_skip_event(INT buffer_handle);
01925 INT EXPRT bm_flush_cache(INT buffer_handle, INT async_flag);
01926 INT EXPRT bm_poll_event(INT flag);
01927 INT EXPRT bm_empty_buffers(void);
01928
01929
01930 INT EXPRT db_open_database(char *database_name, INT database_size,
01931 HNDLE * hdb, char *client_name);
01932 INT EXPRT db_close_database(HNDLE database_handle);
01933 INT EXPRT db_close_all_databases(void);
01934 INT EXPRT db_protect_database(HNDLE database_handle);
01935
01936 INT EXPRT db_create_key(HNDLE hdb, HNDLE key_handle, char *key_name,
01937 DWORD type);
01938 INT EXPRT db_create_link(HNDLE hdb, HNDLE key_handle, char *link_name,
01939 char *destination);
01940 INT EXPRT db_set_value(HNDLE hdb, HNDLE hKeyRoot, char *key_name,
01941 void *data, INT size, INT num_values, DWORD type);
01942 INT EXPRT db_get_value(HNDLE hdb, HNDLE hKeyRoot, char *key_name,
01943 void *data, INT * size, DWORD type, BOOL create);
01944 INT EXPRT db_find_key(HNDLE hdb, HNDLE hkey, char *name,
01945 HNDLE * hsubkey);
01946 INT EXPRT db_find_link(HNDLE hDB, HNDLE hKey, char *key_name,
01947 HNDLE * subhKey);
01948 INT EXPRT db_find_key1(HNDLE hdb, HNDLE hkey, char *name,
01949 HNDLE * hsubkey);
01950 INT EXPRT db_find_link1(HNDLE hDB, HNDLE hKey, char *key_name,
01951 HNDLE * subhKey);
01952 INT EXPRT db_scan_tree(HNDLE hDB, HNDLE hKey, int level,
01953 INT(*callback) (HNDLE, HNDLE, KEY *, INT, void *),
01954 void *info);
01955 INT EXPRT db_scan_tree_link(HNDLE hDB, HNDLE hKey, int level,
01956 void (*callback) (HNDLE, HNDLE, KEY *, INT,
01957 void *), void *info);
01958 INT EXPRT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size);
01959 INT EXPRT db_delete_key(HNDLE database_handle, HNDLE key_handle,
01960 BOOL follow_links);
01961 INT EXPRT db_enum_key(HNDLE hdb, HNDLE key_handle, INT index,
01962 HNDLE * subkey_handle);
01963 INT EXPRT db_enum_link(HNDLE hdb, HNDLE key_handle, INT index,
01964 HNDLE * subkey_handle);
01965 INT EXPRT db_get_next_link(HNDLE hdb, HNDLE key_handle,
01966 HNDLE * subkey_handle);
01967 INT EXPRT db_get_key(HNDLE hdb, HNDLE key_handle, KEY * key);
01968 INT EXPRT db_get_key_info(HNDLE hDB, HNDLE hKey, char *name,
01969 INT name_size, INT * type, INT * num_values,
01970 INT * item_size);
01971 INT EXPRT db_get_key_time(HNDLE hdb, HNDLE key_handle, DWORD * delta);
01972 INT EXPRT db_rename_key(HNDLE hDB, HNDLE hKey, char *name);
01973 INT EXPRT db_reorder_key(HNDLE hDB, HNDLE hKey, INT index);
01974 INT EXPRT db_get_data(HNDLE hdb, HNDLE key_handle, void *data,
01975 INT * buf_size, DWORD type);
01976 INT EXPRT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT * buf_size,
01977 DWORD type, INT * num_values);
01978 INT EXPRT db_get_data_index(HNDLE hDB, HNDLE hKey, void *data,
01979 INT * buf_size, INT index, DWORD type);
01980 INT EXPRT db_set_data(HNDLE hdb, HNDLE hKey, void *data, INT buf_size,
01981 INT num_values, DWORD type);
01982 INT EXPRT db_set_data_index(HNDLE hDB, HNDLE hKey, void *data, INT size,
01983 INT index, DWORD type);
01984 INT EXPRT db_set_data_index2(HNDLE hDB, HNDLE hKey, void *data, INT size,
01985 INT index, DWORD type, BOOL bNotify);
01986 INT EXPRT db_set_num_values(HNDLE hDB, HNDLE hKey, INT num_values);
01987 INT EXPRT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, char *name,
01988 void *data, INT data_size, INT num_values,
01989 INT type);
01990 INT EXPRT db_set_mode(HNDLE hdb, HNDLE key_handle, WORD mode,
01991 BOOL recurse);
01992 INT EXPRT db_create_record(HNDLE hdb, HNDLE hkey, char *name,
01993 char *init_str);
01994 INT EXPRT db_check_record(HNDLE hDB, HNDLE hKey, char *key_name,
01995 char *rec_str, BOOL correct);
01996 INT EXPRT db_open_record(HNDLE hdb, HNDLE hkey, void *ptr, INT rec_size,
01997 WORD access, void (*dispatcher) (INT, INT,
01998 void *),
01999 void *info);
02000 INT EXPRT db_close_record(HNDLE hdb, HNDLE hkey);
02001 INT EXPRT db_get_record(HNDLE hdb, HNDLE hKey, void *data,
02002 INT * buf_size, INT align);
02003 INT EXPRT db_get_record_size(HNDLE hdb, HNDLE hKey, INT align,
02004 INT * buf_size);
02005 INT EXPRT db_set_record(HNDLE hdb, HNDLE hKey, void *data, INT buf_size,
02006 INT align);
02007 INT EXPRT db_send_changed_records(void);
02008 INT EXPRT db_get_open_records(HNDLE hDB, HNDLE hKey, char *str,
02009 INT buf_size, BOOL fix);
02010
02011 INT EXPRT db_add_open_record(HNDLE hDB, HNDLE hKey, WORD access_mode);
02012 INT EXPRT db_remove_open_record(HNDLE hDB, HNDLE hKey, BOOL lock);
02013
02014 INT EXPRT db_load(HNDLE hdb, HNDLE key_handle, char *filename,
02015 BOOL bRemote);
02016 INT EXPRT db_save(HNDLE hdb, HNDLE key_handle, char *filename,
02017 BOOL bRemote);
02018 INT EXPRT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT * buffer_size,
02019 char *path);
02020 INT EXPRT db_paste(HNDLE hDB, HNDLE hKeyRoot, char *buffer);
02021 INT EXPRT db_save_struct(HNDLE hDB, HNDLE hKey, char *file_name,
02022 char *struct_name, BOOL append);
02023 INT EXPRT db_save_string(HNDLE hDB, HNDLE hKey, char *file_name,
02024 char *string_name, BOOL append);
02025
02026 INT EXPRT db_sprintf(char *string, void *data, INT data_size, INT index,
02027 DWORD type);
02028 INT EXPRT db_sprintfh(char *string, void *data, INT data_size, INT index,
02029 DWORD type);
02030 INT EXPRT db_sscanf(char *string, void *data, INT * data_size, INT index,
02031 DWORD type);
02032 char EXPRT *strcomb(char **list);
02033
02034
02035 void EXPRT bk_init(void *pbh);
02036 void EXPRT bk_init32(void *event);
02037 BOOL EXPRT bk_is32(void *event);
02038 INT EXPRT bk_size(void *pbh);
02039 void EXPRT bk_create(void *pbh, const char *name, WORD type,
02040 void *pdata);
02041 INT EXPRT bk_delete(void *event, const char *name);
02042 INT EXPRT bk_close(void *pbh, void *pdata);
02043 INT EXPRT bk_list(void *pbh, char *bklist);
02044 INT EXPRT bk_locate(void *pbh, const char *name, void *pdata);
02045 INT EXPRT bk_iterate(void *pbh, BANK ** pbk, void *pdata);
02046 INT EXPRT bk_iterate32(void *pbh, BANK32 ** pbk, void *pdata);
02047 INT EXPRT bk_swap(void *event, BOOL force);
02048 INT EXPRT bk_find(BANK_HEADER * pbkh, const char *name, DWORD * bklen,
02049 DWORD * bktype, void **pdata);
02050
02051
02052 INT EXPRT rpc_register_functions(RPC_LIST * new_list,
02053 INT(*func) (INT, void **));
02054 INT EXPRT rpc_register_function(INT id, INT(*func) (INT, void **));
02055 INT EXPRT rpc_get_option(HNDLE hConn, INT item);
02056 INT EXPRT rpc_set_option(HNDLE hConn, INT item, INT value);
02057 INT EXPRT rpc_set_name(char *name);
02058 INT EXPRT rpc_get_name(char *name);
02059 INT EXPRT rpc_is_remote(void);
02060 INT EXPRT rpc_set_debug(void (*func) (char *), INT mode);
02061
02062 INT EXPRT rpc_register_server(INT server_type, char *name, INT * port,
02063 INT(*func) (INT, void **));
02064 INT EXPRT rpc_register_client(char *name, RPC_LIST * list);
02065 INT EXPRT rpc_server_thread(void *pointer);
02066 INT EXPRT rpc_server_shutdown(void);
02067 INT EXPRT rpc_client_call(HNDLE hConn, const INT routine_id, ...);
02068 INT EXPRT rpc_call(const INT routine_id, ...);
02069 INT EXPRT rpc_tid_size(INT id);
02070 char EXPRT *rpc_tid_name(INT id);
02071 INT EXPRT rpc_server_connect(char *host_name, char *exp_name);
02072 INT EXPRT rpc_client_connect(char *host_name, INT midas_port,
02073 char *client_name, HNDLE * hConnection);
02074 INT EXPRT rpc_client_disconnect(HNDLE hConn, BOOL bShutdown);
02075
02076 INT EXPRT rpc_send_event(INT buffer_handle, void *source, INT buf_size,
02077 INT async_flag);
02078 INT EXPRT rpc_flush_event(void);
02079
02080 void EXPRT rpc_get_convert_flags(INT * convert_flags);
02081 void EXPRT rpc_convert_single(void *data, INT tid, INT flags,
02082 INT convert_flags);
02083 void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size,
02084 INT convert_flags);
02085
02086
02087 DWORD EXPRT ss_millitime(void);
02088 DWORD EXPRT ss_time(void);
02089 DWORD EXPRT ss_settime(DWORD seconds);
02090 char EXPRT *ss_asctime(void);
02091 INT EXPRT ss_sleep(INT millisec);
02092 BOOL EXPRT ss_kbhit(void);
02093
02094 void EXPRT ss_clear_screen(void);
02095 void EXPRT ss_printf(INT x, INT y, const char *format, ...);
02096 void ss_set_screen_size(int x, int y);
02097
02098 char EXPRT *ss_getpass(char *prompt);
02099 INT EXPRT ss_getchar(BOOL reset);
02100 char EXPRT *ss_crypt(char *key, char *salt);
02101 char EXPRT *ss_gets(char *string, int size);
02102
02103 void EXPRT *ss_ctrlc_handler(void (*func) (int));
02104
02105
02106 INT EXPRT ss_directio_give_port(INT start, INT end);
02107 INT EXPRT ss_directio_lock_port(INT start, INT end);
02108
02109
02110 INT EXPRT ss_tape_open(char *path, INT oflag, INT * channel);
02111 INT EXPRT ss_tape_close(INT channel);
02112 INT EXPRT ss_tape_status(char *path);
02113 INT EXPRT ss_tape_read(INT channel, void *pdata, INT * count);
02114 INT EXPRT ss_tape_write(INT channel, void *pdata, INT count);
02115 INT EXPRT ss_tape_write_eof(INT channel);
02116 INT EXPRT ss_tape_fskip(INT channel, INT count);
02117 INT EXPRT ss_tape_rskip(INT channel, INT count);
02118 INT EXPRT ss_tape_rewind(INT channel);
02119 INT EXPRT ss_tape_spool(INT channel);
02120 INT EXPRT ss_tape_mount(INT channel);
02121 INT EXPRT ss_tape_unmount(INT channel);
02122 INT EXPRT ss_tape_get_blockn(INT channel);
02123
02124
02125 double EXPRT ss_disk_free(char *path);
02126
02127 double EXPRT ss_file_size(char *path);
02128 INT EXPRT ss_file_remove(char *path);
02129 INT EXPRT ss_file_find(char *path, char *pattern, char **plist);
02130 double EXPRT ss_disk_size(char *path);
02131
02132
02133 INT EXPRT hs_set_path(char *path);
02134 INT EXPRT hs_define_event(DWORD event_id, char *name, TAG * tag,
02135 DWORD size);
02136 INT EXPRT hs_write_event(DWORD event_id, void *data, DWORD size);
02137 INT EXPRT hs_count_events(DWORD ltime, DWORD * count);
02138 INT EXPRT hs_enum_events(DWORD ltime, char *event_name,
02139 DWORD * name_size, INT event_id[],
02140 DWORD * id_size);
02141 INT EXPRT hs_count_vars(DWORD ltime, DWORD event_id, DWORD * count);
02142 INT EXPRT hs_enum_vars(DWORD ltime, DWORD event_id, char *var_name,
02143 DWORD * size, DWORD * var_n, DWORD * n_size);
02144 INT EXPRT hs_get_var(DWORD ltime, DWORD event_id, char *var_name,
02145 DWORD * type, INT * n_data);
02146 INT EXPRT hs_get_event_id(DWORD ltime, char *name, DWORD * id);
02147 INT EXPRT hs_read(DWORD event_id, DWORD start_time, DWORD end_time,
02148 DWORD interval, char *tag_name, DWORD var_index,
02149 DWORD * time_buffer, DWORD * tbsize, void *data_buffer,
02150 DWORD * dbsize, DWORD * type, DWORD * n);
02151 INT EXPRT hs_dump(DWORD event_id, DWORD start_time, DWORD end_time,
02152 DWORD interval, BOOL binary_time);
02153 INT EXPRT hs_fdump(char *file_name, DWORD id, BOOL binary_time);
02154
02155
02156 INT EXPRT el_retrieve(char *tag, char *date, int *run, char *author,
02157 char *type, char *system, char *subject,
02158 char *text, int *textsize, char *orig_tag,
02159 char *reply_tag, char *attachment1,
02160 char *attachment2, char *attachment3,
02161 char *encoding);
02162 INT EXPRT el_submit(int run, char *author, char *type, char *system,
02163 char *subject, char *text, char *reply_to,
02164 char *encoding, char *afilename1, char *buffer1,
02165 INT buffer_size1, char *afilename2, char *buffer2,
02166 INT buffer_size2, char *afilename3, char *buffer3,
02167 INT buffer_size3, char *tag, INT tag_size);
02168 INT EXPRT el_search_message(char *tag, int *fh, BOOL walk);
02169 INT EXPRT el_search_run(int run, char *return_tag);
02170 INT EXPRT el_delete_message(char *tag);
02171
02172
02173 INT EXPRT al_check();
02174 INT EXPRT al_trigger_alarm(char *alarm_name, char *alarm_message,
02175 char *default_class, char *cond_str,
02176 INT type);
02177 INT EXPRT al_trigger_class(char *alarm_class, char *alarm_message,
02178 BOOL first);
02179 INT EXPRT al_reset_alarm(char *alarm_name);
02180 BOOL EXPRT al_evaluate_condition(char *condition, char *value);
02181
02182
02183 void EXPRT test_register(ANA_TEST * t);
02184 void EXPRT add_data_dir(char *result, char *file);
02185 void EXPRT lock_histo(INT id);
02186
02187 #ifdef __cplusplus
02188 }
02189 #endif
02190 #endif
02191
02192 #endif
02193