Go to the documentation of this file.00001 #include <stdio.h>
00002 #include <string.h>
00003 #include <dbDefs.h>
00004 #include <dbAccess.h>
00005 #include <recSup.h>
00006 #include <devSup.h>
00007 #include <callback.h>
00008 #include <sys/time.h>
00009
00010 #define EVNTNO_UPDATE 10
00011 #define EVNTNO_T1 11
00012 #define EVNTNO_T2 12
00013 #define EVNTNO_T3 13
00014
00015
00016
00017
00018
00019
00020 #define SCAN_SERVER 1
00021
00022 typedef struct ParProp
00023 {
00024 char pname[16];
00025 union
00026 {
00027 float f;
00028 long l;
00029 double d;
00030 } pval;
00031 union
00032 {
00033 float f;
00034 long l;
00035 double d;
00036 } pvalset;
00037 unsigned long Type, Mode;
00038 float Minval, Maxval;
00039 unsigned short Unit;
00040 short Exp;
00041 char Onstate[32], Offstate[32];
00042 struct HVChan *hvchan;
00043
00044 char PVname[32];
00045
00046 double period;
00047 int evntno;
00048 struct dbAddr PVaddr;
00049 CALLBACK pcallback;
00050 } PARPROP;
00051
00052 typedef struct HVChan
00053 {
00054 unsigned short *crate, slot, chan;
00055 char chaddr[16];
00056 char chname[16];
00057
00058
00059
00060 double chname_period;
00061 int chname_evntno;
00062 short npar;
00063 PARPROP *pplist;
00064 struct HVCrate *hvcrate;
00065
00066 short epicsenabled;
00067 } HVCHAN;
00068
00069 typedef struct HVSlot
00070 {
00071 char slname[64];
00072 short nchan;
00073 HVCHAN **hvchan;
00074 } HVSLOT;
00075
00076 typedef struct CrateScanList
00077 {
00078 char pname[16];
00079 double period;
00080 int evntno;
00081
00082 struct CrateScanList *next;
00083 } CRATESCANLIST;
00084
00085 typedef struct HVCrate
00086 {
00087 char name[64];
00088 char IPaddr[64];
00089 unsigned short crate;
00090 short nsl;
00091 short nchan;
00092 HVCHAN *hvchan;
00093 HVSLOT *hvchmap;
00094 CRATESCANLIST *csl;
00095 short connected;
00096 } HVCRATE;
00097
00098 extern short DEBUG;
00099 #define PDEBUG(LEVEL) if( DEBUG >= LEVEL)
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115 float ScanChannelsPeriod;
00116
00117 int ConnectCrate( char *name, char *linkaddr);
00118 void ParseCrateAddr( char (*straddr)[], short naddr);
00119 void Shutdown();
00120 #if 0
00121 void iCallback( CALLBACK *pcallback);
00122 void oCallback( CALLBACK *pcallback);
00123 #endif
00124 void *CAENx527ParseDevArgs( char *saddr);
00125 void *CAENx527GetChParVal( PARPROP *pp);
00126 int CAENx527SetChParVal( PARPROP *pp);
00127 char *CAENx527GetChName( HVCHAN *hvch);
00128 int CAENx527SetChName( HVCHAN *hvch, char *chname);
00129 short CAENx527mbbi2state( PARPROP *pp);
00130 void CAENx527mbbi2bits( PARPROP *pp, char *bits, short nbits);
00131 char *CAENx527GetParUnit( PARPROP *pp, char *fieldval);