/*------------------------------------------------------------------------- C O U N T E R The SICS Interface to a single detector and his associated monitors. Mark Koennecke, January 1996 copyright: see implementation file. ----------------------------------------------------------------------------*/ #ifndef SICSCOUNTER #define SICSCOUNTER #include "countdriv.h" typedef struct { pObjectDescriptor pDes; char *name; int isUpToDate; int iExponent; pICountable pCountInt; pCounterDriver pDriv; pICallBack pCall; unsigned long tStart; int iCallbackCounter; int badStatusCount; } Counter, *pCounter; /*----------------------------- birth & death -----------------------------*/ pCounter CreateCounter(char *name, pCounterDriver pDriv); void DeleteCounter(void *self); int MakeCounter(SConnection *pCon, SicsInterp *pSics, void *pData, int argc, char *argv[]); /*------------------------- set/get Parameters ----------------------------*/ int SetCounterMode(pCounter self, CounterMode eNew); CounterMode GetCounterMode(pCounter self); int SetCounterPreset(pCounter self, float fVal); float GetCounterPreset(pCounter self); long GetCounts(pCounter self, SConnection *pCon); long GetMonitor(pCounter self, int iNum, SConnection *pCon); int GetNMonitor(pCounter self); int GetControlMonitor(pCounter self); int SetControlMonitor(pCounter self, int channel); void SetMonitorValue(pCounter self, int index, long value); float GetCountTime(pCounter self, SConnection *pCon); int DoCount(pCounter self,float fPreset, SConnection *pCon, int iBlock); /*------------------------------------------------------------------------- the real action: starting and checking is packaged with the ObjectDescriptor. */ int CountAction(SConnection *pCon, SicsInterp *pSics, void *pData, int argc, char *argv[]); #endif