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