- Fixed a normalisation problem in diffscan when the first value
did not have enough counts - Reduced polling frequency in emon - Fixed a scriptcontext bug which would cause it to dump core in SctTransact on interrupts - Fixed an issue with missing <nl> at the end of batch files - Added a feature which does not call halt when counting stops in hmcontrol.c This is necessary for the BOA CCD - Initalized doNotFree properly in hipadaba.c - Added the travelling salesman reflection measurement algorithm - Added another component to amorset - Removed old SicsWait from nserver.c - Added a means to nxscript to write 16 bit data for BOA - Modified tasub to accept a drivabel as a motor and not only a motor. This became necessary to make EIGER work as A2 on EIGER is a virtual motor
This commit is contained in:
@ -25,3 +25,4 @@ int handleCompCommand(pamorComp comp, SConnection * pCon,
|
|||||||
int saveAmorComp(FILE *fd, char *name, char *compname, pamorComp comp);
|
int saveAmorComp(FILE *fd, char *name, char *compname, pamorComp comp);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -22,3 +22,5 @@ int AmorDriveAction(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|||||||
int argc, char *argv[]);
|
int argc, char *argv[]);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
13
amorset.c
13
amorset.c
@ -10,6 +10,10 @@
|
|||||||
Commented support for slit 5 away as this is gone now
|
Commented support for slit 5 away as this is gone now
|
||||||
|
|
||||||
Mark Koennecke, March 2009
|
Mark Koennecke, March 2009
|
||||||
|
|
||||||
|
Added elliptic guide,
|
||||||
|
|
||||||
|
Mark Koennecke, August 2011
|
||||||
--------------------------------------------------------------------*/
|
--------------------------------------------------------------------*/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -152,9 +156,6 @@ static int calcAmorSettings(pamorSet self, SConnection * pCon)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* slit 5
|
* slit 5
|
||||||
*/
|
*/
|
||||||
@ -227,6 +228,7 @@ static int calcAmorSettings(pamorSet self, SConnection * pCon)
|
|||||||
addMotorToList(self->driveList, "d4b", val);
|
addMotorToList(self->driveList, "d4b", val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
printMotorList(self->driveList,pCon);
|
||||||
|
|
||||||
LLDdelete(readList);
|
LLDdelete(readList);
|
||||||
self->mustDrive = 0;
|
self->mustDrive = 0;
|
||||||
@ -452,6 +454,7 @@ static int amorSetSave(void *data, char *name, FILE * fd)
|
|||||||
saveAmorComp(fd, name, "slit3", &self->D3);
|
saveAmorComp(fd, name, "slit3", &self->D3);
|
||||||
saveAmorComp(fd, name, "sample", &self->S);
|
saveAmorComp(fd, name, "sample", &self->S);
|
||||||
saveAmorComp(fd, name, "slit4", &self->D4);
|
saveAmorComp(fd, name, "slit4", &self->D4);
|
||||||
|
saveAmorComp(fd, name, "lens", &self->EL);
|
||||||
/*
|
/*
|
||||||
saveAmorComp(fd, name, "slit5", &self->D5);
|
saveAmorComp(fd, name, "slit5", &self->D5);
|
||||||
*/
|
*/
|
||||||
@ -513,7 +516,7 @@ static void killAmorSet(void *data)
|
|||||||
free(self);
|
free(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------------------------*/
|
/*---------------------------------------------------------------*/
|
||||||
static int testRequiredMotors(SConnection * pCon)
|
static int testRequiredMotors(SConnection * pCon)
|
||||||
{
|
{
|
||||||
char motList[][20] = { "soz", "com",
|
char motList[][20] = { "soz", "com",
|
||||||
@ -614,6 +617,8 @@ static pamorComp locateComponent(pamorSet self, char *name)
|
|||||||
return &self->D2;
|
return &self->D2;
|
||||||
} else if (strcmp(name, "slit3") == 0) {
|
} else if (strcmp(name, "slit3") == 0) {
|
||||||
return &self->D3;
|
return &self->D3;
|
||||||
|
} else if (strcmp(name, "lens") == 0) {
|
||||||
|
return &self->EL;
|
||||||
} else if (strcmp(name, "sample") == 0) {
|
} else if (strcmp(name, "sample") == 0) {
|
||||||
return &self->S;
|
return &self->S;
|
||||||
} else if (strcmp(name, "slit4") == 0) {
|
} else if (strcmp(name, "slit4") == 0) {
|
||||||
|
@ -22,6 +22,7 @@ typedef struct {
|
|||||||
amorComp D1;
|
amorComp D1;
|
||||||
amorComp D2;
|
amorComp D2;
|
||||||
amorComp D3;
|
amorComp D3;
|
||||||
|
amorComp EL;
|
||||||
amorComp S;
|
amorComp S;
|
||||||
amorComp D4;
|
amorComp D4;
|
||||||
amorComp A;
|
amorComp A;
|
||||||
@ -50,3 +51,4 @@ void amorSetMotor(pamorSet amor, int type, double value);
|
|||||||
double amorGetMotor(pamorSet amor, SConnection *pCon, int type);
|
double amorGetMotor(pamorSet amor, SConnection *pCon, int type);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
13
amorset.tex
13
amorset.tex
@ -42,7 +42,7 @@ $\langle$amorcompint {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@int handleCompCommand(pamorComp comp, SConnection *pCon, @\\
|
\mbox{}\verb@int handleCompCommand(pamorComp comp, SConnection *pCon, @\\
|
||||||
\mbox{}\verb@ int argc, char *argv[]);@\\
|
\mbox{}\verb@ int argc, char *argv[]);@\\
|
||||||
\mbox{}\verb@int saveAmorComp(FILE *fd, char *name, char *compname, pamorComp comp); @\\
|
\mbox{}\verb@int saveAmorComp(FILE *fd, char *name, char *compname, pamorComp comp); @\\
|
||||||
\mbox{}\verb@@$\diamond$
|
\mbox{}\verb@@$\Diamond$
|
||||||
\end{list}
|
\end{list}
|
||||||
\vspace{-1ex}
|
\vspace{-1ex}
|
||||||
\footnotesize\addtolength{\baselineskip}{-1ex}
|
\footnotesize\addtolength{\baselineskip}{-1ex}
|
||||||
@ -73,6 +73,7 @@ $\langle$amorsetint {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@ amorComp D1;@\\
|
\mbox{}\verb@ amorComp D1;@\\
|
||||||
\mbox{}\verb@ amorComp D2;@\\
|
\mbox{}\verb@ amorComp D2;@\\
|
||||||
\mbox{}\verb@ amorComp D3;@\\
|
\mbox{}\verb@ amorComp D3;@\\
|
||||||
|
\mbox{}\verb@ amorComp EL;@\\
|
||||||
\mbox{}\verb@ amorComp S;@\\
|
\mbox{}\verb@ amorComp S;@\\
|
||||||
\mbox{}\verb@ amorComp D4;@\\
|
\mbox{}\verb@ amorComp D4;@\\
|
||||||
\mbox{}\verb@ amorComp A;@\\
|
\mbox{}\verb@ amorComp A;@\\
|
||||||
@ -99,7 +100,7 @@ $\langle$amorsetint {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@/*============ helper functions for the virtual motors ===============*/ @\\
|
\mbox{}\verb@/*============ helper functions for the virtual motors ===============*/ @\\
|
||||||
\mbox{}\verb@void amorSetMotor(pamorSet amor, int type, double value);@\\
|
\mbox{}\verb@void amorSetMotor(pamorSet amor, int type, double value);@\\
|
||||||
\mbox{}\verb@double amorGetMotor(pamorSet amor, SConnection *pCon, int type);@\\
|
\mbox{}\verb@double amorGetMotor(pamorSet amor, SConnection *pCon, int type);@\\
|
||||||
\mbox{}\verb@@$\diamond$
|
\mbox{}\verb@@$\Diamond$
|
||||||
\end{list}
|
\end{list}
|
||||||
\vspace{-1ex}
|
\vspace{-1ex}
|
||||||
\footnotesize\addtolength{\baselineskip}{-1ex}
|
\footnotesize\addtolength{\baselineskip}{-1ex}
|
||||||
@ -126,7 +127,7 @@ $\langle$amordriveint {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@void killAmorDrive(void *data);@\\
|
\mbox{}\verb@void killAmorDrive(void *data);@\\
|
||||||
\mbox{}\verb@int AmorDriveAction(SConnection *pCon, SicsInterp *pSics, void *pData,@\\
|
\mbox{}\verb@int AmorDriveAction(SConnection *pCon, SicsInterp *pSics, void *pData,@\\
|
||||||
\mbox{}\verb@ int argc, char *argv[]);@\\
|
\mbox{}\verb@ int argc, char *argv[]);@\\
|
||||||
\mbox{}\verb@@$\diamond$
|
\mbox{}\verb@@$\Diamond$
|
||||||
\end{list}
|
\end{list}
|
||||||
\vspace{-1ex}
|
\vspace{-1ex}
|
||||||
\footnotesize\addtolength{\baselineskip}{-1ex}
|
\footnotesize\addtolength{\baselineskip}{-1ex}
|
||||||
@ -156,7 +157,7 @@ $\langle$amordriveint {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@@$\langle$amorsetint {\footnotesize ?}$\rangle$\verb@@\\
|
\mbox{}\verb@@$\langle$amorsetint {\footnotesize ?}$\rangle$\verb@@\\
|
||||||
\mbox{}\verb@#endif@\\
|
\mbox{}\verb@#endif@\\
|
||||||
\mbox{}\verb@@\\
|
\mbox{}\verb@@\\
|
||||||
\mbox{}\verb@@$\diamond$
|
\mbox{}\verb@@$\Diamond$
|
||||||
\end{list}
|
\end{list}
|
||||||
\vspace{-2ex}
|
\vspace{-2ex}
|
||||||
\end{minipage}\\[4ex]
|
\end{minipage}\\[4ex]
|
||||||
@ -182,7 +183,7 @@ $\langle$amordriveint {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@ @$\langle$amorcompint {\footnotesize ?}$\rangle$\verb@@\\
|
\mbox{}\verb@ @$\langle$amorcompint {\footnotesize ?}$\rangle$\verb@@\\
|
||||||
\mbox{}\verb@ #endif@\\
|
\mbox{}\verb@ #endif@\\
|
||||||
\mbox{}\verb@ @\\
|
\mbox{}\verb@ @\\
|
||||||
\mbox{}\verb@@$\diamond$
|
\mbox{}\verb@@$\Diamond$
|
||||||
\end{list}
|
\end{list}
|
||||||
\vspace{-2ex}
|
\vspace{-2ex}
|
||||||
\end{minipage}\\[4ex]
|
\end{minipage}\\[4ex]
|
||||||
@ -205,7 +206,7 @@ $\langle$amordriveint {\footnotesize ?}$\rangle\equiv$
|
|||||||
\mbox{}\verb@@$\langle$amordriveint {\footnotesize ?}$\rangle$\verb@@\\
|
\mbox{}\verb@@$\langle$amordriveint {\footnotesize ?}$\rangle$\verb@@\\
|
||||||
\mbox{}\verb@#endif@\\
|
\mbox{}\verb@#endif@\\
|
||||||
\mbox{}\verb@@\\
|
\mbox{}\verb@@\\
|
||||||
\mbox{}\verb@ @$\diamond$
|
\mbox{}\verb@ @$\Diamond$
|
||||||
\end{list}
|
\end{list}
|
||||||
\vspace{-2ex}
|
\vspace{-2ex}
|
||||||
\end{minipage}\\[4ex]
|
\end{minipage}\\[4ex]
|
||||||
|
@ -56,6 +56,7 @@ typedef struct {
|
|||||||
amorComp D1;
|
amorComp D1;
|
||||||
amorComp D2;
|
amorComp D2;
|
||||||
amorComp D3;
|
amorComp D3;
|
||||||
|
amorComp EL;
|
||||||
amorComp S;
|
amorComp S;
|
||||||
amorComp D4;
|
amorComp D4;
|
||||||
amorComp A;
|
amorComp A;
|
||||||
|
12
el734hp.c
12
el734hp.c
@ -77,7 +77,7 @@ typedef struct __MoDriv {
|
|||||||
#define BADCOUNT -15
|
#define BADCOUNT -15
|
||||||
/*-------------------------------------------------------------------
|
/*-------------------------------------------------------------------
|
||||||
This reruns the command when an emergency stop has been detected.
|
This reruns the command when an emergency stop has been detected.
|
||||||
This ougth to fix the problem that there is still another *ES in the
|
This ought to fix the problem that there is still another *ES in the
|
||||||
line even after releasing the emergency stop button
|
line even after releasing the emergency stop button
|
||||||
--------------------------------------------------------------------*/
|
--------------------------------------------------------------------*/
|
||||||
static int transactEL734(prs232 self, void *send, int sendLen,
|
static int transactEL734(prs232 self, void *send, int sendLen,
|
||||||
@ -102,15 +102,17 @@ static int transactEL734(prs232 self, void *send, int sendLen,
|
|||||||
/*
|
/*
|
||||||
Actually do something. Some controllers send one erroneus *ES when the
|
Actually do something. Some controllers send one erroneus *ES when the
|
||||||
emergency stop had been released. Therefore we believe an emergency stop
|
emergency stop had been released. Therefore we believe an emergency stop
|
||||||
message only at the second try. This is the logic below.
|
message only at the second try. This is the logic below. Some also send
|
||||||
|
more \r\n style rubbish on emergency stops too. This is what we try to
|
||||||
|
read away in the while loop below too.
|
||||||
*/
|
*/
|
||||||
status = transactRS232(self, send, sendLen, reply, replylen);
|
status = transactRS232(self, send, sendLen, reply, replylen);
|
||||||
if (status >= 1) {
|
if (status >= 1) {
|
||||||
pReply = (char *) reply;
|
pReply = (char *) reply;
|
||||||
if (strstr(pReply, "*ES") != NULL) {
|
if (strstr(pReply, "*ES") != NULL) {
|
||||||
if (availableRS232(self)) {
|
while(availableRS232(self)) {
|
||||||
len = replylen;
|
len = sizeof(rubbish);
|
||||||
readRS232TillTerm(self, reply, &len);
|
readRS232(self, rubbish, &len);
|
||||||
}
|
}
|
||||||
status = transactRS232(self, send, sendLen, reply, replylen);
|
status = transactRS232(self, send, sendLen, reply, replylen);
|
||||||
if (status >= 1) {
|
if (status >= 1) {
|
||||||
|
@ -539,6 +539,8 @@ static int EL737FixIt(struct __COUNTER *self, int iCode)
|
|||||||
return COREDO;
|
return COREDO;
|
||||||
break;
|
break;
|
||||||
case TOMANYCOUNTS:
|
case TOMANYCOUNTS:
|
||||||
|
return COREDO;
|
||||||
|
break;
|
||||||
case SYSERROR:
|
case SYSERROR:
|
||||||
return COTERM;
|
return COTERM;
|
||||||
break;
|
break;
|
||||||
|
2
make_gen
2
make_gen
@ -23,7 +23,7 @@ OBJ=psi.o buffer.o ruli.o sps.o pimotor.o charbychar.o\
|
|||||||
dgrambroadcast.o sinq.o tabledrive.o julcho.o sinqhttpopt.o\
|
dgrambroadcast.o sinq.o tabledrive.o julcho.o sinqhttpopt.o\
|
||||||
ritastorage.o poldizug.o audinelib.o delcam.o el737hpdrivsps.o \
|
ritastorage.o poldizug.o audinelib.o delcam.o el737hpdrivsps.o \
|
||||||
rebin.o sanslirebin.o lmd200.o slsvme.o julprot.o sinqhttpprot.o \
|
rebin.o sanslirebin.o lmd200.o slsvme.o julprot.o sinqhttpprot.o \
|
||||||
pmacprot.o pfeifferprot.o termprot.o phytron.o autowin.o
|
pmacprot.o pfeifferprot.o termprot.o phytron.o autowin.o eigera2.o
|
||||||
|
|
||||||
.SECONDARY.: sanslirebin.c
|
.SECONDARY.: sanslirebin.c
|
||||||
|
|
||||||
|
8
pardef.c
8
pardef.c
@ -280,7 +280,13 @@ static int ParSaveAll(void *object, char *name, FILE * fil)
|
|||||||
|
|
||||||
ParBegin();
|
ParBegin();
|
||||||
ctx->saveFile = fil;
|
ctx->saveFile = fil;
|
||||||
assert(0 == strcasecmp(o->name, name));
|
/*
|
||||||
|
* Markus: why is this? This killed SICS unexpectedly once for me.
|
||||||
|
* And it is not required: the code can work even if name and o->name
|
||||||
|
* do not match.
|
||||||
|
*
|
||||||
|
* assert(0 == strcasecmp(o->name, name));
|
||||||
|
*/
|
||||||
if (o->creationCmd) {
|
if (o->creationCmd) {
|
||||||
fprintf(fil, "%s\n", o->creationCmd);
|
fprintf(fil, "%s\n", o->creationCmd);
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
Uwe Filges, November 2001
|
Uwe Filges, November 2001
|
||||||
|
|
||||||
Various edits, added rotaion_speed_targtes, Mark Koennecke, 2011
|
Various edits, added rotation_speed_targets, Mark Koennecke, 2011
|
||||||
----------------------------------------------------------------------------*/
|
----------------------------------------------------------------------------*/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -500,6 +500,10 @@ static void PoldiUpdate(pPolterdi self, SConnection * pCon)
|
|||||||
asctime(localtime(&zeit)));
|
asctime(localtime(&zeit)));
|
||||||
SCWrite(pCon, pBueffel, eWarning);
|
SCWrite(pCon, pBueffel, eWarning);
|
||||||
}
|
}
|
||||||
|
SNXFormatTime(pBueffel, sizeof(pBueffel));
|
||||||
|
NXDputalias(hfil, hdict, "eend", pBueffel);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
write time binning
|
write time binning
|
||||||
*/
|
*/
|
||||||
|
1
psi.c
1
psi.c
@ -124,6 +124,7 @@ static void AddPsiCommands(SicsInterp * pInter)
|
|||||||
SCMD("MakeTRICSSupport", MakeTricsSupport);
|
SCMD("MakeTRICSSupport", MakeTricsSupport);
|
||||||
SCMD("PolterInstall", PolterInstall);
|
SCMD("PolterInstall", PolterInstall);
|
||||||
SCMD("SerialInit", SerialInit);
|
SCMD("SerialInit", SerialInit);
|
||||||
|
SCMD("MakeEiger", InitEiger);
|
||||||
PCMD("cnvrt", CnvrtAction);
|
PCMD("cnvrt", CnvrtAction);
|
||||||
/*
|
/*
|
||||||
SCMD("MakeDifrac",MakeDifrac);
|
SCMD("MakeDifrac",MakeDifrac);
|
||||||
|
@ -253,6 +253,8 @@ static void handleReply(Ascon * a)
|
|||||||
pHttp->node->value.v.intArray[i] = htonl(hmData[i]);
|
pHttp->node->value.v.intArray[i] = htonl(hmData[i]);
|
||||||
}
|
}
|
||||||
NotifyHipadabaPar(pHttp->node,NULL);
|
NotifyHipadabaPar(pHttp->node,NULL);
|
||||||
|
DynStringClear(a->rdBuffer);
|
||||||
|
DynStringCopy(a->rdBuffer, "NODEDATA");
|
||||||
/*
|
/*
|
||||||
path = GetHipadabaPath(pHttp->node);
|
path = GetHipadabaPath(pHttp->node);
|
||||||
if(path != NULL){
|
if(path != NULL){
|
||||||
|
Reference in New Issue
Block a user