Files
sicspsi/amorstat.w

104 lines
3.7 KiB
OpenEdge ABL

\subsection{Amor Status Display Support}
The reflectometer AMOR has a few unique status display requirements:
\begin{itemize}
\item In scan mode up to four detector counts curves must be shown for
the two counters in spin-up or spin-down mode. This needs to be
updated after each scan point.
\item Additionally user defined curves may need to be displayed.
\item The usual helper information muste be displayed.
\item In TOF mode it must be possible to define a region on the
detector whose summed counts are displayed versus the time
binning. This must be sent on request.
\end{itemize}
In order to cover all this a special object within SICS is required
which deals with all this and packages information in a status display
compliant way.
In order to do this the amorstatus object registers callbacks both
with the histogram memory and the scan object. These callback
functions are then responsible for updating the status displays. In
order for amorstatus to be able to do this, the client must register
itself with a special command.
In order to achieve all this some data structures are needed:
@d asdata @{
/*---------------------------------------------------------------------*/
typedef struct {
float *fX, *fY;
int iNP;
char *name;
}UserData, *pUserData;
/*---------------------------------------------------------------------*/
typedef struct __AMORSTAT {
pObjectDescriptor pDes;
pICallBack pCall;
int iUserList;
pScanData pScan;
pHistMem pHM;
int iTOF;
int iHTTP;
}AmorStat, *pAmorStat;
@}
The fourth data structure is the amor status object data structure. It
has the following fields:
\begin{description}
\item[pDes] The standard SICS object descriptor.
\item[pCall] The callback interface.
\item[iUserList] A list of user data loaded data.
\item[pScan] A pointer to the scan object.
\item[pHM] A pointer to the histogram memory.
\item[iTOF] A flag which is true if we are taking measurements in TOF
mode.
\end{description}
In terms of a function interface this object has not much to
offer. Its main purpose is really as an interface to the status
display clients and thus it is configured through the interpreter
interface function. No need for other SICS objects to access it.
@d asinter @{
int AmorStatusFactory(SConnection *pCon, SicsInterp *pSics, void *pData,
int argc, char *argv[]);
int AmorStatusAction(SConnection *pCon, SicsInterp *pSics, void *pData,
int argc, char *argv[]);
void KillAmorStatus(void *pData);
@}
@o amorstat.i @{
/*------------------------------------------------------------------------
A M O R S T A T U S
Internal data structure definitions for the AMOR status display
facilitator object. DO NOT CHANGE. This file is automatically
created from amorstat.w.
Mark Koennecke, September 1999
---------------------------------------------------------------------*/
@<asdata@>
@}
@o amorstat.h @{
/*------------------------------------------------------------------------
A M O R S T A T U S
Public definitions for the AMOR status display
facilitator object. DO NOT CHANGE. This file is automatically
created from amorstat.w.
Mark Koennecke, September 1999
---------------------------------------------------------------------*/
#ifndef AMORSTATUS
#define AMORSTATUS
@<asinter@>
#endif
@}