- Fixes to NXscript
- Added Pause and Continue commands - Fixed simulation counter to deal properly with pause - Fixed nxdict HDF5 problem SKIPPED: psi/makefile_alpha psi/nextrics.c psi/nxsans.c
This commit is contained in:
50
devexec.c
50
devexec.c
@ -648,7 +648,7 @@
|
|||||||
assert(self);
|
assert(self);
|
||||||
|
|
||||||
/* step through the list */
|
/* step through the list */
|
||||||
iRes = 0;
|
iRes = 1;
|
||||||
iRet = LLDnodePtr2First(self->iList);
|
iRet = LLDnodePtr2First(self->iList);
|
||||||
while(iRet != 0)
|
while(iRet != 0)
|
||||||
{
|
{
|
||||||
@ -706,7 +706,7 @@
|
|||||||
assert(self);
|
assert(self);
|
||||||
|
|
||||||
/* step through the list */
|
/* step through the list */
|
||||||
iRes = 0;
|
iRes = 1;
|
||||||
iRet = LLDnodePtr2First(self->iList);
|
iRet = LLDnodePtr2First(self->iList);
|
||||||
while(iRet != 0)
|
while(iRet != 0)
|
||||||
{
|
{
|
||||||
@ -775,7 +775,7 @@
|
|||||||
assert(pData);
|
assert(pData);
|
||||||
|
|
||||||
/* check Privilege: Muggers may do it */
|
/* check Privilege: Muggers may do it */
|
||||||
if(!SCMatchRights(pCon,usMugger))
|
if(!SCMatchRights(pCon,usUser))
|
||||||
{
|
{
|
||||||
SCWrite(pCon,"ERROR: NO Privilege to Stop operation ",eError);
|
SCWrite(pCon,"ERROR: NO Privilege to Stop operation ",eError);
|
||||||
return 0;
|
return 0;
|
||||||
@ -838,6 +838,50 @@
|
|||||||
SetStatus(eEager);
|
SetStatus(eEager);
|
||||||
return iRet;
|
return iRet;
|
||||||
}
|
}
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
int PauseAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
|
int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
|
||||||
|
status = PauseExecution((pExeList)pData);
|
||||||
|
if(status)
|
||||||
|
{
|
||||||
|
SCSendOK(pCon);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SCWrite(pCon,"ERROR: failed to pause",eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
int ContinueAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
|
int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
Status eStat;
|
||||||
|
|
||||||
|
eStat = GetStatus();
|
||||||
|
if(eStat != ePaused)
|
||||||
|
{
|
||||||
|
SCWrite(pCon,"ERROR: Not paused, ignored",eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = ContinueExecution((pExeList)pData);
|
||||||
|
if(status)
|
||||||
|
{
|
||||||
|
SCSendOK(pCon);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SCWrite(pCon,"ERROR: failed to pause",eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
int isInRunMode(pExeList self)
|
int isInRunMode(pExeList self)
|
||||||
|
13
devexec.h
13
devexec.h
@ -137,6 +137,17 @@
|
|||||||
connection with non blocking operation such as motors started
|
connection with non blocking operation such as motors started
|
||||||
with run.
|
with run.
|
||||||
*/
|
*/
|
||||||
|
int PauseAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
|
int argc, char *argv[]);
|
||||||
|
/*
|
||||||
|
pauses execution
|
||||||
|
*/
|
||||||
|
int ContinueAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
|
int argc, char *argv[]);
|
||||||
|
/*
|
||||||
|
continues execution
|
||||||
|
*/
|
||||||
|
|
||||||
/*--------------------------- Locking ---------------------------------*/
|
/*--------------------------- Locking ---------------------------------*/
|
||||||
|
|
||||||
#line 183 "devexec.w"
|
#line 183 "devexec.w"
|
||||||
@ -145,7 +156,7 @@
|
|||||||
void UnlockDeviceExecutor(pExeList self);
|
void UnlockDeviceExecutor(pExeList self);
|
||||||
|
|
||||||
|
|
||||||
#line 281 "devexec.w"
|
#line 292 "devexec.w"
|
||||||
|
|
||||||
/* -------------------------- Executor management -------------------------*/
|
/* -------------------------- Executor management -------------------------*/
|
||||||
|
|
||||||
|
11
devexec.tex
11
devexec.tex
@ -331,6 +331,17 @@ to the global SICS device executor.
|
|||||||
\mbox{}\verb@ connection with non blocking operation such as motors started@\\
|
\mbox{}\verb@ connection with non blocking operation such as motors started@\\
|
||||||
\mbox{}\verb@ with run.@\\
|
\mbox{}\verb@ with run.@\\
|
||||||
\mbox{}\verb@ */@\\
|
\mbox{}\verb@ */@\\
|
||||||
|
\mbox{}\verb@ int PauseAction(SConnection *pCon, SicsInterp *pSics, void *pData,@\\
|
||||||
|
\mbox{}\verb@ int argc, char *argv[]);@\\
|
||||||
|
\mbox{}\verb@ /*@\\
|
||||||
|
\mbox{}\verb@ pauses execution@\\
|
||||||
|
\mbox{}\verb@ */@\\
|
||||||
|
\mbox{}\verb@ int ContinueAction(SConnection *pCon, SicsInterp *pSics, void *pData,@\\
|
||||||
|
\mbox{}\verb@ int argc, char *argv[]);@\\
|
||||||
|
\mbox{}\verb@ /*@\\
|
||||||
|
\mbox{}\verb@ continues execution@\\
|
||||||
|
\mbox{}\verb@ */ @\\
|
||||||
|
\mbox{}\verb@ @\\
|
||||||
\mbox{}\verb@/*--------------------------- Locking ---------------------------------*/@\\
|
\mbox{}\verb@/*--------------------------- Locking ---------------------------------*/@\\
|
||||||
\mbox{}\verb@ @$\langle$devlock {\footnotesize ?}$\rangle$\verb@ @\\
|
\mbox{}\verb@ @$\langle$devlock {\footnotesize ?}$\rangle$\verb@ @\\
|
||||||
\mbox{}\verb@/* -------------------------- Executor management -------------------------*/@\\
|
\mbox{}\verb@/* -------------------------- Executor management -------------------------*/@\\
|
||||||
|
11
devexec.w
11
devexec.w
@ -277,6 +277,17 @@ to the global SICS device executor.
|
|||||||
connection with non blocking operation such as motors started
|
connection with non blocking operation such as motors started
|
||||||
with run.
|
with run.
|
||||||
*/
|
*/
|
||||||
|
int PauseAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
|
int argc, char *argv[]);
|
||||||
|
/*
|
||||||
|
pauses execution
|
||||||
|
*/
|
||||||
|
int ContinueAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
|
int argc, char *argv[]);
|
||||||
|
/*
|
||||||
|
continues execution
|
||||||
|
*/
|
||||||
|
|
||||||
/*--------------------------- Locking ---------------------------------*/
|
/*--------------------------- Locking ---------------------------------*/
|
||||||
@<devlock@>
|
@<devlock@>
|
||||||
/* -------------------------- Executor management -------------------------*/
|
/* -------------------------- Executor management -------------------------*/
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
\begin{huge}
|
\begin{huge}
|
||||||
SICS Master User Manual\\
|
SICS Master User Manual\\
|
||||||
\end{huge}
|
\end{huge}
|
||||||
\today\\
|
\today \\
|
||||||
Dr. Mark K\"onnecke \\
|
Dr. Mark K\"onnecke \\
|
||||||
Labor f\"ur Neutronenstreuung\\
|
Labor f\"ur Neutronenstreuung\\
|
||||||
Paul Scherrer Institut\\
|
Paul Scherrer Institut\\
|
||||||
|
3
napi5.c
3
napi5.c
@ -1112,6 +1112,9 @@ NXstatus CALLING_STYLE NX5closegroup (NXhandle fid);
|
|||||||
strcat(sLink->iTag5,sLink->iRefd);
|
strcat(sLink->iTag5,sLink->iRefd);
|
||||||
}
|
}
|
||||||
status = H5Glink(pFile->iFID, H5G_LINK_HARD, sLink->iRef5, sLink->iTag5);
|
status = H5Glink(pFile->iFID, H5G_LINK_HARD, sLink->iRef5, sLink->iTag5);
|
||||||
|
if(status < 0){
|
||||||
|
return NX_ERROR;
|
||||||
|
}
|
||||||
return NX_OK;
|
return NX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
100
nxdict.c
100
nxdict.c
@ -37,7 +37,6 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <mfhdf.h>
|
|
||||||
#include "lld.h"
|
#include "lld.h"
|
||||||
#include "napi.h"
|
#include "napi.h"
|
||||||
#include "stringdict.h"
|
#include "stringdict.h"
|
||||||
@ -546,6 +545,31 @@
|
|||||||
#endif
|
#endif
|
||||||
return pReplaced;
|
return pReplaced;
|
||||||
}
|
}
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
NXstatus NXDdefget(NXdict handle, char *pKey, char *pBuffer, int iBufLen)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
pDynString pRep = NULL;
|
||||||
|
|
||||||
|
status = NXDget(handle,pKey,pBuffer,iBufLen);
|
||||||
|
if(status != NX_OK)
|
||||||
|
{
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
pRep = NXDItextreplace(handle,pBuffer);
|
||||||
|
if(pRep)
|
||||||
|
{
|
||||||
|
strncpy(pBuffer,GetCharArray(pRep),iBufLen);
|
||||||
|
status = NX_OK;
|
||||||
|
DeleteDynString(pRep);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
status = NX_ERROR;
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
}
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
NXstatus NXDtextreplace(NXdict handle, char *pDefString,
|
NXstatus NXDtextreplace(NXdict handle, char *pDefString,
|
||||||
char *pBuffer, int iBufLen)
|
char *pBuffer, int iBufLen)
|
||||||
@ -869,7 +893,7 @@
|
|||||||
int iRet, i;
|
int iRet, i;
|
||||||
|
|
||||||
/* initialise dimensions to 0 */
|
/* initialise dimensions to 0 */
|
||||||
for(i = 0; i < MAX_VAR_DIMS; i++)
|
for(i = 0; i < NX_MAXRANK; i++)
|
||||||
{
|
{
|
||||||
iDim[i] = 0;
|
iDim[i] = 0;
|
||||||
}
|
}
|
||||||
@ -912,15 +936,24 @@
|
|||||||
}
|
}
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
static TokDat tDatType[] = {
|
static TokDat tDatType[] = {
|
||||||
{"DFNT_FLOAT32",DFNT_FLOAT32},
|
{"DFNT_FLOAT32",NX_FLOAT32},
|
||||||
{"DFNT_FLOAT64",DFNT_FLOAT64},
|
{"DFNT_FLOAT64",NX_FLOAT64},
|
||||||
{"DFNT_INT8",DFNT_INT8},
|
{"DFNT_INT8",NX_INT8},
|
||||||
{"DFNT_UINT8",DFNT_UINT8},
|
{"DFNT_UINT8",NX_UINT8},
|
||||||
{"DFNT_INT16",DFNT_INT16},
|
{"DFNT_INT16",NX_INT16},
|
||||||
{"DFNT_UINT16",DFNT_UINT16},
|
{"DFNT_UINT16",NX_UINT16},
|
||||||
{"DFNT_INT32",DFNT_INT32},
|
{"DFNT_INT32",NX_INT32},
|
||||||
{"DFNT_UINT32",DFNT_UINT32},
|
{"DFNT_UINT32",NX_UINT32},
|
||||||
{"DFNT_CHAR",DFNT_CHAR},
|
{"DFNT_CHAR",NX_CHAR},
|
||||||
|
{"NX_FLOAT32",NX_FLOAT32},
|
||||||
|
{"NX_FLOAT64",NX_FLOAT64},
|
||||||
|
{"NX_INT8",NX_INT8},
|
||||||
|
{"NX_UINT8",NX_UINT8},
|
||||||
|
{"NX_INT16",NX_INT16},
|
||||||
|
{"NX_UINT16",NX_UINT16},
|
||||||
|
{"NX_INT32",NX_INT32},
|
||||||
|
{"NX_UINT32",NX_UINT32},
|
||||||
|
{"NX_CHAR",NX_CHAR},
|
||||||
{NULL,-122} };
|
{NULL,-122} };
|
||||||
|
|
||||||
|
|
||||||
@ -959,14 +992,14 @@
|
|||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
static int NXDIParseSDS(NXhandle hfil, ParDat *pParse)
|
static int NXDIParseSDS(NXhandle hfil, ParDat *pParse)
|
||||||
{
|
{
|
||||||
int iType = DFNT_FLOAT32;
|
int iType = NX_FLOAT32;
|
||||||
int iRank = 1;
|
int iRank = 1;
|
||||||
int iCompress = NX_COMP_NONE;
|
int iCompress = NX_COMP_NONE;
|
||||||
int32 iDim[MAX_VAR_DIMS], iChunk[MAX_VAR_DIMS];
|
int iDim[NX_MAXRANK], iChunk[NX_MAXRANK];
|
||||||
int iList, iChunkDefined = 0 ;
|
int iList, iChunkDefined = 0 ;
|
||||||
int iRet, iStat, i;
|
int iRet, iStat, i;
|
||||||
char pError[256];
|
char pError[256];
|
||||||
char pName[MAX_NC_NAME];
|
char pName[NX_MAXNAMELEN];
|
||||||
void (*ErrFunc)(void *pData, char *pErr);
|
void (*ErrFunc)(void *pData, char *pErr);
|
||||||
AttItem sAtt;
|
AttItem sAtt;
|
||||||
|
|
||||||
@ -1836,7 +1869,7 @@
|
|||||||
return iRet;
|
return iRet;
|
||||||
}
|
}
|
||||||
iRet = NXputattr(hFil, "Units",pUnits,
|
iRet = NXputattr(hFil, "Units",pUnits,
|
||||||
strlen(pUnits) + 1,DFNT_INT8);
|
strlen(pUnits) + 1,NX_INT8);
|
||||||
if(iRet != NX_OK)
|
if(iRet != NX_OK)
|
||||||
{
|
{
|
||||||
/* a comment on this one has already been written! */
|
/* a comment on this one has already been written! */
|
||||||
@ -1848,7 +1881,7 @@
|
|||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
NXstatus NXUallocSDS(NXhandle hFil, void **pData)
|
NXstatus NXUallocSDS(NXhandle hFil, void **pData)
|
||||||
{
|
{
|
||||||
int iDIM[MAX_VAR_DIMS];
|
int iDIM[NX_MAXRANK];
|
||||||
int iRank,iType;
|
int iRank,iType;
|
||||||
int iRet, i;
|
int iRet, i;
|
||||||
long lLength;
|
long lLength;
|
||||||
@ -1868,31 +1901,30 @@
|
|||||||
}
|
}
|
||||||
switch(iType)
|
switch(iType)
|
||||||
{
|
{
|
||||||
case DFNT_FLOAT32:
|
case NX_FLOAT32:
|
||||||
lLength *= sizeof(float32);
|
lLength *= sizeof(float);
|
||||||
break;
|
break;
|
||||||
case DFNT_FLOAT64:
|
case NX_FLOAT64:
|
||||||
lLength *= sizeof(float64);
|
lLength *= sizeof(double);
|
||||||
break;
|
break;
|
||||||
case DFNT_INT8:
|
case NX_INT8:
|
||||||
case DFNT_CHAR:
|
case NX_CHAR:
|
||||||
case DFNT_UCHAR8:
|
lLength *= sizeof(char);
|
||||||
lLength *= sizeof(int8);
|
|
||||||
break;
|
break;
|
||||||
case DFNT_UINT8:
|
case NX_UINT8:
|
||||||
lLength *= sizeof(uint8);
|
lLength *= sizeof(unsigned char);
|
||||||
break;
|
break;
|
||||||
case DFNT_INT16:
|
case NX_INT16:
|
||||||
lLength *= sizeof(int16);
|
lLength *= sizeof(short);
|
||||||
break;
|
break;
|
||||||
case DFNT_UINT16:
|
case NX_UINT16:
|
||||||
lLength *= sizeof(uint16);
|
lLength *= sizeof(unsigned short);
|
||||||
break;
|
break;
|
||||||
case DFNT_INT32:
|
case NX_INT32:
|
||||||
lLength *= sizeof(int32);
|
lLength *= sizeof(int);
|
||||||
break;
|
break;
|
||||||
case DFNT_UINT32:
|
case NX_UINT32:
|
||||||
lLength *= sizeof(uint32);
|
lLength *= sizeof(int);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
NXIReportError(NXpData,"ERROR: Internal: number type not recoginized");
|
NXIReportError(NXpData,"ERROR: Internal: number type not recoginized");
|
||||||
|
1
nxdict.h
1
nxdict.h
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
NXstatus NXDadd(NXdict handle, char *alias, char *DefString);
|
NXstatus NXDadd(NXdict handle, char *alias, char *DefString);
|
||||||
NXstatus NXDget(NXdict handle, char *alias, char *pBuffer, int iBufLen);
|
NXstatus NXDget(NXdict handle, char *alias, char *pBuffer, int iBufLen);
|
||||||
|
NXstatus NXDdefget(NXdict handle, char *alias, char *pBuffer, int iBufLen);
|
||||||
NXstatus NXDupdate(NXdict handle, char *alias, char *pNewVal);
|
NXstatus NXDupdate(NXdict handle, char *alias, char *pNewVal);
|
||||||
NXstatus NXDtextreplace(NXdict handle, char *pDefString, char *pBuffer,
|
NXstatus NXDtextreplace(NXdict handle, char *pDefString, char *pBuffer,
|
||||||
int iBuflen);
|
int iBuflen);
|
||||||
|
45
nxscript.c
45
nxscript.c
@ -7,6 +7,7 @@
|
|||||||
copyright: see file COPYRIGHT
|
copyright: see file COPYRIGHT
|
||||||
|
|
||||||
Mark Koennecke, February 2003
|
Mark Koennecke, February 2003
|
||||||
|
Mark Koennecke, January 2004
|
||||||
------------------------------------------------------------------------*/
|
------------------------------------------------------------------------*/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -125,6 +126,10 @@ static int handleFileOperations(SConnection *pCon, pNXScript self,
|
|||||||
close everything! and send a message to trigger file synchronisation
|
close everything! and send a message to trigger file synchronisation
|
||||||
to the central server
|
to the central server
|
||||||
*/
|
*/
|
||||||
|
if(self->fileHandle == NULL){
|
||||||
|
SCSendOK(pCon);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
i = 511;
|
i = 511;
|
||||||
iVal = NX_CHAR;
|
iVal = NX_CHAR;
|
||||||
NXgetattr(self->fileHandle,"file_name",buffer,&i,&iVal);
|
NXgetattr(self->fileHandle,"file_name",buffer,&i,&iVal);
|
||||||
@ -139,8 +144,10 @@ static int handleFileOperations(SConnection *pCon, pNXScript self,
|
|||||||
access = NXACC_RDWR;
|
access = NXACC_RDWR;
|
||||||
} else if(strcmp(argv[1],"create4") == 0){
|
} else if(strcmp(argv[1],"create4") == 0){
|
||||||
access = NXACC_CREATE4;
|
access = NXACC_CREATE4;
|
||||||
|
unlink(argv[2]); /* kill file for overwrite */
|
||||||
} else if(strcmp(argv[1],"create5") == 0){
|
} else if(strcmp(argv[1],"create5") == 0){
|
||||||
access = NXACC_CREATE5;
|
access = NXACC_CREATE5;
|
||||||
|
unlink(argv[2]); /* kill file for overwrite */
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -163,7 +170,6 @@ static int handleFileOperations(SConnection *pCon, pNXScript self,
|
|||||||
/*
|
/*
|
||||||
now initialize ourselves
|
now initialize ourselves
|
||||||
*/
|
*/
|
||||||
unlink(argv[2]); /* kill file for overwrite */
|
|
||||||
status = NXopen(argv[2],access,&self->fileHandle);
|
status = NXopen(argv[2],access,&self->fileHandle);
|
||||||
if(status != NX_OK){
|
if(status != NX_OK){
|
||||||
sprintf(buffer,"ERROR: failed to open %s",argv[2]);
|
sprintf(buffer,"ERROR: failed to open %s",argv[2]);
|
||||||
@ -223,7 +229,7 @@ static void putMotor(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
|||||||
*/
|
*/
|
||||||
strcpy(buffer,argv[2]);
|
strcpy(buffer,argv[2]);
|
||||||
strcat(buffer,"_null");
|
strcat(buffer,"_null");
|
||||||
if(NXDget(self->dictHandle,buffer,dummy,255)){
|
if(NXDdefget(self->dictHandle,buffer,dummy,255)){
|
||||||
MotorGetPar(brumm,"softzero",&fVal);
|
MotorGetPar(brumm,"softzero",&fVal);
|
||||||
status = NXDputalias(self->fileHandle,self->dictHandle,buffer, &fVal);
|
status = NXDputalias(self->fileHandle,self->dictHandle,buffer, &fVal);
|
||||||
if(status != NX_OK){
|
if(status != NX_OK){
|
||||||
@ -295,7 +301,7 @@ static void putCounter(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
|||||||
fVal = GetCountTime(cter,pCon);
|
fVal = GetCountTime(cter,pCon);
|
||||||
strcpy(newAlias,argv[2]);
|
strcpy(newAlias,argv[2]);
|
||||||
strcat(newAlias,"_time");
|
strcat(newAlias,"_time");
|
||||||
if(NXDget(self->dictHandle,newAlias,dummy,79)){
|
if(NXDdefget(self->dictHandle,newAlias,dummy,79)){
|
||||||
status = NXDputalias(self->fileHandle,self->dictHandle,newAlias,&fVal);
|
status = NXDputalias(self->fileHandle,self->dictHandle,newAlias,&fVal);
|
||||||
if(status != NX_OK){
|
if(status != NX_OK){
|
||||||
sprintf(buffer,"ERROR: failed to write count time to %s", newAlias);
|
sprintf(buffer,"ERROR: failed to write count time to %s", newAlias);
|
||||||
@ -309,7 +315,7 @@ static void putCounter(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
|||||||
*/
|
*/
|
||||||
for(i = 0; i < 10; i++){
|
for(i = 0; i < 10; i++){
|
||||||
sprintf(newAlias,"%s_%2.2d",argv[2],i);
|
sprintf(newAlias,"%s_%2.2d",argv[2],i);
|
||||||
if(NXDget(self->dictHandle,newAlias,dummy,79)){
|
if(NXDdefget(self->dictHandle,newAlias,dummy,79)){
|
||||||
counts = GetMonitor(cter,i,pCon);
|
counts = GetMonitor(cter,i,pCon);
|
||||||
icounts = (int)counts;
|
icounts = (int)counts;
|
||||||
status = NXDputalias(self->fileHandle,self->dictHandle,newAlias,
|
status = NXDputalias(self->fileHandle,self->dictHandle,newAlias,
|
||||||
@ -583,7 +589,7 @@ static void putTimeBinning(SConnection *pCon, SicsInterp *pSics,
|
|||||||
/*
|
/*
|
||||||
build definition string
|
build definition string
|
||||||
*/
|
*/
|
||||||
status = NXDget(self->dictHandle,argv[2],buffer,254);
|
status = NXDdefget(self->dictHandle,argv[2],buffer,254);
|
||||||
if(!status){
|
if(!status){
|
||||||
sprintf(buffer,"ERROR: alias %s for time binning not found",
|
sprintf(buffer,"ERROR: alias %s for time binning not found",
|
||||||
argv[2]);
|
argv[2]);
|
||||||
@ -661,7 +667,7 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
|||||||
}
|
}
|
||||||
data[i] = (float)dVal;
|
data[i] = (float)dVal;
|
||||||
} else {
|
} else {
|
||||||
sprintf(buffer,"WARNING: failed to find array element %d", i);
|
snprintf(buffer,254,"WARNING: failed to find array element %d", i);
|
||||||
SCWrite(pCon,buffer,eError);
|
SCWrite(pCon,buffer,eError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -669,7 +675,7 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
|||||||
/*
|
/*
|
||||||
build definition string
|
build definition string
|
||||||
*/
|
*/
|
||||||
status = NXDget(self->dictHandle,argv[2],buffer,254);
|
status = NXDdefget(self->dictHandle,argv[2],buffer,254);
|
||||||
if(!status){
|
if(!status){
|
||||||
sprintf(buffer,"ERROR: alias %s for array not found",
|
sprintf(buffer,"ERROR: alias %s for array not found",
|
||||||
argv[2]);
|
argv[2]);
|
||||||
@ -677,7 +683,7 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
|||||||
free(data);
|
free(data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sprintf(defString,"%s -dim {%d} ",buffer,length);
|
snprintf(defString,511,"%s -dim {%d} ",buffer,length);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
write it!
|
write it!
|
||||||
@ -750,7 +756,7 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
Arg2Text(argc-3,&argv[3],buffer,1023);
|
Arg2Text(argc-3,&argv[3],buffer,1023);
|
||||||
status = NXDget(self->dictHandle,argv[2],defString,1023);
|
status = NXDdefget(self->dictHandle,argv[2],defString,1023);
|
||||||
if(status != NX_OK){
|
if(status != NX_OK){
|
||||||
sprintf(buffer,"ERROR: alias %s not found in puttext",
|
sprintf(buffer,"ERROR: alias %s not found in puttext",
|
||||||
argv[2]);
|
argv[2]);
|
||||||
@ -822,7 +828,23 @@ static void makeLink(SConnection *pCon, SicsInterp *pSics,
|
|||||||
|
|
||||||
SCSendOK(pCon);
|
SCSendOK(pCon);
|
||||||
}
|
}
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
static void updateDictVar(SConnection *pCon, pNXScript self, int argc,
|
||||||
|
char *argv[]){
|
||||||
|
int status;
|
||||||
|
|
||||||
|
if(self->dictHandle == NULL){
|
||||||
|
SCWrite(pCon,"ERROR: cannot update variable, dictionary not open",
|
||||||
|
eError);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(argc < 4){
|
||||||
|
SCWrite(pCon,"ERROR: insufficient number of arguments to updateDictVar",
|
||||||
|
eError);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NXDupdate(self->dictHandle,argv[2],argv[3]);
|
||||||
|
}
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
int NXScriptAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
int NXScriptAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
int argc, char *argv[]){
|
int argc, char *argv[]){
|
||||||
@ -865,6 +887,11 @@ int NXScriptAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(strcmp(argv[1],"updatedictvar") == 0){
|
||||||
|
updateDictVar(pCon,self,argc,argv);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if(strstr(argv[1],"put") != NULL){
|
if(strstr(argv[1],"put") != NULL){
|
||||||
handlePut(pCon,pSics,self,argc,argv);
|
handlePut(pCon,pSics,self,argc,argv);
|
||||||
return 1;
|
return 1;
|
||||||
|
2
ofac.c
2
ofac.c
@ -234,6 +234,8 @@
|
|||||||
AddCommand(pInter,"StopExe",StopCommand,DeleteExeList, pExe);
|
AddCommand(pInter,"StopExe",StopCommand,DeleteExeList, pExe);
|
||||||
AddCommand(pInter,"ListExe",ListExe,NULL,pExe);
|
AddCommand(pInter,"ListExe",ListExe,NULL,pExe);
|
||||||
AddCommand(pInter,"Success",Success,NULL,pExe);
|
AddCommand(pInter,"Success",Success,NULL,pExe);
|
||||||
|
AddCommand(pInter,"pause",PauseAction,NULL,pExe);
|
||||||
|
AddCommand(pInter,"continue",ContinueAction,NULL,pExe);
|
||||||
|
|
||||||
/* add additional object creation commands here */
|
/* add additional object creation commands here */
|
||||||
AddCommand(pInter,"TokenInit",TokenInit,NULL,NULL);
|
AddCommand(pInter,"TokenInit",TokenInit,NULL,NULL);
|
||||||
|
@ -474,7 +474,8 @@ end:
|
|||||||
sprintf(pBueffel,"%s.%s = %f",argv[0],pName,pPar->fVal);
|
sprintf(pBueffel,"%s.%s = %f",argv[0],pName,pPar->fVal);
|
||||||
SCWrite(pCon,pBueffel,eValue);
|
SCWrite(pCon,pBueffel,eValue);
|
||||||
iRet = 1;
|
iRet = 1;
|
||||||
goto end;
|
DeleteTokenList(pList);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end:
|
end:
|
||||||
|
@ -84,6 +84,11 @@ static float FAILRATE;
|
|||||||
return HWIdle;
|
return HWIdle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(pSim->iPause == 1)
|
||||||
|
{
|
||||||
|
return HWPause;
|
||||||
|
}
|
||||||
|
|
||||||
if(SimRandom() < FAILRATE)
|
if(SimRandom() < FAILRATE)
|
||||||
{
|
{
|
||||||
return HWFault;
|
return HWFault;
|
||||||
@ -118,10 +123,6 @@ static float FAILRATE;
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(pSim->iPause == 1)
|
|
||||||
{
|
|
||||||
return HWPause;
|
|
||||||
}
|
|
||||||
return HWIdle;
|
return HWIdle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user