- Added some hipadab array math
- Added missing cnvrt files, stolen from Markus - Debugged the new sinqhttpopt driver for SINQ HTTP HM - Debugged the driver for the new S7 Siemens SPS - Added handling of hexadecimal terminators to ascon.c - Increased the write buffer size in asynnet again - Fixed a core dump in lld.c - Added writing of second gen HM to nxscript.c - Added doubletime command to SICS - Fixed a core dump issue in sicshdbadapter.c on dimension changes - Modified sicsobj to look for lower case keys too SKIPPED: psi/cnvrt.c psi/cnvrt.h psi/el734hp.c psi/make_gen psi/sinqhttpopt.c psi/sinqhttpprot.c psi/spss7.c psi/swmotor.c
This commit is contained in:
46
arrayutil.c
Normal file
46
arrayutil.c
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* arrayutil.c
|
||||||
|
*
|
||||||
|
* copyright: see file COPYRIGHT
|
||||||
|
*
|
||||||
|
* some utilities for dealing with arrays
|
||||||
|
*
|
||||||
|
* Created on: Mar 16, 2011
|
||||||
|
* Author: koennecke
|
||||||
|
*/
|
||||||
|
|
||||||
|
long sumWindow(int *data, int xstart, int xend, int xlength,
|
||||||
|
int ystart, int yend, int ylength)
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
long result = 0;
|
||||||
|
int *row;
|
||||||
|
|
||||||
|
if(xstart < 0 || xstart > xlength){
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
if(xend < 0 || xend > xlength){
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
if(xend < xstart){
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
if(ystart < 0 || ystart > ylength){
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
if(yend < 0 || yend > ylength){
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
if(yend < ystart){
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for(j = ystart; j < yend; j++){
|
||||||
|
row = data + j*xlength;
|
||||||
|
for(i = xstart; i < xend; i++){
|
||||||
|
result += row[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
31
arrayutil.h
Normal file
31
arrayutil.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* arrayutil.h
|
||||||
|
*
|
||||||
|
* copyright: GPL
|
||||||
|
*
|
||||||
|
* Start of some array processing utilities. This may go if
|
||||||
|
* a more generalized array handling gets implemented into
|
||||||
|
* SICS.
|
||||||
|
*
|
||||||
|
* Created on: Mar 16, 2011
|
||||||
|
* Author: koennecke
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ARRAYUTIL_H_
|
||||||
|
#define ARRAYUTIL_H_
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sum data in a window
|
||||||
|
* @param data The data pointer
|
||||||
|
* @param xstart
|
||||||
|
* @param xend
|
||||||
|
* @param xlength length of x dimension
|
||||||
|
* @param ystart
|
||||||
|
* @param yend
|
||||||
|
* @param ylength size of y dimension
|
||||||
|
* @return a sum or -2 if the limits fail to make sense
|
||||||
|
*/
|
||||||
|
long sumWindow(int *data, int xstart, int xend, int xlength,
|
||||||
|
int ystart, int yend, int ylength);
|
||||||
|
|
||||||
|
#endif /* ARRAYUTIL_H_ */
|
21
ascon.c
21
ascon.c
@ -495,6 +495,26 @@ int AsconStdHandler(Ascon * a)
|
|||||||
return AsconBaseHandler(a);
|
return AsconBaseHandler(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Treat hex strings as terminators right. Note that this
|
||||||
|
* is limited to single character terminators.
|
||||||
|
*/
|
||||||
|
static void AsconCheckTerminators(Ascon *a)
|
||||||
|
{
|
||||||
|
int c;
|
||||||
|
|
||||||
|
if(a->sendTerminator != NULL && strstr(a->sendTerminator,"0x") != NULL){
|
||||||
|
sscanf(a->sendTerminator,"%x",&c);
|
||||||
|
a->sendTerminator[0] = (char)c;
|
||||||
|
a->sendTerminator[1] = '\0';
|
||||||
|
}
|
||||||
|
if(a->replyTerminator != NULL && strstr(a->replyTerminator,"0x") != NULL){
|
||||||
|
sscanf(a->replyTerminator,"%x",&c);
|
||||||
|
a->replyTerminator[0] = (char)c;
|
||||||
|
a->replyTerminator[1] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int AsconInterpreteArgs(int argc, char *argv[],
|
int AsconInterpreteArgs(int argc, char *argv[],
|
||||||
int parc, char *parn[], char *pars[])
|
int parc, char *parn[], char *pars[])
|
||||||
{
|
{
|
||||||
@ -574,6 +594,7 @@ int AsconStdInit(Ascon *a, SConnection *con, int argc, char *argv[])
|
|||||||
} else {
|
} else {
|
||||||
a->separator = NULL;
|
a->separator = NULL;
|
||||||
}
|
}
|
||||||
|
AsconCheckTerminators(a);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
#define DATASOCKET 1
|
#define DATASOCKET 1
|
||||||
#define MAXCONNECTIONS 1024
|
#define MAXCONNECTIONS 1024
|
||||||
#define RBUFFERSIZE 262144 /* 256kb */
|
#define RBUFFERSIZE 262144 /* 256kb */
|
||||||
#define WBUFFERSIZE 10*262144 /* 512kb */
|
#define WBUFFERSIZE 20*262144 /* */
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int socket;
|
int socket;
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
* Asynchronous networking for SICS and other programs. This module centrally manages
|
* Asynchronous networking for SICS and other programs. This module centrally manages
|
||||||
* a number of network connections for a client program. It is a layer between the
|
* a number of network connections for a client program. It is a layer between the
|
||||||
* program and the network which manages non blocking network I/O. To this purpose, the
|
* program and the network which manages non blocking network I/O. To this purpose, the
|
||||||
* client program has to call ANETprocess at convenient intervalls. This module
|
* client program has to call ANETprocess at convenient intervals. This module
|
||||||
* has a couple of features:
|
* has a couple of features:
|
||||||
* - Connections are abstracted to handles which are guranteed to be unique
|
* - Connections are abstracted to handles which are guaranteed to be unique
|
||||||
* rather then socket numbers. Socket numbers may be reused by the OS.
|
* rather then socket numbers. Socket numbers may be reused by the OS.
|
||||||
* - This module allows upper level code to figure out if a connection is still
|
* - This module allows upper level code to figure out if a connection is still
|
||||||
* connected or not.
|
* connected or not.
|
||||||
|
1
devser.c
1
devser.c
@ -227,7 +227,6 @@ static int DevQueueTask(void *ds)
|
|||||||
DevAction *action;
|
DevAction *action;
|
||||||
char *sendData;
|
char *sendData;
|
||||||
char *replyData = NULL;
|
char *replyData = NULL;
|
||||||
|
|
||||||
if (devser->steps == 0)
|
if (devser->steps == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -16,9 +16,9 @@ On a triple axis instrument the parameters incoming energy, Q-position in 3D and
|
|||||||
Q-E variables ei, ki, ef, kf, en, qh, qk and ql can be driven as virtual motors in
|
Q-E variables ei, ki, ef, kf, en, qh, qk and ql can be driven as virtual motors in
|
||||||
SICS.
|
SICS.
|
||||||
</P>
|
</P>
|
||||||
<h2>Commands understood by Tasub</h2>
|
<H2>Commands understood by Tasub</H2>
|
||||||
<p>
|
<p>
|
||||||
<h3>Monochromator and Analyzer Parameters
|
<h3>Monochromator and Analyzer Parameters</h3>
|
||||||
<p>
|
<p>
|
||||||
Incident and scattered energies are defined by monochromator crystals. In order for the
|
Incident and scattered energies are defined by monochromator crystals. In order for the
|
||||||
calculations to work, some parameters need to be configured. Monochromator and analyzer
|
calculations to work, some parameters need to be configured. Monochromator and analyzer
|
||||||
|
1
event.c
1
event.c
@ -70,6 +70,7 @@ static char *pEvent[] = {
|
|||||||
"STATESTART",
|
"STATESTART",
|
||||||
"STATEEND",
|
"STATEEND",
|
||||||
"NEWTARGET",
|
"NEWTARGET",
|
||||||
|
"DIMCHANGE",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
11
event.h
11
event.h
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
#line 102 "event.w"
|
#line 103 "event.w"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
E V E N T
|
E V E N T
|
||||||
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
int Text2Event(char *pText);
|
int Text2Event(char *pText);
|
||||||
|
|
||||||
#line 115 "event.w"
|
#line 116 "event.w"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -48,8 +48,9 @@
|
|||||||
#define STSTART 21
|
#define STSTART 21
|
||||||
#define STEND 22
|
#define STEND 22
|
||||||
#define NEWTARGET 23
|
#define NEWTARGET 23
|
||||||
|
#define DIMCHANGE 24
|
||||||
|
|
||||||
#line 117 "event.w"
|
#line 118 "event.w"
|
||||||
|
|
||||||
|
|
||||||
/*----------------- event data structure for the NEWTARGET event ---------*/
|
/*----------------- event data structure for the NEWTARGET event ---------*/
|
||||||
@ -59,7 +60,7 @@ typedef struct {
|
|||||||
} NewTarget, *pNewTarget;
|
} NewTarget, *pNewTarget;
|
||||||
/*--------------- Signals for the Signalfunction of each task ------------*/
|
/*--------------- Signals for the Signalfunction of each task ------------*/
|
||||||
|
|
||||||
#line 84 "event.w"
|
#line 85 "event.w"
|
||||||
|
|
||||||
#define SICSINT 300
|
#define SICSINT 300
|
||||||
#define SICSBROADCAST 301
|
#define SICSBROADCAST 301
|
||||||
@ -68,6 +69,6 @@ typedef struct {
|
|||||||
#define COMLOG 304
|
#define COMLOG 304
|
||||||
#define CRONLIST 305
|
#define CRONLIST 305
|
||||||
|
|
||||||
#line 125 "event.w"
|
#line 126 "event.w"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -59,6 +59,7 @@ $\langle$VE {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@#define STSTART 21@\\
|
\mbox{}\verb@#define STSTART 21@\\
|
||||||
\mbox{}\verb@#define STEND 22@\\
|
\mbox{}\verb@#define STEND 22@\\
|
||||||
\mbox{}\verb@#define NEWTARGET 23@\\
|
\mbox{}\verb@#define NEWTARGET 23@\\
|
||||||
|
\mbox{}\verb@#define DIMCHANGE 24@\\
|
||||||
\mbox{}\verb@@$\Diamond$
|
\mbox{}\verb@@$\Diamond$
|
||||||
\end{list}
|
\end{list}
|
||||||
\vspace{-1ex}
|
\vspace{-1ex}
|
||||||
|
1
event.w
1
event.w
@ -42,6 +42,7 @@ if the event code is not known, else the apropriate event code.
|
|||||||
#define STSTART 21
|
#define STSTART 21
|
||||||
#define STEND 22
|
#define STEND 22
|
||||||
#define NEWTARGET 23
|
#define NEWTARGET 23
|
||||||
|
#define DIMCHANGE 24
|
||||||
@}
|
@}
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[VALUECHANGE] This is a variable changing its value. As event data a pointer to the
|
\item[VALUECHANGE] This is a variable changing its value. As event data a pointer to the
|
||||||
|
38
exebuf.c
38
exebuf.c
@ -164,6 +164,44 @@ static pDynString findBlockEnd(pExeBuf self)
|
|||||||
DeleteDynString(command);
|
DeleteDynString(command);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
/*-----------------attempt at a faster version -------------------------------
|
||||||
|
* But this only saves on the ConcatChar side of things......
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
static pDynString findBlockEndExp(pExeBuf self)
|
||||||
|
{
|
||||||
|
pDynString command = NULL;
|
||||||
|
char *buffer = NULL;
|
||||||
|
char *cStart, *cEnd;
|
||||||
|
int i, len;
|
||||||
|
|
||||||
|
assert(self);
|
||||||
|
|
||||||
|
command = CreateDynString(80, 80);
|
||||||
|
if (command == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
buffer = GetCharArray(self->bufferContent);
|
||||||
|
if (self->end != -1) {
|
||||||
|
self->start = self->end + 1;
|
||||||
|
}
|
||||||
|
cStart = buffer +self->start;
|
||||||
|
cEnd = strchr(cStart,'\n');
|
||||||
|
while(cEnd != NULL){
|
||||||
|
len = cEnd - cStart+1;
|
||||||
|
DynStringConcatBytes(command,cStart, len);
|
||||||
|
self->lineno++;
|
||||||
|
if (Tcl_CommandComplete(GetCharArray(command))) {
|
||||||
|
self->end += len;
|
||||||
|
return command;
|
||||||
|
}
|
||||||
|
cStart = cEnd+1;
|
||||||
|
cEnd = strchr(cStart,'\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteDynString(command);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------*/
|
||||||
int exeBufProcess(pExeBuf self, SicsInterp * pSics,
|
int exeBufProcess(pExeBuf self, SicsInterp * pSics,
|
||||||
|
@ -1274,6 +1274,7 @@ int HistAction(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
iRet = HistConfigure(self, pCon, pSics);
|
iRet = HistConfigure(self, pCon, pSics);
|
||||||
if (iRet) {
|
if (iRet) {
|
||||||
self->iInit = 1;
|
self->iInit = 1;
|
||||||
|
InvokeCallBack(self->pCall,DIMCHANGE,NULL);
|
||||||
SCSendOK(pCon);
|
SCSendOK(pCon);
|
||||||
} else {
|
} else {
|
||||||
self->iInit = 0;
|
self->iInit = 0;
|
||||||
@ -1657,6 +1658,7 @@ int HistAction(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
}
|
}
|
||||||
/* do it */
|
/* do it */
|
||||||
genTimeBinning(self->pDriv->data, (float) dStart, (float) dStep, iNum);
|
genTimeBinning(self->pDriv->data, (float) dStart, (float) dStep, iNum);
|
||||||
|
InvokeCallBack(self->pCall,DIMCHANGE,NULL);
|
||||||
SCparChange(pCon);
|
SCparChange(pCon);
|
||||||
SCSendOK(pCon);
|
SCSendOK(pCon);
|
||||||
return 1;
|
return 1;
|
||||||
@ -1693,6 +1695,7 @@ int HistAction(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
setTimeBin(self->pDriv->data, iNum, (float) dStep);
|
setTimeBin(self->pDriv->data, iNum, (float) dStep);
|
||||||
|
InvokeCallBack(self->pCall,DIMCHANGE,NULL);
|
||||||
self->iInit = 0;
|
self->iInit = 0;
|
||||||
SCSendOK(pCon);
|
SCSendOK(pCon);
|
||||||
return 1;
|
return 1;
|
||||||
@ -1705,6 +1708,7 @@ int HistAction(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
clearTimeBinning(self->pDriv->data);
|
clearTimeBinning(self->pDriv->data);
|
||||||
|
InvokeCallBack(self->pCall,DIMCHANGE,NULL);
|
||||||
SCSendOK(pCon);
|
SCSendOK(pCon);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
4
lld.c
4
lld.c
@ -498,8 +498,12 @@ void LLDnodeDelete(int List)
|
|||||||
|
|
||||||
/* adjust links
|
/* adjust links
|
||||||
*/
|
*/
|
||||||
|
if(Old->prev != NULL){
|
||||||
Old->prev->next = Old->next;
|
Old->prev->next = Old->next;
|
||||||
|
}
|
||||||
|
if(Old->next != NULL){
|
||||||
Old->next->prev = Old->prev;
|
Old->next->prev = Old->prev;
|
||||||
|
}
|
||||||
|
|
||||||
/* adjust current node pointer
|
/* adjust current node pointer
|
||||||
prevent it from pointing to the dummy tail node
|
prevent it from pointing to the dummy tail node
|
||||||
|
2
make_gen
2
make_gen
@ -36,7 +36,7 @@ SOBJ = network.o ifile.o conman.o SCinter.o splitter.o passwd.o \
|
|||||||
moregress.o multicounter.o regresscter.o histregress.o \
|
moregress.o multicounter.o regresscter.o histregress.o \
|
||||||
sicshdbadapter.o polldriv.o sicspoll.o statemon.o hmslave.o \
|
sicshdbadapter.o polldriv.o sicspoll.o statemon.o hmslave.o \
|
||||||
nwatch.o asyncqueue.o asyncprotocol.o sicsobj.o frame.o\
|
nwatch.o asyncqueue.o asyncprotocol.o sicsobj.o frame.o\
|
||||||
nxcopy.o nxinterhelper.o nxinter_wrap.o nxstack.o \
|
nxcopy.o nxinterhelper.o nxinter_wrap.o nxstack.o arrayutil.o \
|
||||||
sctdriveadapter.o sctdriveobj.o reflist.o singlex.o fourmess.o \
|
sctdriveadapter.o sctdriveobj.o reflist.o singlex.o fourmess.o \
|
||||||
sgclib.o sgfind.o sgio.o sgsi.o sghkl.o singlediff.o singlebi.o \
|
sgclib.o sgfind.o sgio.o sgsi.o sghkl.o singlediff.o singlebi.o \
|
||||||
singlenb.o simindex.o simidx.o uselect.o singletas.o motorsec.o \
|
singlenb.o simindex.o simidx.o uselect.o singletas.o motorsec.o \
|
||||||
|
@ -396,8 +396,8 @@ pNXDS cutNXDataset(pNXDS source, int start[], int end[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
This recurses through all dimesnions, thereby skipping the summed one.
|
This recurses through all dimensions, thereby skipping the summed one.
|
||||||
At the end of the rescusion the actual summing is performed.
|
At the end of the recursion the actual summing is performed.
|
||||||
----------------------------------------------------------------------*/
|
----------------------------------------------------------------------*/
|
||||||
static void sumData(pNXDS source, pNXDS target, int sourceDim[],
|
static void sumData(pNXDS source, pNXDS target, int sourceDim[],
|
||||||
int targetDim[], int targetDimCount, int dimNo,
|
int targetDim[], int targetDimCount, int dimNo,
|
||||||
|
20
nxscript.c
20
nxscript.c
@ -547,7 +547,7 @@ static void putHdbOff(SConnection * pCon, SicsInterp * pSics, pNXScript self,
|
|||||||
|
|
||||||
GetHipadabaPar(node, &v, pCon);
|
GetHipadabaPar(node, &v, pCon);
|
||||||
if(offset < 0 || offset > v.arrayLength){
|
if(offset < 0 || offset > v.arrayLength){
|
||||||
SCPrintf(pCon,eLogError,"ERROR: invalid offset %d speicified", offset );
|
SCPrintf(pCon,eLogError,"ERROR: invalid offset %d specified", offset );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (v.dataType) {
|
switch (v.dataType) {
|
||||||
@ -924,6 +924,8 @@ static void putSlab(SConnection * pCon, SicsInterp * pSics, pNXScript self,
|
|||||||
pHistMem mem = NULL;
|
pHistMem mem = NULL;
|
||||||
HistInt *histData = NULL;
|
HistInt *histData = NULL;
|
||||||
pSICSData data = NULL;
|
pSICSData data = NULL;
|
||||||
|
pCounter memsec = NULL;
|
||||||
|
pHdb node = NULL;
|
||||||
|
|
||||||
if (argc < 6) {
|
if (argc < 6) {
|
||||||
SCWrite(pCon, "ERROR: insufficient number of arguments to putslab",
|
SCWrite(pCon, "ERROR: insufficient number of arguments to putslab",
|
||||||
@ -963,6 +965,22 @@ static void putSlab(SConnection * pCon, SicsInterp * pSics, pNXScript self,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* try to write second gen histogram data
|
||||||
|
*/
|
||||||
|
memsec = (pCounter) FindCommandData(pSics, argv[5], "HistMemSec");
|
||||||
|
if(memsec != NULL){
|
||||||
|
node = GetHipadabaNode(memsec->pDes->parNode,"data");
|
||||||
|
if(data != NULL){
|
||||||
|
SCWrite(pCon,"ERROR: ?? data node to second gen HM not found", eError);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
status = NXputslab(self->fileHandle, node->value.v.intArray, start, size);
|
||||||
|
if (status == NX_OK) {
|
||||||
|
written = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* try to look for sicsdata
|
* try to look for sicsdata
|
||||||
*/
|
*/
|
||||||
|
1
ofac.c
1
ofac.c
@ -100,6 +100,7 @@ static void InitIniCommands(SicsInterp * pInter)
|
|||||||
PCMD("sicsprompt", SicsPrompt);
|
PCMD("sicsprompt", SicsPrompt);
|
||||||
PCMD("SICSStatus", SICSStatus);
|
PCMD("SICSStatus", SICSStatus);
|
||||||
PCMD("sicstime", SICSTime);
|
PCMD("sicstime", SICSTime);
|
||||||
|
PCMD("doubletime", SICSDoubleTime);
|
||||||
PCMD("SICSType", SICSType);
|
PCMD("SICSType", SICSType);
|
||||||
PCMD("Sics_Exitus", SicsExit);
|
PCMD("Sics_Exitus", SicsExit);
|
||||||
PCMD("silent", SICSSilent);
|
PCMD("silent", SICSSilent);
|
||||||
|
9
script.c
9
script.c
@ -415,7 +415,16 @@ int SICSTime(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
SCWrite(pCon, pBueffel, eValue);
|
SCWrite(pCon, pBueffel, eValue);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
int SICSDoubleTime(SConnection * pCon, SicsInterp * pSics, void *pData,
|
||||||
|
int argc, char *argv[])
|
||||||
|
{
|
||||||
|
double dtime;
|
||||||
|
|
||||||
|
dtime = DoubleTime();
|
||||||
|
SCPrintf(pCon,eValue,"%lf",dtime);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
/*--------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------
|
||||||
Kill a command from SICS
|
Kill a command from SICS
|
||||||
*/
|
*/
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "sicshipadaba.h"
|
#include "sicshipadaba.h"
|
||||||
#include "sicshdbadapter.h"
|
#include "sicshdbadapter.h"
|
||||||
#include "sicsdata.h"
|
#include "sicsdata.h"
|
||||||
|
#include "HistMem.i"
|
||||||
|
|
||||||
#define PRIVNAM "priv"
|
#define PRIVNAM "priv"
|
||||||
/*==================== support code ====================================*/
|
/*==================== support code ====================================*/
|
||||||
@ -337,6 +338,7 @@ static long totalSum(int *data, int length)
|
|||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
pHistMem pHM;
|
pHistMem pHM;
|
||||||
|
pHdb node;
|
||||||
} HMAdapter, *pHMAdapter;
|
} HMAdapter, *pHMAdapter;
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
static hdbCallbackReturn HMDataGetCallback(pHdb currentNode,
|
static hdbCallbackReturn HMDataGetCallback(pHdb currentNode,
|
||||||
@ -359,9 +361,21 @@ static hdbCallbackReturn HMDataGetCallback(pHdb currentNode,
|
|||||||
currentNode->value.arrayLength = GetHistLength(pHMA->pHM);
|
currentNode->value.arrayLength = GetHistLength(pHMA->pHM);
|
||||||
currentNode->value.v.intArray =
|
currentNode->value.v.intArray =
|
||||||
(int *) GetHistogramPointer(pHMA->pHM, pCon);
|
(int *) GetHistogramPointer(pHMA->pHM, pCon);
|
||||||
|
NotifyHipadabaPar(pHMA->node, NULL);
|
||||||
return hdbContinue;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
static int DimCallback(int iEvent, void *eventData, void *userData)
|
||||||
|
{
|
||||||
|
pHMAdapter pHMA = (pHMAdapter)userData;
|
||||||
|
|
||||||
|
if(iEvent == DIMCHANGE){
|
||||||
|
pHMA->node->value.arrayLength = GetHistLength(pHMA->pHM);
|
||||||
|
pHMA->node->value.v.intArray =
|
||||||
|
(int *) GetHistogramPointer(pHMA->pHM, pServ->dummyCon);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
static pHdb MakeHMDataNode(pHistMem pHM, char *name)
|
static pHdb MakeHMDataNode(pHistMem pHM, char *name)
|
||||||
{
|
{
|
||||||
@ -375,6 +389,7 @@ static pHdb MakeHMDataNode(pHistMem pHM, char *name)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
pHMA->pHM = pHM;
|
pHMA->pHM = pHM;
|
||||||
|
pHMA->node = node;
|
||||||
node->value.doNotFree = 1;
|
node->value.doNotFree = 1;
|
||||||
node->value.v.intArray = (int *)GetHistogramPointer(pHM, pServ->dummyCon);
|
node->value.v.intArray = (int *)GetHistogramPointer(pHM, pServ->dummyCon);
|
||||||
pCall = MakeHipadabaCallback(HMDataGetCallback, pHMA, free);
|
pCall = MakeHipadabaCallback(HMDataGetCallback, pHMA, free);
|
||||||
@ -383,7 +398,7 @@ static pHdb MakeHMDataNode(pHistMem pHM, char *name)
|
|||||||
}
|
}
|
||||||
AppendHipadabaCallback(node, pCall);
|
AppendHipadabaCallback(node, pCall);
|
||||||
AppendHipadabaCallback(node, MakeReadOnlyCallback());
|
AppendHipadabaCallback(node, MakeReadOnlyCallback());
|
||||||
|
RegisterCallback(pHM->pCall,DIMCHANGE, DimCallback, pHMA, NULL);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "sicsobj.h"
|
#include "sicsobj.h"
|
||||||
#include <macro.h>
|
#include <macro.h>
|
||||||
#include "commandlog.h"
|
#include "commandlog.h"
|
||||||
|
#include "arrayutil.h"
|
||||||
|
|
||||||
#define MAX_HDB_PATH 1024
|
#define MAX_HDB_PATH 1024
|
||||||
|
|
||||||
@ -451,13 +452,12 @@ int formatNameValue(Protocol protocol, char *name, char *value,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
static int sendZippedNodeData(pHdb node, SConnection * pCon)
|
static int sendZippedNodeData(pHdb node, hdbValue newValue, SConnection * pCon)
|
||||||
{
|
{
|
||||||
hdbValue newValue;
|
|
||||||
int i, *iData = NULL;
|
int i, *iData = NULL;
|
||||||
char *path = NULL;
|
char *path = NULL;
|
||||||
|
double sum = 0;
|
||||||
|
|
||||||
newValue = node->value;
|
|
||||||
path = GetHipadabaPath(node);
|
path = GetHipadabaPath(node);
|
||||||
switch (newValue.dataType) {
|
switch (newValue.dataType) {
|
||||||
case HIPINTAR:
|
case HIPINTAR:
|
||||||
@ -474,10 +474,12 @@ static int sendZippedNodeData(pHdb node, SConnection * pCon)
|
|||||||
}
|
}
|
||||||
memset(iData, 0, newValue.arrayLength * sizeof(int));
|
memset(iData, 0, newValue.arrayLength * sizeof(int));
|
||||||
for (i = 0; i < newValue.arrayLength; i++) {
|
for (i = 0; i < newValue.arrayLength; i++) {
|
||||||
|
sum += (double)newValue.v.intArray[i];
|
||||||
iData[i] = htonl(newValue.v.intArray[i]);
|
iData[i] = htonl(newValue.v.intArray[i]);
|
||||||
}
|
}
|
||||||
SCWriteZipped(pCon, path, iData, newValue.arrayLength * sizeof(int));
|
SCWriteZipped(pCon, path, iData, newValue.arrayLength * sizeof(int));
|
||||||
free(iData);
|
free(iData);
|
||||||
|
/* printf("Wrote zipped data %s, sum %lf\n", path, sum); */
|
||||||
break;
|
break;
|
||||||
case HIPFLOATAR:
|
case HIPFLOATAR:
|
||||||
case HIPFLOATVARAR:
|
case HIPFLOATVARAR:
|
||||||
@ -493,14 +495,16 @@ static int sendZippedNodeData(pHdb node, SConnection * pCon)
|
|||||||
}
|
}
|
||||||
memset(iData, 0, newValue.arrayLength * sizeof(int));
|
memset(iData, 0, newValue.arrayLength * sizeof(int));
|
||||||
for (i = 0; i < newValue.arrayLength; i++) {
|
for (i = 0; i < newValue.arrayLength; i++) {
|
||||||
|
sum+= newValue.v.floatArray[i];
|
||||||
iData[i] = htonl((int) (newValue.v.floatArray[i] * 65536.));
|
iData[i] = htonl((int) (newValue.v.floatArray[i] * 65536.));
|
||||||
}
|
}
|
||||||
SCWriteZipped(pCon, path, iData, newValue.arrayLength * sizeof(int));
|
SCWriteZipped(pCon, path, iData, newValue.arrayLength * sizeof(int));
|
||||||
|
/* printf("Wrote zipped data %s, sum %lf\n", path, sum); */
|
||||||
free(iData);
|
free(iData);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SCWrite(pCon, "ERROR: zipped writing not supported for this datatype",
|
SCPrintf(pCon, eError, "ERROR: zipped writing not supported for this datatype on node %s",
|
||||||
eError);
|
path);
|
||||||
free(path);
|
free(path);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -597,7 +601,7 @@ static hdbCallbackReturn SICSNotifyCallback(pHdb node, void *userData,
|
|||||||
*/
|
*/
|
||||||
if (GetHdbProperty(node, "transfer", value, 80) == 1) {
|
if (GetHdbProperty(node, "transfer", value, 80) == 1) {
|
||||||
if (strstr(value, "zip") != NULL) {
|
if (strstr(value, "zip") != NULL) {
|
||||||
status = sendZippedNodeData(node, cbInfo->pCon);
|
status = sendZippedNodeData(node, *(mm->v), cbInfo->pCon);
|
||||||
free(pPath);
|
free(pPath);
|
||||||
DeleteDynString(result);
|
DeleteDynString(result);
|
||||||
return hdbContinue;
|
return hdbContinue;
|
||||||
@ -2094,6 +2098,7 @@ int readHdbValue(hdbValue * v, char *data, char *error, int errlen)
|
|||||||
free(v->v.text);
|
free(v->v.text);
|
||||||
}
|
}
|
||||||
v->v.text = strdup(data);
|
v->v.text = strdup(data);
|
||||||
|
v->arrayLength = strlen(data);
|
||||||
break;
|
break;
|
||||||
case HIPINTVARAR:
|
case HIPINTVARAR:
|
||||||
if (!adjustDataLength(v, data)) {
|
if (!adjustDataLength(v, data)) {
|
||||||
@ -2447,8 +2452,9 @@ static int ZipGetHdbNode(SConnection * pCon, SicsInterp * pSics,
|
|||||||
}
|
}
|
||||||
memset(&newValue, 0, sizeof(hdbValue));
|
memset(&newValue, 0, sizeof(hdbValue));
|
||||||
GetHipadabaPar(targetNode, &newValue, pCon);
|
GetHipadabaPar(targetNode, &newValue, pCon);
|
||||||
|
status = sendZippedNodeData(targetNode, newValue, pCon);
|
||||||
ReleaseHdbValue(&newValue);
|
ReleaseHdbValue(&newValue);
|
||||||
return sendZippedNodeData(targetNode, pCon);
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -2934,8 +2940,10 @@ static int HdbArrayNode(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
pHdb node = NULL;
|
pHdb node = NULL;
|
||||||
pObjectDescriptor pDes = NULL;
|
pObjectDescriptor pDes = NULL;
|
||||||
int length, idx, ival, i;
|
int length, idx, ival, i;
|
||||||
|
int xstart, xend, xlength, ystart, yend, ylength;
|
||||||
double dval;
|
double dval;
|
||||||
hdbValue v;
|
hdbValue v;
|
||||||
|
long sum;
|
||||||
|
|
||||||
if (argc < 4) {
|
if (argc < 4) {
|
||||||
SCWrite(pCon, "ERROR: need at least three arguments to harray", eError);
|
SCWrite(pCon, "ERROR: need at least three arguments to harray", eError);
|
||||||
@ -2988,6 +2996,22 @@ static int HdbArrayNode(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(strcmp(argv[2],"sum") == 0){
|
||||||
|
if(argc < 9){
|
||||||
|
SCWrite(pCon,"ERROR: not enough arguments to harray sum", eError);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
xstart = atoi(argv[3]);
|
||||||
|
xend = atoi(argv[4]);
|
||||||
|
xlength = atoi(argv[5]);
|
||||||
|
ystart = atoi(argv[6]);
|
||||||
|
yend = atoi(argv[7]);
|
||||||
|
ylength = atoi(argv[8]);
|
||||||
|
sum = sumWindow(node->value.v.intArray,xstart,xend,xlength,ystart,yend,ylength);
|
||||||
|
SCPrintf(pCon,eValue,"sum = %ld", sum);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
idx = atoi(argv[2]);
|
idx = atoi(argv[2]);
|
||||||
if(idx < 0 || idx >= node->value.arrayLength ){
|
if(idx < 0 || idx >= node->value.arrayLength ){
|
||||||
SCPrintf(pCon,eError,"ERROR: %d is out of range 0 - %d",
|
SCPrintf(pCon,eError,"ERROR: %d is out of range 0 - %d",
|
||||||
|
@ -475,6 +475,10 @@ int InvokeSICSOBJ(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
parNode = GetHipadabaNode(self->objectNode, argv[1]);
|
parNode = GetHipadabaNode(self->objectNode, argv[1]);
|
||||||
|
if(parNode == NULL){
|
||||||
|
strtolower(argv[1]);
|
||||||
|
parNode = GetHipadabaNode(self->objectNode,argv[1]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (parNode != NULL && parNode->value.dataType == HIPFUNC) {
|
if (parNode != NULL && parNode->value.dataType == HIPFUNC) {
|
||||||
status = invokeOBJFunction(self, parNode, pCon, argc - 2, &argv[2]);
|
status = invokeOBJFunction(self, parNode, pCon, argc - 2, &argv[2]);
|
||||||
|
@ -187,13 +187,15 @@ static void printPollList(pSicsPoll self, SConnection * pCon)
|
|||||||
int status;
|
int status;
|
||||||
pPollDriv driv = NULL;
|
pPollDriv driv = NULL;
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
|
char tbuf[256];
|
||||||
|
|
||||||
status = LLDnodePtr2First(self->pollList);
|
status = LLDnodePtr2First(self->pollList);
|
||||||
while (status != 0) {
|
while (status != 0) {
|
||||||
driv = (pPollDriv) LLDnodePtr(self->pollList);
|
driv = (pPollDriv) LLDnodePtr(self->pollList);
|
||||||
if (driv != NULL) {
|
if (driv != NULL) {
|
||||||
snprintf(buffer, 512, "%60s %3d",
|
ctime_r(&driv->nextPoll, tbuf);
|
||||||
driv->objectIdentifier, driv->pollIntervall);
|
snprintf(buffer, 512, "%30s %3d %30s",
|
||||||
|
driv->objectIdentifier, driv->pollIntervall, tbuf);
|
||||||
SCWrite(pCon, buffer, eValue);
|
SCWrite(pCon, buffer, eValue);
|
||||||
}
|
}
|
||||||
status = LLDnodePtr2Next(self->pollList);
|
status = LLDnodePtr2Next(self->pollList);
|
||||||
|
288
sicsstat.tcl
288
sicsstat.tcl
@ -5,9 +5,291 @@ exe syspath ./
|
|||||||
#--- END (commands producing errors on last restore)
|
#--- END (commands producing errors on last restore)
|
||||||
|
|
||||||
# Counter counter
|
# Counter counter
|
||||||
counter SetPreset 7.000000
|
counter SetPreset 3.000000
|
||||||
counter SetMode Timer
|
counter SetMode Timer
|
||||||
hm preset 7
|
|
||||||
hm mode monitor
|
|
||||||
title UNKNOWN
|
title UNKNOWN
|
||||||
title setAccess 2
|
title setAccess 2
|
||||||
|
user Uwe Filges
|
||||||
|
user setAccess 2
|
||||||
|
address UNKNOWN
|
||||||
|
address setAccess 2
|
||||||
|
adress UNKNOWN
|
||||||
|
adress setAccess 2
|
||||||
|
phone UNKNOWN
|
||||||
|
phone setAccess 2
|
||||||
|
email UNKNOWN
|
||||||
|
email setAccess 2
|
||||||
|
affiliation UNKNOWN
|
||||||
|
affiliation setAccess 2
|
||||||
|
countrate 0.000000
|
||||||
|
countrate setAccess 2
|
||||||
|
t2tx targetposition 0
|
||||||
|
t2tx sign 1
|
||||||
|
t2tx softzero 0
|
||||||
|
t2tx softlowerlim 0
|
||||||
|
t2tx softupperlim 2000
|
||||||
|
t2tx fixed -1
|
||||||
|
t2tx interruptmode 0
|
||||||
|
t2tx precision 0.01
|
||||||
|
t2tx accesscode 2
|
||||||
|
t2tx failafter 3
|
||||||
|
t2tx maxretry 3
|
||||||
|
t2tx ignorefault 0
|
||||||
|
t2tx movecount 10
|
||||||
|
t2ty targetposition 0
|
||||||
|
t2ty sign 1
|
||||||
|
t2ty softzero 0
|
||||||
|
t2ty softlowerlim 0
|
||||||
|
t2ty softupperlim 100
|
||||||
|
t2ty fixed -1
|
||||||
|
t2ty interruptmode 0
|
||||||
|
t2ty precision 0.01
|
||||||
|
t2ty accesscode 2
|
||||||
|
t2ty failafter 3
|
||||||
|
t2ty maxretry 3
|
||||||
|
t2ty ignorefault 0
|
||||||
|
t2ty movecount 10
|
||||||
|
sdw 0.000000
|
||||||
|
sdw setAccess 2
|
||||||
|
sdh 0.000000
|
||||||
|
sdh setAccess 2
|
||||||
|
t3tx targetposition 0
|
||||||
|
t3tx sign 1
|
||||||
|
t3tx softzero 0
|
||||||
|
t3tx softlowerlim 0
|
||||||
|
t3tx softupperlim 2000
|
||||||
|
t3tx fixed -1
|
||||||
|
t3tx interruptmode 0
|
||||||
|
t3tx precision 0.01
|
||||||
|
t3tx accesscode 2
|
||||||
|
t3tx failafter 3
|
||||||
|
t3tx maxretry 3
|
||||||
|
t3tx ignorefault 0
|
||||||
|
t3tx movecount 10
|
||||||
|
rt3 targetposition 0
|
||||||
|
rt3 sign 1
|
||||||
|
rt3 softzero 0
|
||||||
|
rt3 softlowerlim -180
|
||||||
|
rt3 softupperlim 180
|
||||||
|
rt3 fixed -1
|
||||||
|
rt3 interruptmode 0
|
||||||
|
rt3 precision 0.01
|
||||||
|
rt3 accesscode 2
|
||||||
|
rt3 failafter 3
|
||||||
|
rt3 maxretry 3
|
||||||
|
rt3 ignorefault 0
|
||||||
|
rt3 movecount 10
|
||||||
|
sew 0.000000
|
||||||
|
sew setAccess 2
|
||||||
|
seh 0.000000
|
||||||
|
seh setAccess 2
|
||||||
|
t4tx targetposition 0
|
||||||
|
t4tx sign 1
|
||||||
|
t4tx softzero 0
|
||||||
|
t4tx softlowerlim 500
|
||||||
|
t4tx softupperlim 12000
|
||||||
|
t4tx fixed -1
|
||||||
|
t4tx interruptmode 0
|
||||||
|
t4tx precision 0.01
|
||||||
|
t4tx accesscode 2
|
||||||
|
t4tx failafter 3
|
||||||
|
t4tx maxretry 3
|
||||||
|
t4tx ignorefault 0
|
||||||
|
t4tx movecount 10
|
||||||
|
t4ty targetposition 0
|
||||||
|
t4ty sign 1
|
||||||
|
t4ty softzero 0
|
||||||
|
t4ty softlowerlim 0
|
||||||
|
t4ty softupperlim 3000
|
||||||
|
t4ty fixed -1
|
||||||
|
t4ty interruptmode 0
|
||||||
|
t4ty precision 0.01
|
||||||
|
t4ty accesscode 2
|
||||||
|
t4ty failafter 3
|
||||||
|
t4ty maxretry 3
|
||||||
|
t4ty ignorefault 0
|
||||||
|
t4ty movecount 10
|
||||||
|
gau targetposition 0
|
||||||
|
gau sign 1
|
||||||
|
gau softzero 0
|
||||||
|
gau softlowerlim -25
|
||||||
|
gau softupperlim 25
|
||||||
|
gau fixed -1
|
||||||
|
gau interruptmode 0
|
||||||
|
gau precision 0.01
|
||||||
|
gau accesscode 2
|
||||||
|
gau failafter 3
|
||||||
|
gau maxretry 3
|
||||||
|
gau ignorefault 0
|
||||||
|
gau movecount 10
|
||||||
|
gal targetposition 0
|
||||||
|
gal sign 1
|
||||||
|
gal softzero 0
|
||||||
|
gal softlowerlim -25
|
||||||
|
gal softupperlim 25
|
||||||
|
gal fixed -1
|
||||||
|
gal interruptmode 0
|
||||||
|
gal precision 0.01
|
||||||
|
gal accesscode 2
|
||||||
|
gal failafter 3
|
||||||
|
gal maxretry 3
|
||||||
|
gal ignorefault 0
|
||||||
|
gal movecount 10
|
||||||
|
t5tx targetposition 0
|
||||||
|
t5tx sign 1
|
||||||
|
t5tx softzero 0
|
||||||
|
t5tx softlowerlim 500
|
||||||
|
t5tx softupperlim 12000
|
||||||
|
t5tx fixed -1
|
||||||
|
t5tx interruptmode 0
|
||||||
|
t5tx precision 0.01
|
||||||
|
t5tx accesscode 2
|
||||||
|
t5tx failafter 3
|
||||||
|
t5tx maxretry 3
|
||||||
|
t5tx ignorefault 0
|
||||||
|
t5tx movecount 10
|
||||||
|
t5ty targetposition 0
|
||||||
|
t5ty sign 1
|
||||||
|
t5ty softzero 0
|
||||||
|
t5ty softlowerlim 0
|
||||||
|
t5ty softupperlim 3000
|
||||||
|
t5ty fixed -1
|
||||||
|
t5ty interruptmode 0
|
||||||
|
t5ty precision 0.01
|
||||||
|
t5ty accesscode 2
|
||||||
|
t5ty failafter 3
|
||||||
|
t5ty maxretry 3
|
||||||
|
t5ty ignorefault 0
|
||||||
|
t5ty movecount 10
|
||||||
|
sal targetposition 0
|
||||||
|
sal sign 1
|
||||||
|
sal softzero 0
|
||||||
|
sal softlowerlim -30
|
||||||
|
sal softupperlim 30
|
||||||
|
sal fixed -1
|
||||||
|
sal interruptmode 0
|
||||||
|
sal precision 0.01
|
||||||
|
sal accesscode 2
|
||||||
|
sal failafter 3
|
||||||
|
sal maxretry 3
|
||||||
|
sal ignorefault 0
|
||||||
|
sal movecount 10
|
||||||
|
sar targetposition 0
|
||||||
|
sar sign 1
|
||||||
|
sar softzero 0
|
||||||
|
sar softlowerlim -30
|
||||||
|
sar softupperlim 30
|
||||||
|
sar fixed -1
|
||||||
|
sar interruptmode 0
|
||||||
|
sar precision 0.01
|
||||||
|
sar accesscode 2
|
||||||
|
sar failafter 3
|
||||||
|
sar maxretry 3
|
||||||
|
sar ignorefault 0
|
||||||
|
sar movecount 10
|
||||||
|
sab targetposition 0
|
||||||
|
sab sign 1
|
||||||
|
sab softzero 0
|
||||||
|
sab softlowerlim -30
|
||||||
|
sab softupperlim 30
|
||||||
|
sab fixed -1
|
||||||
|
sab interruptmode 0
|
||||||
|
sab precision 0.01
|
||||||
|
sab accesscode 2
|
||||||
|
sab failafter 3
|
||||||
|
sab maxretry 3
|
||||||
|
sab ignorefault 0
|
||||||
|
sab movecount 10
|
||||||
|
sat targetposition 0
|
||||||
|
sat sign 1
|
||||||
|
sat softzero 0
|
||||||
|
sat softlowerlim 0
|
||||||
|
sat softupperlim 1000
|
||||||
|
sat fixed -1
|
||||||
|
sat interruptmode 0
|
||||||
|
sat precision 0.01
|
||||||
|
sat accesscode 2
|
||||||
|
sat failafter 3
|
||||||
|
sat maxretry 3
|
||||||
|
sat ignorefault 0
|
||||||
|
sat movecount 10
|
||||||
|
t6tx targetposition 0
|
||||||
|
t6tx sign 1
|
||||||
|
t6tx softzero 0
|
||||||
|
t6tx softlowerlim 500
|
||||||
|
t6tx softupperlim 12000
|
||||||
|
t6tx fixed -1
|
||||||
|
t6tx interruptmode 0
|
||||||
|
t6tx precision 0.01
|
||||||
|
t6tx accesscode 2
|
||||||
|
t6tx failafter 3
|
||||||
|
t6tx maxretry 3
|
||||||
|
t6tx ignorefault 0
|
||||||
|
t6tx movecount 10
|
||||||
|
t6ty targetposition 0
|
||||||
|
t6ty sign 1
|
||||||
|
t6ty softzero 0
|
||||||
|
t6ty softlowerlim 0
|
||||||
|
t6ty softupperlim 3000
|
||||||
|
t6ty fixed -1
|
||||||
|
t6ty interruptmode 0
|
||||||
|
t6ty precision 0.01
|
||||||
|
t6ty accesscode 2
|
||||||
|
t6ty failafter 3
|
||||||
|
t6ty maxretry 3
|
||||||
|
t6ty ignorefault 0
|
||||||
|
t6ty movecount 10
|
||||||
|
sbl targetposition 0
|
||||||
|
sbl sign 1
|
||||||
|
sbl softzero 0
|
||||||
|
sbl softlowerlim -30
|
||||||
|
sbl softupperlim 30
|
||||||
|
sbl fixed -1
|
||||||
|
sbl interruptmode 0
|
||||||
|
sbl precision 0.01
|
||||||
|
sbl accesscode 2
|
||||||
|
sbl failafter 3
|
||||||
|
sbl maxretry 3
|
||||||
|
sbl ignorefault 0
|
||||||
|
sbl movecount 10
|
||||||
|
sbr targetposition 0
|
||||||
|
sbr sign 1
|
||||||
|
sbr softzero 0
|
||||||
|
sbr softlowerlim -30
|
||||||
|
sbr softupperlim 30
|
||||||
|
sbr fixed -1
|
||||||
|
sbr interruptmode 0
|
||||||
|
sbr precision 0.01
|
||||||
|
sbr accesscode 2
|
||||||
|
sbr failafter 3
|
||||||
|
sbr maxretry 3
|
||||||
|
sbr ignorefault 0
|
||||||
|
sbr movecount 10
|
||||||
|
sbb targetposition 0
|
||||||
|
sbb sign 1
|
||||||
|
sbb softzero 0
|
||||||
|
sbb softlowerlim -30
|
||||||
|
sbb softupperlim 30
|
||||||
|
sbb fixed -1
|
||||||
|
sbb interruptmode 0
|
||||||
|
sbb precision 0.01
|
||||||
|
sbb accesscode 2
|
||||||
|
sbb failafter 3
|
||||||
|
sbb maxretry 3
|
||||||
|
sbb ignorefault 0
|
||||||
|
sbb movecount 10
|
||||||
|
sbt targetposition 0
|
||||||
|
sbt sign 1
|
||||||
|
sbt softzero 0
|
||||||
|
sbt softlowerlim 0
|
||||||
|
sbt softupperlim 1000
|
||||||
|
sbt fixed -1
|
||||||
|
sbt interruptmode 0
|
||||||
|
sbt precision 0.01
|
||||||
|
sbt accesscode 2
|
||||||
|
sbt failafter 3
|
||||||
|
sbt maxretry 3
|
||||||
|
sbt ignorefault 0
|
||||||
|
sbt movecount 10
|
||||||
|
hm preset 12
|
||||||
|
hm mode timer
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
302
|
318
|
||||||
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!
|
You'll risk eternal damnation and a reincarnation as a cockroach!
|
||||||
|
Reference in New Issue
Block a user