- Added a multiple histogram memory control module. This required a
tiny change in the countable interface which in turn required updating of header file includes in a lot of files. - Some small fixes to TRICS writing as well.
This commit is contained in:
3
Makefile
3
Makefile
@ -47,7 +47,8 @@ SOBJ = network.o ifile.o conman.o SCinter.o splitter.o passwd.o \
|
|||||||
hklscan.o xytable.o amor2t.o nxamor.o amorscan.o amorstat.o \
|
hklscan.o xytable.o amor2t.o nxamor.o amorscan.o amorstat.o \
|
||||||
circular.o el755driv.o maximize.o sicscron.o tecsdriv.o sanscook.o \
|
circular.o el755driv.o maximize.o sicscron.o tecsdriv.o sanscook.o \
|
||||||
tasinit.o tasutil.o t_rlp.o t_conv.o d_sign.o d_mod.o \
|
tasinit.o tasutil.o t_rlp.o t_conv.o d_sign.o d_mod.o \
|
||||||
tasdrive.o tasscan.o synchronize.o definealias.o swmotor.o t_update.o
|
tasdrive.o tasscan.o synchronize.o definealias.o swmotor.o t_update.o \
|
||||||
|
hmcontrol.o
|
||||||
|
|
||||||
MOTOROBJ = motor.o el734driv.o simdriv.o el734dc.o pipiezo.o pimotor.o
|
MOTOROBJ = motor.o el734driv.o simdriv.o el734dc.o pipiezo.o pimotor.o
|
||||||
COUNTEROBJ = countdriv.o simcter.o counter.o
|
COUNTEROBJ = countdriv.o simcter.o counter.o
|
||||||
|
@ -42,8 +42,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "lld.h"
|
#include "lld.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "interface.h"
|
|
||||||
|
|
||||||
#define CALLBACK 17777
|
#define CALLBACK 17777
|
||||||
|
|
||||||
|
20
conman.c
20
conman.c
@ -34,17 +34,13 @@
|
|||||||
#include <tcl.h>
|
#include <tcl.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "lld.h"
|
#include "lld.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "passwd.h"
|
#include "passwd.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "Scommon.h"
|
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "macro.h"
|
#include "macro.h"
|
||||||
#include "servlog.h"
|
#include "servlog.h"
|
||||||
#include "status.h"
|
#include "status.h"
|
||||||
#include "interrupt.h"
|
#include "interrupt.h"
|
||||||
#include "interface.h"
|
|
||||||
#include "event.h"
|
|
||||||
#include "ifile.h"
|
#include "ifile.h"
|
||||||
#include "token.h"
|
#include "token.h"
|
||||||
#include "uubuffer.h"
|
#include "uubuffer.h"
|
||||||
@ -826,7 +822,7 @@ extern pServer pServ;
|
|||||||
#define ZIPBUF 8192
|
#define ZIPBUF 8192
|
||||||
int SCWriteZipped(SConnection *self, char *pName, void *pData, int iDataLen)
|
int SCWriteZipped(SConnection *self, char *pName, void *pData, int iDataLen)
|
||||||
{
|
{
|
||||||
char outBuf[65546], *pBuf = NULL, noutBuf[ZIPBUF];
|
char outBuf[65546], *pBuf = NULL, noutBuf[ZIPBUF], *pHeader = NULL;
|
||||||
int compressedLength, iRet, iRet2, iCount;
|
int compressedLength, iRet, iRet2, iCount;
|
||||||
z_stream compStream;
|
z_stream compStream;
|
||||||
|
|
||||||
@ -895,7 +891,12 @@ extern pServer pServ;
|
|||||||
/* write header line */
|
/* write header line */
|
||||||
memset(outBuf,0,65536);
|
memset(outBuf,0,65536);
|
||||||
sprintf(outBuf,"SICSBIN ZIP %s %d\r\n",pName,compressedLength);
|
sprintf(outBuf,"SICSBIN ZIP %s %d\r\n",pName,compressedLength);
|
||||||
SCWrite(self,outBuf,eValue);
|
pHeader = strdup(outBuf);
|
||||||
|
if(pHeader == NULL)
|
||||||
|
{
|
||||||
|
SCWrite(self,"ERROR: out of memory in SCWriteZipped",eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* now reset the deflater and do the same with writing data */
|
/* now reset the deflater and do the same with writing data */
|
||||||
compStream.zalloc = (alloc_func)NULL;
|
compStream.zalloc = (alloc_func)NULL;
|
||||||
@ -924,12 +925,13 @@ extern pServer pServ;
|
|||||||
compStream.avail_in = iDataLen;
|
compStream.avail_in = iDataLen;
|
||||||
compStream.avail_out = iDataLen + iDataLen/10 + 50;
|
compStream.avail_out = iDataLen + iDataLen/10 + 50;
|
||||||
iRet = deflate(&compStream,Z_FINISH);
|
iRet = deflate(&compStream,Z_FINISH);
|
||||||
if(iRet != Z_STREAM_END && iRet != Z_OK)
|
if(iRet != Z_STREAM_END)
|
||||||
{
|
{
|
||||||
sprintf(outBuf,"ERROR: zlib error: %d",iRet);
|
sprintf(outBuf,"ERROR: zlib error: %d",iRet);
|
||||||
SCWrite(self,outBuf,eError);
|
SCWrite(self,outBuf,eError);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
iRet = NETWrite(self->pSock,pHeader,strlen(pHeader));
|
||||||
iRet = NETWrite(self->pSock,pBuf,compStream.total_out);
|
iRet = NETWrite(self->pSock,pBuf,compStream.total_out);
|
||||||
if(iRet != 1)
|
if(iRet != 1)
|
||||||
{
|
{
|
||||||
@ -938,6 +940,8 @@ extern pServer pServ;
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
deflateEnd(&compStream);
|
deflateEnd(&compStream);
|
||||||
|
free(pHeader);
|
||||||
|
free(pBuf);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "Scommon.h"
|
#include "sics.h"
|
||||||
#include "countdriv.h"
|
#include "countdriv.h"
|
||||||
#include "hardsup/sinq_prototypes.h"
|
#include "hardsup/sinq_prototypes.h"
|
||||||
#include "hardsup/el737_def.h"
|
#include "hardsup/el737_def.h"
|
||||||
|
@ -24,10 +24,6 @@
|
|||||||
|
|
||||||
#define MAXCOUNT 9 /* No of monitors + actual counter */
|
#define MAXCOUNT 9 /* No of monitors + actual counter */
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
eTimer,
|
|
||||||
ePreset
|
|
||||||
}CounterMode;
|
|
||||||
|
|
||||||
/* Parameter codes for the Set/Get pair of routines */
|
/* Parameter codes for the Set/Get pair of routines */
|
||||||
/*-------- threshold */
|
/*-------- threshold */
|
||||||
|
12
counter.c
12
counter.c
@ -70,6 +70,17 @@
|
|||||||
|
|
||||||
return self->pDriv->Halt(self->pDriv);
|
return self->pDriv->Halt(self->pDriv);
|
||||||
}
|
}
|
||||||
|
/*--------------------------------------------------------------------------*/
|
||||||
|
static void SetCountParameters(void *pData, float fPreset, CounterMode eMode)
|
||||||
|
{
|
||||||
|
pCounter self = NULL;
|
||||||
|
|
||||||
|
assert(pData);
|
||||||
|
self = (pCounter)pData;
|
||||||
|
|
||||||
|
self->pDriv->fPreset = fPreset;
|
||||||
|
self->pDriv->eMode = eMode;
|
||||||
|
}
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
static int StartCount(void *pData, SConnection *pCon)
|
static int StartCount(void *pData, SConnection *pCon)
|
||||||
{
|
{
|
||||||
@ -355,6 +366,7 @@
|
|||||||
free(pRes);
|
free(pRes);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
pRes->pCountInt->SetCountParameters = SetCountParameters;
|
||||||
pRes->pCountInt->StartCount = StartCount;
|
pRes->pCountInt->StartCount = StartCount;
|
||||||
pRes->pCountInt->CheckCountStatus = CheckCountStatus;
|
pRes->pCountInt->CheckCountStatus = CheckCountStatus;
|
||||||
pRes->pCountInt->TransferData = TransferData;
|
pRes->pCountInt->TransferData = TransferData;
|
||||||
|
2
danu.dat
2
danu.dat
@ -1,3 +1,3 @@
|
|||||||
7740
|
7746
|
||||||
NEVER, EVER modify or delete this file
|
NEVER, EVER modify or delete this file
|
||||||
You'll risk eternal damnation and a reincarnation as a cockroach!|n
|
You'll risk eternal damnation and a reincarnation as a cockroach!|n
|
@ -42,18 +42,14 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "Scommon.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "nserver.h"
|
#include "nserver.h"
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
#include "countdriv.h"
|
#include "countdriv.h"
|
||||||
#include "counter.h"
|
#include "counter.h"
|
||||||
#include "task.h"
|
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
#include "status.h"
|
#include "status.h"
|
||||||
#include "lld.h"
|
#include "lld.h"
|
||||||
#include "event.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#define DEBUG 1
|
#define DEBUG 1
|
||||||
|
5
drive.c
5
drive.c
@ -41,11 +41,8 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
|
#include "sics.h"
|
||||||
#include "drive.h"
|
#include "drive.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "SCinter.h"
|
|
||||||
#include "conman.h"
|
|
||||||
#include "nserver.h" /* for SicsWait */
|
#include "nserver.h" /* for SicsWait */
|
||||||
#include "drive.h"
|
#include "drive.h"
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
|
7
emon.c
7
emon.c
@ -42,10 +42,7 @@
|
|||||||
#include <tcl.h> /* for DString */
|
#include <tcl.h> /* for DString */
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "lld.h"
|
#include "lld.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "emon.i"
|
#include "emon.i"
|
||||||
#include "emon.h"
|
#include "emon.h"
|
||||||
#include "event.h"
|
#include "event.h"
|
||||||
@ -383,4 +380,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,9 +41,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "countdriv.h"
|
#include "countdriv.h"
|
||||||
#include "counter.h"
|
#include "counter.h"
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
|
12
histmem.c
12
histmem.c
@ -134,6 +134,17 @@
|
|||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
static void HistSetParameter(void *pData, float fPreset, CounterMode eMode)
|
||||||
|
{
|
||||||
|
pHistMem self = NULL;
|
||||||
|
|
||||||
|
self = (pHistMem)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
self->pDriv->eCount = eMode;
|
||||||
|
self->pDriv->fCountPreset = fPreset;
|
||||||
|
}
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
static int HistStartCount(void *pData, SConnection *pCon)
|
static int HistStartCount(void *pData, SConnection *pCon)
|
||||||
{
|
{
|
||||||
@ -409,6 +420,7 @@
|
|||||||
free(pNew);
|
free(pNew);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
pNew->pCountInt->SetCountParameters = HistSetParameter;
|
||||||
pNew->pCountInt->StartCount = HistStartCount;
|
pNew->pCountInt->StartCount = HistStartCount;
|
||||||
pNew->pCountInt->CheckCountStatus = HistCountStatus;
|
pNew->pCountInt->CheckCountStatus = HistCountStatus;
|
||||||
pNew->pCountInt->TransferData = HistTransfer;
|
pNew->pCountInt->TransferData = HistTransfer;
|
||||||
|
21
histsim.c
21
histsim.c
@ -41,9 +41,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "countdriv.h"
|
#include "countdriv.h"
|
||||||
#include "counter.h"
|
#include "counter.h"
|
||||||
#include "stringdict.h"
|
#include "stringdict.h"
|
||||||
@ -65,7 +63,9 @@
|
|||||||
static int SimConfig(pHistDriver self, SConnection *pCon,
|
static int SimConfig(pHistDriver self, SConnection *pCon,
|
||||||
pStringDict pOption, SicsInterp *pSics)
|
pStringDict pOption, SicsInterp *pSics)
|
||||||
{
|
{
|
||||||
int i, iLength = 1;
|
int i, iLength = 1, status;
|
||||||
|
char pData[132];
|
||||||
|
float fFail;
|
||||||
|
|
||||||
if(self->eHistMode == eHTOF)
|
if(self->eHistMode == eHTOF)
|
||||||
{
|
{
|
||||||
@ -76,6 +76,18 @@
|
|||||||
iLength *= self->iTimeChan;
|
iLength *= self->iTimeChan;
|
||||||
self->iLength = iLength;
|
self->iLength = iLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
deal with failrate
|
||||||
|
*/
|
||||||
|
status = StringDictGet(pOption,"failrate",pData,131);
|
||||||
|
if(status)
|
||||||
|
{
|
||||||
|
fFail = atof(pData);
|
||||||
|
free(self->pPriv);
|
||||||
|
self->pPriv = NewSIMCounter("HistoSim",fFail);
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
@ -265,6 +277,7 @@
|
|||||||
pNew->FreePrivate = SimFreePrivate;
|
pNew->FreePrivate = SimFreePrivate;
|
||||||
pNew->Pause = SimPause;
|
pNew->Pause = SimPause;
|
||||||
pNew->Continue = SimContinue;
|
pNew->Continue = SimContinue;
|
||||||
|
StringDictAddPair(pOpt,"failrate","-1");
|
||||||
|
|
||||||
return pNew;
|
return pNew;
|
||||||
}
|
}
|
||||||
|
349
hmcontrol.c
Normal file
349
hmcontrol.c
Normal file
@ -0,0 +1,349 @@
|
|||||||
|
/*------------------------------------------------------------------------
|
||||||
|
H M C O N T R O L
|
||||||
|
|
||||||
|
A module for coordinating several counters and histogram
|
||||||
|
memories. One of the counters is the master counter and the rest are
|
||||||
|
slaves which have to be kept in sync with the master in their
|
||||||
|
operations.
|
||||||
|
|
||||||
|
copyright: see copyright.h
|
||||||
|
|
||||||
|
Mark Koennecke, June 2001
|
||||||
|
-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <tcl.h>
|
||||||
|
#include "fortify.h"
|
||||||
|
#include "hmcontrol.h"
|
||||||
|
#include "devexec.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
static void *HMCGetInterface(void *pData, int ID)
|
||||||
|
{
|
||||||
|
pHMcontrol self = NULL;
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
if(ID == COUNTID)
|
||||||
|
return self->pCount;
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
static int HMCHalt(void *pData)
|
||||||
|
{
|
||||||
|
int i, retVal = OKOK, status;
|
||||||
|
pHMcontrol self = NULL;
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
for(i = 0; i < self->nSlaves; i++)
|
||||||
|
{
|
||||||
|
status = self->slaves[i]->Halt(self->slaveData[i]);
|
||||||
|
if(status != OKOK)
|
||||||
|
retVal = status;
|
||||||
|
}
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
static int HMCStart(void *pData, SConnection *pCon)
|
||||||
|
{
|
||||||
|
int i, status;
|
||||||
|
pHMcontrol self = NULL;
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
for(i = 0; i < self->nSlaves; i++)
|
||||||
|
{
|
||||||
|
status = self->slaves[i]->StartCount(self->slaveData[i],pCon);
|
||||||
|
if(status != OKOK)
|
||||||
|
{
|
||||||
|
HMCHalt(self);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return OKOK;
|
||||||
|
}
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
static int HMCStatus(void *pData, SConnection *pCon)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
pHMcontrol self = NULL;
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
status = self->slaves[0]->CheckCountStatus(self->slaveData[0],pCon);
|
||||||
|
if(status == HWIdle || status == HWFault)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
stop counting on slaves when finished or when an error
|
||||||
|
occurred.
|
||||||
|
*/
|
||||||
|
HMCHalt(self);
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
static int HMCPause(void *pData, SConnection *pCon)
|
||||||
|
{
|
||||||
|
int i, status;
|
||||||
|
pHMcontrol self = NULL;
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
for(i = 0; i < self->nSlaves; i++)
|
||||||
|
{
|
||||||
|
status = self->slaves[i]->Pause(self->slaveData[i],pCon);
|
||||||
|
if(status != OKOK)
|
||||||
|
{
|
||||||
|
HMCHalt(self);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return OKOK;
|
||||||
|
}
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
static int HMCContinue(void *pData, SConnection *pCon)
|
||||||
|
{
|
||||||
|
int i, status;
|
||||||
|
pHMcontrol self = NULL;
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
for(i = 0; i < self->nSlaves; i++)
|
||||||
|
{
|
||||||
|
status = self->slaves[i]->Continue(self->slaveData[i],pCon);
|
||||||
|
if(status != OKOK)
|
||||||
|
{
|
||||||
|
HMCHalt(self);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return OKOK;
|
||||||
|
}
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
static int HMCTransfer(void *pData, SConnection *pCon)
|
||||||
|
{
|
||||||
|
int i, retVal = OKOK, status;
|
||||||
|
pHMcontrol self = NULL;
|
||||||
|
char pBueffel[132];
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
for(i = 0; i < self->nSlaves; i++)
|
||||||
|
{
|
||||||
|
status = self->slaves[i]->TransferData(self->slaveData[i], pCon);
|
||||||
|
if(status != OKOK)
|
||||||
|
{
|
||||||
|
retVal = status;
|
||||||
|
sprintf(pBueffel,"WARNING: slave histogram %d failed to transfer data",
|
||||||
|
i);
|
||||||
|
SCWrite(pCon,pBueffel,eWarning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
static void HMCParameter(void *pData, float fPreset, CounterMode eMode )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
pHMcontrol self = NULL;
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
for(i = 0; i < self->nSlaves; i++)
|
||||||
|
{
|
||||||
|
self->slaves[i]->SetCountParameters(self->slaveData[i], fPreset,
|
||||||
|
eMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
static void KillHMcontrol(void *pData)
|
||||||
|
{
|
||||||
|
pHMcontrol self;
|
||||||
|
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
if(!self)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(self->pDes)
|
||||||
|
DeleteDescriptor(self->pDes);
|
||||||
|
if(self->pCount)
|
||||||
|
free(self->pCount);
|
||||||
|
free(self);
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
int MakeHMControl(SConnection *pCon, SicsInterp *pSics,
|
||||||
|
void *pData, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int i, status;
|
||||||
|
pHMcontrol pNew = NULL;
|
||||||
|
char pBueffel[132];
|
||||||
|
CommandList *pCom;
|
||||||
|
pICountable pCount;
|
||||||
|
|
||||||
|
/*
|
||||||
|
need at least two parameters
|
||||||
|
*/
|
||||||
|
if(argc < 3)
|
||||||
|
{
|
||||||
|
SCWrite(pCon,"ERROR: insufficient number of arguments to MakeHMControl",
|
||||||
|
eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
allocate our data structure
|
||||||
|
*/
|
||||||
|
pNew = (pHMcontrol)malloc(sizeof(HMcontrol));
|
||||||
|
if(!pNew)
|
||||||
|
{
|
||||||
|
SCWrite(pCon,"ERROR: out of memory in MakeHMControl",eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
memset(pNew,0,sizeof(HMcontrol));
|
||||||
|
pNew->pDes = CreateDescriptor("HMcontrol");
|
||||||
|
pNew->pCount = CreateCountableInterface();
|
||||||
|
if(!pNew->pDes || ! pNew->pCount)
|
||||||
|
{
|
||||||
|
SCWrite(pCon,"ERROR: out of memory in MakeHMControl",eError);
|
||||||
|
KillHMcontrol(pNew);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
assign interface functions
|
||||||
|
*/
|
||||||
|
pNew->pDes->GetInterface = HMCGetInterface;
|
||||||
|
pNew->pCount->Halt = HMCHalt;
|
||||||
|
pNew->pCount->StartCount = HMCStart;
|
||||||
|
pNew->pCount->CheckCountStatus = HMCStatus;
|
||||||
|
pNew->pCount->Pause = HMCPause;
|
||||||
|
pNew->pCount->Continue = HMCContinue;
|
||||||
|
pNew->pCount->TransferData = HMCTransfer;
|
||||||
|
pNew->pCount->SetCountParameters = HMCParameter;
|
||||||
|
|
||||||
|
/*
|
||||||
|
now loop through the remaining arguments, thereby entering them into
|
||||||
|
the slave list.
|
||||||
|
*/
|
||||||
|
for(i = 2; i < argc; i++)
|
||||||
|
{
|
||||||
|
pCom = FindCommand(pSics,argv[i]);
|
||||||
|
if(!pCom)
|
||||||
|
{
|
||||||
|
sprintf(pBueffel,"ERROR: object %s not found in MakeHMcontrol",
|
||||||
|
argv[i]);
|
||||||
|
SCWrite(pCon,pBueffel,eError);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
pCount = GetCountableInterface(pCom->pData);
|
||||||
|
if(!pCount)
|
||||||
|
{
|
||||||
|
sprintf(pBueffel,"ERROR: object %s is NOT countable",
|
||||||
|
argv[i]);
|
||||||
|
SCWrite(pCon,pBueffel,eError);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
pNew->slaves[pNew->nSlaves] = pCount;
|
||||||
|
pNew->slaveData[pNew->nSlaves] = pCom->pData;
|
||||||
|
pNew->nSlaves++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
now install our action command and we are done
|
||||||
|
*/
|
||||||
|
status = AddCommand(pSics,argv[1],HMControlAction,KillHMcontrol,
|
||||||
|
pNew);
|
||||||
|
if(!status)
|
||||||
|
{
|
||||||
|
sprintf(pBueffel,"ERROR: duplicate command %s not created",argv[1]);
|
||||||
|
SCWrite(pCon,pBueffel,eError);
|
||||||
|
KillHMcontrol(pNew);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------------------
|
||||||
|
Syntax: whatever start preset mode
|
||||||
|
------------------------------------------------------------------------*/
|
||||||
|
int HMControlAction(SConnection *pCon, SicsInterp *pSics,
|
||||||
|
void *pData, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
pHMcontrol self;
|
||||||
|
char pBueffel[132];
|
||||||
|
double dPreset;
|
||||||
|
CounterMode eMode;
|
||||||
|
int status;
|
||||||
|
|
||||||
|
/*
|
||||||
|
checks
|
||||||
|
*/
|
||||||
|
self = (pHMcontrol)pData;
|
||||||
|
assert(self);
|
||||||
|
if(argc < 4)
|
||||||
|
{
|
||||||
|
sprintf("ERROR: Usage %s start preset mode", argv[0]);
|
||||||
|
SCWrite(pCon,pBueffel,eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
strtolower(argv[1]);
|
||||||
|
if(strcmp(argv[1],"start") == 0)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
interpret count parameters
|
||||||
|
*/
|
||||||
|
status = Tcl_GetDouble(pSics->pTcl,argv[2],&dPreset);
|
||||||
|
if(status != TCL_OK)
|
||||||
|
{
|
||||||
|
sprintf(pBueffel,"ERROR: failed to convert %s to number",
|
||||||
|
argv[2]);
|
||||||
|
SCWrite(pCon,pBueffel,eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
strtolower(argv[3]);
|
||||||
|
if(strcmp(argv[3],"timer") == 0)
|
||||||
|
eMode = eTimer;
|
||||||
|
else if(strcmp(argv[3],"monitor") == 0)
|
||||||
|
eMode = ePreset;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf(pBueffel,"ERROR: %s is no recognized count mode",argv[3]);
|
||||||
|
SCWrite(pCon,pBueffel,eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
set count parameters and go
|
||||||
|
*/
|
||||||
|
self->pCount->SetCountParameters(self,(float)dPreset,eMode);
|
||||||
|
status = StartDevice(pServ->pExecutor,"hmcontrol",self->pDes,
|
||||||
|
self,pCon,99);
|
||||||
|
if(!status)
|
||||||
|
{
|
||||||
|
SCWrite(pCon,"ERROR: failed to start counting",eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
SCSendOK(pCon);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SCWrite(pCon,"ERROR: subcommand not recognized",eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
45
hmcontrol.h
Normal file
45
hmcontrol.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
/*------------------------------------------------------------------------
|
||||||
|
H M C O N T R O L
|
||||||
|
|
||||||
|
A module for coordinating several counters and histogram
|
||||||
|
memories. One of the counters is the master counter and the rest are
|
||||||
|
slaves which have to be kept in sync with the master in their
|
||||||
|
operations.
|
||||||
|
|
||||||
|
copyright: see copyright.h
|
||||||
|
|
||||||
|
Mark Koennecke, June 2001
|
||||||
|
-------------------------------------------------------------------------*/
|
||||||
|
#ifndef HMCONTROL
|
||||||
|
#define HMCONTROL
|
||||||
|
|
||||||
|
/*
|
||||||
|
the maximum number of slaves
|
||||||
|
*/
|
||||||
|
#include "sics.h"
|
||||||
|
#include "counter.h"
|
||||||
|
|
||||||
|
#define MAXSLAVE 5
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
pObjectDescriptor pDes;
|
||||||
|
pICountable pCount;
|
||||||
|
pICountable slaves[MAXSLAVE];
|
||||||
|
void *slaveData[MAXSLAVE];
|
||||||
|
int nSlaves;
|
||||||
|
float fPreset;
|
||||||
|
CounterMode eMode;
|
||||||
|
} HMcontrol, *pHMcontrol;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int MakeHMControl(SConnection *pCon, SicsInterp *pSics,
|
||||||
|
void *pData, int argc, char *argv[]);
|
||||||
|
int HMControlAction(SConnection *pCon, SicsInterp *pSics,
|
||||||
|
void *pData, int argc, char *argv[]);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
73
hmcontrol.w
Normal file
73
hmcontrol.w
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
\subsection{HM control}
|
||||||
|
At TRICS (and possibly at other instruments) it it necessary to coordinate the
|
||||||
|
operation of the counter and one to many histogram memories. The
|
||||||
|
neutron counter will act as the actual controlling instance and the
|
||||||
|
histogram memories will act as slaves. This is implemented in this
|
||||||
|
module.
|
||||||
|
|
||||||
|
The modules data structure:
|
||||||
|
@d hmcontroldata @{
|
||||||
|
typedef struct {
|
||||||
|
pObjectDescriptor pDes;
|
||||||
|
pICountable pCount;
|
||||||
|
pICountable slaves[MAXSLAVE];
|
||||||
|
void *slaveData[MAXSLAVE];
|
||||||
|
int nSlaves;
|
||||||
|
float fPreset;
|
||||||
|
CounterMode eMode;
|
||||||
|
} HMcontrol, *pHMcontrol;
|
||||||
|
@}
|
||||||
|
The fields are:
|
||||||
|
\begin{description}
|
||||||
|
\item[pDes] The standard SICS object descriptor.
|
||||||
|
\item[pCount] The countable interface of this module.
|
||||||
|
\item[slaves] The slave counters or histogram memories.
|
||||||
|
\item[slaveData] is the data structure for the slave. The first slave
|
||||||
|
is always the neutron counter.
|
||||||
|
\item[nSlaves] The number of active slaves.
|
||||||
|
\item[fPreset] The counting preset.
|
||||||
|
\item[eMode] The counting mode.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
|
Most of this modules functionality is built into the countable
|
||||||
|
interface functions. Just an interface to the interpreter is needed:
|
||||||
|
|
||||||
|
@d hmcontrolint @{
|
||||||
|
int MakeHMControl(SConnection *pCon, SicsInterp *pSics,
|
||||||
|
void *pData, int argc, char *argv[]);
|
||||||
|
int HMControlAction(SConnection *pCon, SicsInterp *pSics,
|
||||||
|
void *pData, int argc, char *argv[]);
|
||||||
|
|
||||||
|
@}
|
||||||
|
|
||||||
|
@o hmcontrol.h @{
|
||||||
|
/*------------------------------------------------------------------------
|
||||||
|
H M C O N T R O L
|
||||||
|
|
||||||
|
A module for coordinating several counters and histogram
|
||||||
|
memories. One of the counters is the master counter and the rest are
|
||||||
|
slaves which have to be kept in sync with the master in their
|
||||||
|
operations.
|
||||||
|
|
||||||
|
copyright: see copyright.h
|
||||||
|
|
||||||
|
Mark Koennecke, June 2001
|
||||||
|
-------------------------------------------------------------------------*/
|
||||||
|
#ifndef HMCONTROL
|
||||||
|
#define HMCONTROL
|
||||||
|
|
||||||
|
/*
|
||||||
|
the maximum number of slaves
|
||||||
|
*/
|
||||||
|
#include "sics.h"
|
||||||
|
#include "counter.h"
|
||||||
|
|
||||||
|
#define MAXSLAVE 5
|
||||||
|
|
||||||
|
@<hmcontroldata@>
|
||||||
|
|
||||||
|
@<hmcontrolint@>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@}
|
@ -40,9 +40,8 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
pIDrivable CreateDrivableInterface(void)
|
pIDrivable CreateDrivableInterface(void)
|
||||||
|
24
interface.h
24
interface.h
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
#line 343 "interface.w"
|
#line 345 "interface.w"
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------
|
||||||
I N T E R F A C E S
|
I N T E R F A C E S
|
||||||
@ -44,7 +44,7 @@
|
|||||||
pIDrivable GetDrivableInterface(void *pObject);
|
pIDrivable GetDrivableInterface(void *pObject);
|
||||||
|
|
||||||
|
|
||||||
#line 368 "interface.w"
|
#line 370 "interface.w"
|
||||||
|
|
||||||
|
|
||||||
pIDrivable CreateDrivableInterface(void);
|
pIDrivable CreateDrivableInterface(void);
|
||||||
@ -56,6 +56,8 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
int ID;
|
int ID;
|
||||||
int (*Halt)(void *self);
|
int (*Halt)(void *self);
|
||||||
|
void (*SetCountParameters)(void *self, float fPreset,
|
||||||
|
CounterMode eMode);\
|
||||||
int (*StartCount)(void *self, SConnection *pCon);
|
int (*StartCount)(void *self, SConnection *pCon);
|
||||||
int (*CheckCountStatus)(void *self, SConnection *pCon);
|
int (*CheckCountStatus)(void *self, SConnection *pCon);
|
||||||
int (*Pause)(void *self, SConnection *pCon);
|
int (*Pause)(void *self, SConnection *pCon);
|
||||||
@ -66,23 +68,23 @@
|
|||||||
pICountable GetCountableInterface(void *pObject);
|
pICountable GetCountableInterface(void *pObject);
|
||||||
|
|
||||||
|
|
||||||
#line 373 "interface.w"
|
#line 375 "interface.w"
|
||||||
|
|
||||||
|
|
||||||
pICountable CreateCountableInterface(void);
|
pICountable CreateCountableInterface(void);
|
||||||
|
|
||||||
/* ------------------------- The CallBack Interface --------------------*/
|
/* ------------------------- The CallBack Interface --------------------*/
|
||||||
|
|
||||||
#line 227 "interface.w"
|
#line 229 "interface.w"
|
||||||
|
|
||||||
typedef void (*KillFuncIT)(void *pData);
|
typedef void (*KillFuncIT)(void *pData);
|
||||||
typedef int (*SICSCallBack)(int iEvent, void *pEventData,
|
typedef int (*SICSCallBack)(int iEvent, void *pEventData,
|
||||||
void *pUserData);
|
void *pUserData);
|
||||||
|
|
||||||
#line 378 "interface.w"
|
#line 380 "interface.w"
|
||||||
|
|
||||||
|
|
||||||
#line 249 "interface.w"
|
#line 251 "interface.w"
|
||||||
|
|
||||||
typedef struct __ICallBack *pICallBack;
|
typedef struct __ICallBack *pICallBack;
|
||||||
|
|
||||||
@ -97,11 +99,11 @@
|
|||||||
int RemoveCallback(pICallBack pInterface, long iID);
|
int RemoveCallback(pICallBack pInterface, long iID);
|
||||||
int RemoveCallback2(pICallBack pInterface, void *pUserData);
|
int RemoveCallback2(pICallBack pInterface, void *pUserData);
|
||||||
|
|
||||||
#line 379 "interface.w"
|
#line 381 "interface.w"
|
||||||
|
|
||||||
/*---------------------- The Environment Interface --------------------*/
|
/*---------------------- The Environment Interface --------------------*/
|
||||||
|
|
||||||
#line 307 "interface.w"
|
#line 309 "interface.w"
|
||||||
|
|
||||||
typedef enum { EVIdle, EVDrive, EVMonitor, EVError } EVMode;
|
typedef enum { EVIdle, EVDrive, EVMonitor, EVError } EVMode;
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -111,13 +113,13 @@
|
|||||||
int (*HandleError)(void *self);
|
int (*HandleError)(void *self);
|
||||||
} EVInterface, *pEVInterface;
|
} EVInterface, *pEVInterface;
|
||||||
|
|
||||||
#line 381 "interface.w"
|
#line 383 "interface.w"
|
||||||
|
|
||||||
|
|
||||||
#line 333 "interface.w"
|
#line 335 "interface.w"
|
||||||
|
|
||||||
pEVInterface CreateEVInterface(void);
|
pEVInterface CreateEVInterface(void);
|
||||||
|
|
||||||
#line 382 "interface.w"
|
#line 384 "interface.w"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -207,6 +207,8 @@ $\langle$count {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@ typedef struct {@\\
|
\mbox{}\verb@ typedef struct {@\\
|
||||||
\mbox{}\verb@ int ID;@\\
|
\mbox{}\verb@ int ID;@\\
|
||||||
\mbox{}\verb@ int (*Halt)(void *self);@\\
|
\mbox{}\verb@ int (*Halt)(void *self);@\\
|
||||||
|
\mbox{}\verb@ void (*SetCountParameters)(void *self, float fPreset,@\\
|
||||||
|
\mbox{}\verb@ CounterMode eMode);\@\\
|
||||||
\mbox{}\verb@ int (*StartCount)(void *self, SConnection *pCon);@\\
|
\mbox{}\verb@ int (*StartCount)(void *self, SConnection *pCon);@\\
|
||||||
\mbox{}\verb@ int (*CheckCountStatus)(void *self, SConnection *pCon);@\\
|
\mbox{}\verb@ int (*CheckCountStatus)(void *self, SConnection *pCon);@\\
|
||||||
\mbox{}\verb@ int (*Pause)(void *self, SConnection *pCon);@\\
|
\mbox{}\verb@ int (*Pause)(void *self, SConnection *pCon);@\\
|
||||||
|
@ -177,6 +177,8 @@ This is an interface for interacting with anything which counts.
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
int ID;
|
int ID;
|
||||||
int (*Halt)(void *self);
|
int (*Halt)(void *self);
|
||||||
|
void (*SetCountParameters)(void *self, float fPreset,
|
||||||
|
CounterMode eMode);\
|
||||||
int (*StartCount)(void *self, SConnection *pCon);
|
int (*StartCount)(void *self, SConnection *pCon);
|
||||||
int (*CheckCountStatus)(void *self, SConnection *pCon);
|
int (*CheckCountStatus)(void *self, SConnection *pCon);
|
||||||
int (*Pause)(void *self, SConnection *pCon);
|
int (*Pause)(void *self, SConnection *pCon);
|
||||||
|
4
itc4.c
4
itc4.c
@ -41,10 +41,8 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <tcl.h>
|
#include <tcl.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "obpar.h"
|
#include "obpar.h"
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
#include "nserver.h"
|
#include "nserver.h"
|
||||||
|
5
motor.c
5
motor.c
@ -47,15 +47,12 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <tcl.h>
|
#include <tcl.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "Scommon.h"
|
|
||||||
#include "status.h"
|
#include "status.h"
|
||||||
#include "servlog.h"
|
#include "servlog.h"
|
||||||
#include "event.h"
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
some lokal defines
|
some lokal defines
|
||||||
|
@ -50,10 +50,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "stringdict.h"
|
#include "stringdict.h"
|
||||||
#include "mumo.h"
|
#include "mumo.h"
|
||||||
|
41
napi.c
41
napi.c
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
----------------------------------------------------------------------------*/
|
----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static const char* rscid = "$Id: napi.c,v 1.3 2000/09/11 09:17:44 cvs Exp $"; /* Revision interted by CVS */
|
static const char* rscid = "$Id: napi.c,v 1.4 2001/06/08 15:18:37 cvs Exp $"; /* Revision interted by CVS */
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -507,7 +507,7 @@ static const char* rscid = "$Id: napi.c,v 1.3 2000/09/11 09:17:44 cvs Exp $"; /*
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* start Vgroup API */
|
/* start Vgroup API */
|
||||||
pNew->iVID = Hopen (filename, am, 100);
|
pNew->iVID = Hopen (filename, am, 5000);
|
||||||
if (pNew->iVID <= 0) {
|
if (pNew->iVID <= 0) {
|
||||||
sprintf (pBuffer, "ERROR: cannot open file: %s", filename);
|
sprintf (pBuffer, "ERROR: cannot open file: %s", filename);
|
||||||
NXIReportError (NXpData, pBuffer);
|
NXIReportError (NXpData, pBuffer);
|
||||||
@ -1050,6 +1050,43 @@ static const char* rscid = "$Id: napi.c,v 1.3 2000/09/11 09:17:44 cvs Exp $"; /*
|
|||||||
return NX_OK;
|
return NX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NXstatus
|
||||||
|
NXsetdimname(NXhandle fid, int iDim, CONSTCHAR *name)
|
||||||
|
{
|
||||||
|
pNexusFile pFile;
|
||||||
|
int32 dim_id, iRet;
|
||||||
|
|
||||||
|
pFile = NXIassert (fid);
|
||||||
|
|
||||||
|
/* check if there is an SDS open */
|
||||||
|
if (pFile->iCurrentSDS == 0) {
|
||||||
|
NXIReportError (NXpData, "ERROR: no SDS open");
|
||||||
|
return NX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
get dimension ID
|
||||||
|
*/
|
||||||
|
dim_id = SDgetdimid(pFile->iCurrentSDS,iDim);
|
||||||
|
if(dim_id < 0){
|
||||||
|
NXIReportError(NXpData,
|
||||||
|
"ERROR: trying to set dimension name for non existent dimension");
|
||||||
|
return NX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
set name
|
||||||
|
*/
|
||||||
|
iRet = SDsetdimname(dim_id,name);
|
||||||
|
if(iRet < 0){
|
||||||
|
NXIReportError(NXpData,
|
||||||
|
"ERROR: failed to set dimension name");
|
||||||
|
return NX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NXstatus
|
NXstatus
|
||||||
NXputdata (NXhandle fid, void *data)
|
NXputdata (NXhandle fid, void *data)
|
||||||
|
4
napi.h
4
napi.h
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
For further information, see <http://www.neutron.anl.gov/NeXus/>
|
For further information, see <http://www.neutron.anl.gov/NeXus/>
|
||||||
|
|
||||||
$Id: napi.h,v 1.2 2000/02/21 08:11:15 cvs Exp $
|
$Id: napi.h,v 1.3 2001/06/08 15:18:37 cvs Exp $
|
||||||
|
|
||||||
----------------------------------------------------------------------------*/
|
----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
@ -241,6 +241,8 @@ extern "C" {
|
|||||||
NXstatus NXclosegroup(NXhandle handle);
|
NXstatus NXclosegroup(NXhandle handle);
|
||||||
|
|
||||||
NXstatus NXmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[]);
|
NXstatus NXmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[]);
|
||||||
|
NXstatus NXsetdimname(NXhandle handle, int iDim, CONSTCHAR *name);
|
||||||
|
|
||||||
NXstatus NXopendata (NXhandle handle, CONSTCHAR* label);
|
NXstatus NXopendata (NXhandle handle, CONSTCHAR* label);
|
||||||
NXstatus NXcompress (NXhandle handle, int compr_type);
|
NXstatus NXcompress (NXhandle handle, int compr_type);
|
||||||
NXstatus NXclosedata(NXhandle handle);
|
NXstatus NXclosedata(NXhandle handle);
|
||||||
|
27
nextrics.c
27
nextrics.c
@ -320,7 +320,15 @@
|
|||||||
"frametilt","DG1");
|
"frametilt","DG1");
|
||||||
GetHistogram(self->pHistogram1,pCon,0,0,DET1X*DET1Y,lData,
|
GetHistogram(self->pHistogram1,pCon,0,0,DET1X*DET1Y,lData,
|
||||||
DET1X*DET1Y*sizeof(HistInt));
|
DET1X*DET1Y*sizeof(HistInt));
|
||||||
|
/*
|
||||||
NXDputalias(hfil,self->pDict,"framecounts",lData);
|
NXDputalias(hfil,self->pDict,"framecounts",lData);
|
||||||
|
*/
|
||||||
|
NXDopenalias(hfil,self->pDict,"framecounts");
|
||||||
|
NXputdata(hfil,lData);
|
||||||
|
NXsetdimname(hfil,0,"frame_x");
|
||||||
|
NXsetdimname(hfil,1,"frame_y");
|
||||||
|
NXclosedata(hfil);
|
||||||
|
|
||||||
fVal = fTTheta;
|
fVal = fTTheta;
|
||||||
NXDputalias(hfil,self->pDict,"frame2theta",&fVal);
|
NXDputalias(hfil,self->pDict,"frame2theta",&fVal);
|
||||||
|
|
||||||
@ -340,7 +348,15 @@
|
|||||||
"frametilt","DG2");
|
"frametilt","DG2");
|
||||||
GetHistogram(self->pHistogram2,pCon,0,0,DET2X*DET2Y,lData,
|
GetHistogram(self->pHistogram2,pCon,0,0,DET2X*DET2Y,lData,
|
||||||
DET2X*DET2Y*sizeof(HistInt));
|
DET2X*DET2Y*sizeof(HistInt));
|
||||||
|
/*
|
||||||
NXDputalias(hfil,self->pDict,"framecounts",lData);
|
NXDputalias(hfil,self->pDict,"framecounts",lData);
|
||||||
|
*/
|
||||||
|
NXDopenalias(hfil,self->pDict,"framecounts");
|
||||||
|
NXputdata(hfil,lData);
|
||||||
|
NXsetdimname(hfil,0,"frame_x");
|
||||||
|
NXsetdimname(hfil,1,"frame_y");
|
||||||
|
NXclosedata(hfil);
|
||||||
|
|
||||||
fVal = fTTheta + self->hm2Off;
|
fVal = fTTheta + self->hm2Off;
|
||||||
NXDputalias(hfil,self->pDict,"frame2theta",&fVal);
|
NXDputalias(hfil,self->pDict,"frame2theta",&fVal);
|
||||||
|
|
||||||
@ -360,7 +376,16 @@
|
|||||||
"frametilt","DG3");
|
"frametilt","DG3");
|
||||||
GetHistogram(self->pHistogram2,pCon,0,0,DET3X*DET3Y,lData,
|
GetHistogram(self->pHistogram2,pCon,0,0,DET3X*DET3Y,lData,
|
||||||
DET3X*DET3Y*sizeof(HistInt));
|
DET3X*DET3Y*sizeof(HistInt));
|
||||||
|
|
||||||
|
/*
|
||||||
NXDputalias(hfil,self->pDict,"framecounts",lData);
|
NXDputalias(hfil,self->pDict,"framecounts",lData);
|
||||||
|
*/
|
||||||
|
NXDopenalias(hfil,self->pDict,"framecounts");
|
||||||
|
NXputdata(hfil,lData);
|
||||||
|
NXsetdimname(hfil,0,"frame_x");
|
||||||
|
NXsetdimname(hfil,1,"frame_y");
|
||||||
|
NXclosedata(hfil);
|
||||||
|
|
||||||
fVal = fTTheta + self->hm3Off;
|
fVal = fTTheta + self->hm3Off;
|
||||||
NXDputalias(hfil,self->pDict,"frame2theta",&fVal);
|
NXDputalias(hfil,self->pDict,"frame2theta",&fVal);
|
||||||
|
|
||||||
@ -1095,7 +1120,7 @@
|
|||||||
if(self->pCurrentFile)
|
if(self->pCurrentFile)
|
||||||
free(self->pCurrentFile);
|
free(self->pCurrentFile);
|
||||||
iRet = IncrementDataNumber(self->pDanu,&iYear);
|
iRet = IncrementDataNumber(self->pDanu,&iYear);
|
||||||
sprintf(pBueffel,"%s/trics%4.4d%4.4d.hdf",self->pFileRoot,iRet, iYear);
|
sprintf(pBueffel,"%s/trics%5.5d%4.4d.hdf",self->pFileRoot,iRet, iYear);
|
||||||
self->pCurrentFile = strdup(pBueffel);
|
self->pCurrentFile = strdup(pBueffel);
|
||||||
iRet = NXopen(self->pCurrentFile,NXACC_CREATE,&hfil);
|
iRet = NXopen(self->pCurrentFile,NXACC_CREATE,&hfil);
|
||||||
if(iRet != NX_OK)
|
if(iRet != NX_OK)
|
||||||
|
@ -21,20 +21,17 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
#include "ifile.h"
|
#include "ifile.h"
|
||||||
#include "status.h"
|
#include "status.h"
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
#include "ofac.h"
|
|
||||||
#include "passwd.h"
|
#include "passwd.h"
|
||||||
#include "lld.h"
|
#include "lld.h"
|
||||||
#include "macro.h"
|
#include "macro.h"
|
||||||
#include "interface.h"
|
|
||||||
#include "perfmon.h"
|
#include "perfmon.h"
|
||||||
#include "nread.h"
|
#include "nread.h"
|
||||||
#include "event.h"
|
#include "ofac.h"
|
||||||
#include "telnet.h"
|
#include "telnet.h"
|
||||||
#include "nserver.h"
|
#include "nserver.h"
|
||||||
|
|
||||||
|
4
nxdata.c
4
nxdata.c
@ -44,9 +44,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "sicsvar.h"
|
#include "sicsvar.h"
|
||||||
#include "nxdict.h"
|
#include "nxdict.h"
|
||||||
#include "modriv.h"
|
#include "modriv.h"
|
||||||
|
8
nxdict.c
8
nxdict.c
@ -1167,6 +1167,14 @@
|
|||||||
LLDdelete(iList);
|
LLDdelete(iList);
|
||||||
return iRet;
|
return iRet;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
stop creation of superfluous dimension scales for single
|
||||||
|
numbers
|
||||||
|
*/
|
||||||
|
if(iRank == 1 && iDim[0] == 1)
|
||||||
|
{
|
||||||
|
NXsetdimname(hfil,0,"singleDim");
|
||||||
|
}
|
||||||
/* deal with compression, if appropriate */
|
/* deal with compression, if appropriate */
|
||||||
if(iCompress != 0)
|
if(iCompress != 0)
|
||||||
{
|
{
|
||||||
|
4
nxsans.c
4
nxsans.c
@ -44,9 +44,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "sicsvar.h"
|
#include "sicsvar.h"
|
||||||
#include "napi.h"
|
#include "napi.h"
|
||||||
#include "nxdict.h"
|
#include "nxdict.h"
|
||||||
|
4
o2t.c
4
o2t.c
@ -43,9 +43,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "fupa.h"
|
#include "fupa.h"
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
#include "o2t.h"
|
#include "o2t.h"
|
||||||
|
4
obdes.h
4
obdes.h
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
#line 339 "interface.w"
|
#line 341 "interface.w"
|
||||||
|
|
||||||
|
|
||||||
#line 29 "interface.w"
|
#line 29 "interface.w"
|
||||||
@ -51,5 +51,5 @@ typedef struct {
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 340 "interface.w"
|
#line 342 "interface.w"
|
||||||
|
|
||||||
|
8
ofac.c
8
ofac.c
@ -41,15 +41,12 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
|
#include "sics.h"
|
||||||
#include "ifile.h"
|
#include "ifile.h"
|
||||||
#include "sicsexit.h"
|
#include "sicsexit.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "passwd.h"
|
#include "passwd.h"
|
||||||
#include "conman.h"
|
|
||||||
#include "macro.h"
|
#include "macro.h"
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "sicsvar.h"
|
#include "sicsvar.h"
|
||||||
#include "drive.h"
|
#include "drive.h"
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
@ -106,6 +103,7 @@
|
|||||||
#include "synchronize.h"
|
#include "synchronize.h"
|
||||||
#include "definealias.h"
|
#include "definealias.h"
|
||||||
#include "swmotor.h"
|
#include "swmotor.h"
|
||||||
|
#include "hmcontrol.h"
|
||||||
/*----------------------- Server options creation -------------------------*/
|
/*----------------------- Server options creation -------------------------*/
|
||||||
static int IFServerOption(SConnection *pCon, SicsInterp *pSics, void *pData,
|
static int IFServerOption(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
int argc, char *argv[])
|
int argc, char *argv[])
|
||||||
@ -284,6 +282,7 @@
|
|||||||
AddCommand(pInter,"MakeTAS",TASFactory,NULL,NULL);
|
AddCommand(pInter,"MakeTAS",TASFactory,NULL,NULL);
|
||||||
AddCommand(pInter,"MakeSync",MakeSync,NULL,NULL);
|
AddCommand(pInter,"MakeSync",MakeSync,NULL,NULL);
|
||||||
AddCommand(pInter,"MakeSWMotor",MakeSWMotor,NULL,NULL);
|
AddCommand(pInter,"MakeSWMotor",MakeSWMotor,NULL,NULL);
|
||||||
|
AddCommand(pInter,"MakeHMControl",MakeHMControl,NULL,NULL);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void KillIniCommands(SicsInterp *pSics)
|
static void KillIniCommands(SicsInterp *pSics)
|
||||||
@ -339,6 +338,7 @@
|
|||||||
RemoveCommand(pSics,"MakeTAS");
|
RemoveCommand(pSics,"MakeTAS");
|
||||||
RemoveCommand(pSics,"MakeSync");
|
RemoveCommand(pSics,"MakeSync");
|
||||||
RemoveCommand(pSics,"MakeSWMotor");
|
RemoveCommand(pSics,"MakeSWMotor");
|
||||||
|
RemoveCommand(pSics,"MakeHMControl");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,11 +40,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "event.h"
|
|
||||||
#include "servlog.h"
|
#include "servlog.h"
|
||||||
#include "perfmon.h"
|
#include "perfmon.h"
|
||||||
#include "perfmon.i"
|
#include "perfmon.i"
|
||||||
@ -254,4 +250,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
scan.c
4
scan.c
@ -371,7 +371,7 @@ extern void SNXFormatTime(char *pBuffer, int iLen);
|
|||||||
strcat(pInfo,pItem);
|
strcat(pInfo,pItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strcat(pLine,"Counts ");
|
strcat(pLine," Counts ");
|
||||||
strcat(pLine,"Monitor1 ");
|
strcat(pLine,"Monitor1 ");
|
||||||
strcat(pLine,"Monitor2 ");
|
strcat(pLine,"Monitor2 ");
|
||||||
strcat(pLine,"Monitor3 ");
|
strcat(pLine,"Monitor3 ");
|
||||||
@ -411,7 +411,7 @@ extern void SNXFormatTime(char *pBuffer, int iLen);
|
|||||||
pData = (pCountEntry)pPtr;
|
pData = (pCountEntry)pPtr;
|
||||||
if(pData)
|
if(pData)
|
||||||
{
|
{
|
||||||
sprintf(pItem,"%-12ld",pData->lCount);
|
sprintf(pItem," %-12ld",pData->lCount);
|
||||||
strcat(pLine,pItem);
|
strcat(pLine,pItem);
|
||||||
sprintf(pItem,"%-12ld",pData->Monitors[0]);
|
sprintf(pItem,"%-12ld",pData->Monitors[0]);
|
||||||
strcat(pLine,pItem);
|
strcat(pLine,pItem);
|
||||||
|
3
script.c
3
script.c
@ -45,8 +45,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <tcl.h>
|
#include <tcl.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "fupa.h"
|
#include "fupa.h"
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
#include "countdriv.h"
|
#include "countdriv.h"
|
||||||
|
@ -44,11 +44,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "Scommon.h"
|
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
|
7
selvar.c
7
selvar.c
@ -44,17 +44,12 @@
|
|||||||
#include <tcl.h>
|
#include <tcl.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "Scommon.h"
|
|
||||||
#include "obdes.h"
|
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
#include "selector.h"
|
#include "selector.h"
|
||||||
#include "selvar.h"
|
#include "selvar.h"
|
||||||
#include "interface.h"
|
|
||||||
#include "event.h"
|
|
||||||
#define DRIVE "drive"
|
#define DRIVE "drive"
|
||||||
|
|
||||||
#include "selvar.i"
|
#include "selvar.i"
|
||||||
|
9
sics.h
9
sics.h
@ -9,6 +9,12 @@
|
|||||||
-----------------------------------------------------------------------------*/
|
-----------------------------------------------------------------------------*/
|
||||||
#ifndef SICSSICS
|
#ifndef SICSSICS
|
||||||
#define SICSSICS
|
#define SICSSICS
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
eTimer,
|
||||||
|
ePreset
|
||||||
|
}CounterMode;
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -24,6 +30,7 @@
|
|||||||
#include "nserver.h"
|
#include "nserver.h"
|
||||||
#include "servlog.h"
|
#include "servlog.h"
|
||||||
extern pServer pServ;
|
extern pServer pServ;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1,30 +1,9 @@
|
|||||||
a5l.length 80.000000
|
hm3 CountMode timer
|
||||||
flightpathlength 0.000000
|
hm3 preset 50.000000
|
||||||
flightpathlength setAccess 1
|
|
||||||
flightpath 0.000000
|
|
||||||
flightpath setAccess 1
|
|
||||||
delay 2500.000000
|
|
||||||
delay setAccess 1
|
|
||||||
hm CountMode timer
|
|
||||||
hm preset 100.000000
|
|
||||||
hm genbin 120.000000 35.000000 512
|
|
||||||
hm init
|
|
||||||
datafile focus-1001848.hdf
|
|
||||||
datafile setAccess 3
|
|
||||||
hm2 CountMode timer
|
hm2 CountMode timer
|
||||||
hm2 preset 100.000000
|
hm2 preset 50.000000
|
||||||
hm1 CountMode timer
|
hm1 CountMode timer
|
||||||
hm1 preset 100.000000
|
hm1 preset 50.000000
|
||||||
dbfile UNKNOWN
|
|
||||||
dbfile setAccess 2
|
|
||||||
# Motor th
|
|
||||||
th SoftZero 0.000000
|
|
||||||
th SoftLowerLim -120.000000
|
|
||||||
th SoftUpperLim 120.000000
|
|
||||||
th Fixed -1.000000
|
|
||||||
th sign 1.000000
|
|
||||||
th InterruptMode 0.000000
|
|
||||||
th AccessCode 2.000000
|
|
||||||
#Crystallographic Settings
|
#Crystallographic Settings
|
||||||
hkl lambda 0.703790
|
hkl lambda 0.703790
|
||||||
hkl setub -0.124702 0.001618 -0.041357 -0.104448 -0.001326 0.049388 0.000751 0.084094 0.001574
|
hkl setub -0.124702 0.001618 -0.041357 -0.104448 -0.001326 0.049388 0.000751 0.084094 0.001574
|
||||||
@ -148,8 +127,6 @@ twotheta InterruptMode 0.000000
|
|||||||
twotheta AccessCode 2.000000
|
twotheta AccessCode 2.000000
|
||||||
lastscancommand UNKNOWN
|
lastscancommand UNKNOWN
|
||||||
lastscancommand setAccess 2
|
lastscancommand setAccess 2
|
||||||
banana CountMode timer
|
|
||||||
banana preset 2.000000
|
|
||||||
sample_mur 0.000000
|
sample_mur 0.000000
|
||||||
sample_mur setAccess 2
|
sample_mur setAccess 2
|
||||||
email UNKNOWN
|
email UNKNOWN
|
||||||
@ -161,7 +138,7 @@ phone setAccess 2
|
|||||||
adress UNKNOWN
|
adress UNKNOWN
|
||||||
adress setAccess 2
|
adress setAccess 2
|
||||||
# Counter counter
|
# Counter counter
|
||||||
counter SetPreset 10.000000
|
counter SetPreset 50.000000
|
||||||
counter SetMode Timer
|
counter SetMode Timer
|
||||||
# Motor som
|
# Motor som
|
||||||
som SoftZero 0.000000
|
som SoftZero 0.000000
|
||||||
@ -433,5 +410,5 @@ sample DanielOxid
|
|||||||
sample setAccess 2
|
sample setAccess 2
|
||||||
title TopsiTupsiTapsi
|
title TopsiTupsiTapsi
|
||||||
title setAccess 2
|
title setAccess 2
|
||||||
starttime 2001-03-12 14:55:05
|
starttime 2001-06-06 14:23:05
|
||||||
starttime setAccess 2
|
starttime setAccess 2
|
||||||
|
6
sicvar.c
6
sicvar.c
@ -39,14 +39,10 @@
|
|||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "Scommon.h"
|
#include "sics.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "SCinter.h"
|
|
||||||
#include "conman.h"
|
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "status.h"
|
#include "status.h"
|
||||||
#include "interface.h"
|
|
||||||
#include "event.h"
|
|
||||||
#include "sicsvar.h"
|
#include "sicsvar.h"
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "Scommon.h"
|
#include "sics.h"
|
||||||
#include "countdriv.h"
|
#include "countdriv.h"
|
||||||
/*---------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------
|
||||||
A SIMCOUNTER HAS a BUILT IN FAILURE RATE OF 10% FOR TESTING ERROR HANDLING
|
A SIMCOUNTER HAS a BUILT IN FAILURE RATE OF 10% FOR TESTING ERROR HANDLING
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#define MAX_CLIENTS 8 /* The maximum number of active clients */
|
#define MAX_CLIENTS 8 /* The maximum number of active clients */
|
||||||
#define MAX_TOF_CNTR 1024 /* The maximum number of individual counters ..
|
#define MAX_TOF_CNTR 1024 /* The maximum number of individual counters ..
|
||||||
** which can be handled in TOF mode */
|
** which can be handled in TOF mode */
|
||||||
#define MAX_PSD_CNTR 65536 /* maximum number of PSD elements */
|
#define MAX_PSD_CNTR 1048576 /* maximum number of PSD elements */
|
||||||
#define MAX_TOF_NBINS 32768 /* The maximum number of bins in a TOF histog */
|
#define MAX_TOF_NBINS 32768 /* The maximum number of bins in a TOF histog */
|
||||||
#define MAX_TOF_EDGE 16 /* The maximum number of TOF edge arrays */
|
#define MAX_TOF_EDGE 16 /* The maximum number of TOF edge arrays */
|
||||||
#define VMIO_BASE_ADDR 0x1900 /* VME address of a (possible) VMIO10 module */
|
#define VMIO_BASE_ADDR 0x1900 /* VME address of a (possible) VMIO10 module */
|
||||||
|
@ -168,6 +168,7 @@
|
|||||||
taskDelay (0); /* If FIFO is empty, we can take a breather! */
|
taskDelay (0); /* If FIFO is empty, we can take a breather! */
|
||||||
}else if ((lwl_hdr.ui4 & LWL_HDR_TYPE_MASK) == LWL_HM_NC_C1) {
|
}else if ((lwl_hdr.ui4 & LWL_HDR_TYPE_MASK) == LWL_HM_NC_C1) {
|
||||||
VmioBase[VMIO_PORT_A] = 0xff; /* Set timer level (if present) */
|
VmioBase[VMIO_PORT_A] = 0xff; /* Set timer level (if present) */
|
||||||
|
|
||||||
|
|
||||||
for (i=0; i<1000000; i++) {
|
for (i=0; i<1000000; i++) {
|
||||||
lwl_data.ui4 = *Lwl_fifo; /* Get the 16 bits of data */
|
lwl_data.ui4 = *Lwl_fifo; /* Get the 16 bits of data */
|
||||||
@ -176,7 +177,7 @@
|
|||||||
}
|
}
|
||||||
taskDelay (0); /* But wait if FIFO is slow! */
|
taskDelay (0); /* But wait if FIFO is slow! */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lwl_data.ui4 == LWL_FIFO_EMPTY) {
|
if (lwl_data.ui4 == LWL_FIFO_EMPTY) {
|
||||||
printf ("Time-out getting histogram data word! Event # = %d\n",
|
printf ("Time-out getting histogram data word! Event # = %d\n",
|
||||||
N_events);
|
N_events);
|
||||||
@ -255,7 +256,6 @@
|
|||||||
*/
|
*/
|
||||||
}else { /* Anything else gets flushed */
|
}else { /* Anything else gets flushed */
|
||||||
lwl_Packet_Read (lwl_hdr.ui4, my_buff);
|
lwl_Packet_Read (lwl_hdr.ui4, my_buff);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if (FillTimer_expired) { */
|
/* if (FillTimer_expired) { */
|
||||||
@ -809,8 +809,8 @@
|
|||||||
if(yPos >= 32767)
|
if(yPos >= 32767)
|
||||||
yPos -= 65536;
|
yPos -= 65536;
|
||||||
|
|
||||||
xPos = (xPos + psdXOffset)/psdXFactor;
|
xPos = xPos/psdXFactor + psdXOffset;
|
||||||
yPos = (yPos + psdYOffset)/psdYFactor;
|
yPos = yPos/psdYFactor + psdYOffset;
|
||||||
if(xPos < 0 || xPos > psdXSize)
|
if(xPos < 0 || xPos > psdXSize)
|
||||||
{
|
{
|
||||||
printf("X position out of range: %d, alllowed 0 - %d\n",
|
printf("X position out of range: %d, alllowed 0 - %d\n",
|
||||||
|
@ -44,10 +44,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "SCinter.h"
|
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "countdriv.h"
|
#include "countdriv.h"
|
||||||
#include "counter.h"
|
#include "counter.h"
|
||||||
#include "HistMem.h"
|
#include "HistMem.h"
|
||||||
|
3
status.c
3
status.c
@ -41,11 +41,10 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "status.h"
|
#include "status.h"
|
||||||
#include "interrupt.h"
|
#include "interrupt.h"
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
#include "interface.h"
|
|
||||||
#define VALUECHANGE 2
|
#define VALUECHANGE 2
|
||||||
|
|
||||||
static Status eCode = eEager;
|
static Status eCode = eEager;
|
||||||
|
@ -43,10 +43,8 @@
|
|||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <tcl.h>
|
#include <tcl.h>
|
||||||
#include "fortify.h"
|
#include "fortify.h"
|
||||||
#include "conman.h"
|
#include "sics.h"
|
||||||
#include "splitter.h"
|
#include "splitter.h"
|
||||||
#include "obdes.h"
|
|
||||||
#include "interface.h"
|
|
||||||
#include "obpar.h"
|
#include "obpar.h"
|
||||||
#include "devexec.h"
|
#include "devexec.h"
|
||||||
#include "nserver.h"
|
#include "nserver.h"
|
||||||
|
@ -72,7 +72,7 @@ frametilt = /$(framename),NXentry/TRICS,NXinstrument/$(dnumber),NXdetector/SDS
|
|||||||
-attr {units,degrees}
|
-attr {units,degrees}
|
||||||
framecounts = /$(framename),NXentry/TRICS,NXinstrument/$(dnumber),NXdetector/SDS counts \
|
framecounts = /$(framename),NXentry/TRICS,NXinstrument/$(dnumber),NXdetector/SDS counts \
|
||||||
-attr {signal,1} -attr {units,counts} -type DFNT_INT32 \
|
-attr {signal,1} -attr {units,counts} -type DFNT_INT32 \
|
||||||
-LZW -rank 2 -dim {$(framedim1),$(framedim2)}
|
-rank 2 -dim {$(framedim1),$(framedim2)}
|
||||||
detzerox = \
|
detzerox = \
|
||||||
/frame0000,NXentry/TRICS,NXinstrument/$(dnumber),NXdetector/SDS x_zero_point \
|
/frame0000,NXentry/TRICS,NXinstrument/$(dnumber),NXdetector/SDS x_zero_point \
|
||||||
-attr {units,pixel}
|
-attr {units,pixel}
|
||||||
|
Reference in New Issue
Block a user