/*----------------------------------------------------------------------- S i t e A b s t r a c t i o n L a y e r With ANSTO using SICS as well it became necessary to separate the general parts of SICS from the installation specific components. Each installation will have a separate set of drivers and, to some extent, instrument specific commands. Such code has to be in a separate library. Access to this library is through an interface which consists of a structure containing pointers to functions which allow for the creation of site specific drivers and commands. Moreover, the site specific library has to implement a function, getSite, which returns the appropriate data structure for the site for which SICS is being compiled. ------------------------------------------------------------------------*/ #ifndef SICSSITE #define SICSSITE #include #include #include #include #include #include #include #include #include #include typedef struct { void (*AddSiteCommands) (SicsInterp * pSics); void (*RemoveSiteCommands) (SicsInterp * pSics); pMotor(*CreateMotor) (SConnection * pCon, int argc, char *argv[]); pCounterDriver(*CreateCounterDriver) (SConnection * pCon, int argc, char *argv[]); HistDriver *(*CreateHistogramMemoryDriver) (char *name, pStringDict pOption); pVelSelDriv(*CreateVelocitySelector) (char *name, char *array, Tcl_Interp * pTcl); pCodri(*CreateControllerDriver) (SConnection * pCon, int argc, char *argv[]); pEVControl(*InstallEnvironmentController) (SicsInterp * pSics, SConnection * pCon, int argc, char *argv[]); int (*ConfigureScan) (pScanData self, char *option); void (*KillSite) (void *pData); } Site, *pSite; /*-------------------------------------------------------------------*/ pSite getSite(void); #endif