- 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);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -22,3 +22,5 @@ int AmorDriveAction(SConnection * pCon, SicsInterp * pSics, void *pData,
|
||||
int argc, char *argv[]);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
13
amorset.c
13
amorset.c
@ -10,6 +10,10 @@
|
||||
Commented support for slit 5 away as this is gone now
|
||||
|
||||
Mark Koennecke, March 2009
|
||||
|
||||
Added elliptic guide,
|
||||
|
||||
Mark Koennecke, August 2011
|
||||
--------------------------------------------------------------------*/
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
@ -152,9 +156,6 @@ static int calcAmorSettings(pamorSet self, SConnection * pCon)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* slit 5
|
||||
*/
|
||||
@ -227,6 +228,7 @@ static int calcAmorSettings(pamorSet self, SConnection * pCon)
|
||||
addMotorToList(self->driveList, "d4b", val);
|
||||
}
|
||||
}
|
||||
printMotorList(self->driveList,pCon);
|
||||
|
||||
LLDdelete(readList);
|
||||
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, "sample", &self->S);
|
||||
saveAmorComp(fd, name, "slit4", &self->D4);
|
||||
saveAmorComp(fd, name, "lens", &self->EL);
|
||||
/*
|
||||
saveAmorComp(fd, name, "slit5", &self->D5);
|
||||
*/
|
||||
@ -513,7 +516,7 @@ static void killAmorSet(void *data)
|
||||
free(self);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------*/
|
||||
/*---------------------------------------------------------------*/
|
||||
static int testRequiredMotors(SConnection * pCon)
|
||||
{
|
||||
char motList[][20] = { "soz", "com",
|
||||
@ -614,6 +617,8 @@ static pamorComp locateComponent(pamorSet self, char *name)
|
||||
return &self->D2;
|
||||
} else if (strcmp(name, "slit3") == 0) {
|
||||
return &self->D3;
|
||||
} else if (strcmp(name, "lens") == 0) {
|
||||
return &self->EL;
|
||||
} else if (strcmp(name, "sample") == 0) {
|
||||
return &self->S;
|
||||
} else if (strcmp(name, "slit4") == 0) {
|
||||
|
@ -22,6 +22,7 @@ typedef struct {
|
||||
amorComp D1;
|
||||
amorComp D2;
|
||||
amorComp D3;
|
||||
amorComp EL;
|
||||
amorComp S;
|
||||
amorComp D4;
|
||||
amorComp A;
|
||||
@ -50,3 +51,4 @@ void amorSetMotor(pamorSet amor, int type, double value);
|
||||
double amorGetMotor(pamorSet amor, SConnection *pCon, int type);
|
||||
|
||||
#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 argc, char *argv[]);@\\
|
||||
\mbox{}\verb@int saveAmorComp(FILE *fd, char *name, char *compname, pamorComp comp); @\\
|
||||
\mbox{}\verb@@$\diamond$
|
||||
\mbox{}\verb@@$\Diamond$
|
||||
\end{list}
|
||||
\vspace{-1ex}
|
||||
\footnotesize\addtolength{\baselineskip}{-1ex}
|
||||
@ -73,6 +73,7 @@ $\langle$amorsetint {\footnotesize ?}$\rangle\equiv$
|
||||
\mbox{}\verb@ amorComp D1;@\\
|
||||
\mbox{}\verb@ amorComp D2;@\\
|
||||
\mbox{}\verb@ amorComp D3;@\\
|
||||
\mbox{}\verb@ amorComp EL;@\\
|
||||
\mbox{}\verb@ amorComp S;@\\
|
||||
\mbox{}\verb@ amorComp D4;@\\
|
||||
\mbox{}\verb@ amorComp A;@\\
|
||||
@ -99,7 +100,7 @@ $\langle$amorsetint {\footnotesize ?}$\rangle\equiv$
|
||||
\mbox{}\verb@/*============ helper functions for the virtual motors ===============*/ @\\
|
||||
\mbox{}\verb@void amorSetMotor(pamorSet amor, int type, double value);@\\
|
||||
\mbox{}\verb@double amorGetMotor(pamorSet amor, SConnection *pCon, int type);@\\
|
||||
\mbox{}\verb@@$\diamond$
|
||||
\mbox{}\verb@@$\Diamond$
|
||||
\end{list}
|
||||
\vspace{-1ex}
|
||||
\footnotesize\addtolength{\baselineskip}{-1ex}
|
||||
@ -126,7 +127,7 @@ $\langle$amordriveint {\footnotesize ?}$\rangle\equiv$
|
||||
\mbox{}\verb@void killAmorDrive(void *data);@\\
|
||||
\mbox{}\verb@int AmorDriveAction(SConnection *pCon, SicsInterp *pSics, void *pData,@\\
|
||||
\mbox{}\verb@ int argc, char *argv[]);@\\
|
||||
\mbox{}\verb@@$\diamond$
|
||||
\mbox{}\verb@@$\Diamond$
|
||||
\end{list}
|
||||
\vspace{-1ex}
|
||||
\footnotesize\addtolength{\baselineskip}{-1ex}
|
||||
@ -156,7 +157,7 @@ $\langle$amordriveint {\footnotesize ?}$\rangle\equiv$
|
||||
\mbox{}\verb@@$\langle$amorsetint {\footnotesize ?}$\rangle$\verb@@\\
|
||||
\mbox{}\verb@#endif@\\
|
||||
\mbox{}\verb@@\\
|
||||
\mbox{}\verb@@$\diamond$
|
||||
\mbox{}\verb@@$\Diamond$
|
||||
\end{list}
|
||||
\vspace{-2ex}
|
||||
\end{minipage}\\[4ex]
|
||||
@ -182,7 +183,7 @@ $\langle$amordriveint {\footnotesize ?}$\rangle\equiv$
|
||||
\mbox{}\verb@ @$\langle$amorcompint {\footnotesize ?}$\rangle$\verb@@\\
|
||||
\mbox{}\verb@ #endif@\\
|
||||
\mbox{}\verb@ @\\
|
||||
\mbox{}\verb@@$\diamond$
|
||||
\mbox{}\verb@@$\Diamond$
|
||||
\end{list}
|
||||
\vspace{-2ex}
|
||||
\end{minipage}\\[4ex]
|
||||
@ -205,7 +206,7 @@ $\langle$amordriveint {\footnotesize ?}$\rangle\equiv$
|
||||
\mbox{}\verb@@$\langle$amordriveint {\footnotesize ?}$\rangle$\verb@@\\
|
||||
\mbox{}\verb@#endif@\\
|
||||
\mbox{}\verb@@\\
|
||||
\mbox{}\verb@ @$\diamond$
|
||||
\mbox{}\verb@ @$\Diamond$
|
||||
\end{list}
|
||||
\vspace{-2ex}
|
||||
\end{minipage}\\[4ex]
|
||||
|
@ -56,6 +56,7 @@ typedef struct {
|
||||
amorComp D1;
|
||||
amorComp D2;
|
||||
amorComp D3;
|
||||
amorComp EL;
|
||||
amorComp S;
|
||||
amorComp D4;
|
||||
amorComp A;
|
||||
|
12
el734hp.c
12
el734hp.c
@ -77,7 +77,7 @@ typedef struct __MoDriv {
|
||||
#define BADCOUNT -15
|
||||
/*-------------------------------------------------------------------
|
||||
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
|
||||
--------------------------------------------------------------------*/
|
||||
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
|
||||
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);
|
||||
if (status >= 1) {
|
||||
pReply = (char *) reply;
|
||||
if (strstr(pReply, "*ES") != NULL) {
|
||||
if (availableRS232(self)) {
|
||||
len = replylen;
|
||||
readRS232TillTerm(self, reply, &len);
|
||||
while(availableRS232(self)) {
|
||||
len = sizeof(rubbish);
|
||||
readRS232(self, rubbish, &len);
|
||||
}
|
||||
status = transactRS232(self, send, sendLen, reply, replylen);
|
||||
if (status >= 1) {
|
||||
|
@ -539,6 +539,8 @@ static int EL737FixIt(struct __COUNTER *self, int iCode)
|
||||
return COREDO;
|
||||
break;
|
||||
case TOMANYCOUNTS:
|
||||
return COREDO;
|
||||
break;
|
||||
case SYSERROR:
|
||||
return COTERM;
|
||||
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\
|
||||
ritastorage.o poldizug.o audinelib.o delcam.o el737hpdrivsps.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
|
||||
|
||||
|
8
pardef.c
8
pardef.c
@ -280,7 +280,13 @@ static int ParSaveAll(void *object, char *name, FILE * fil)
|
||||
|
||||
ParBegin();
|
||||
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) {
|
||||
fprintf(fil, "%s\n", o->creationCmd);
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
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 <assert.h>
|
||||
@ -500,6 +500,10 @@ static void PoldiUpdate(pPolterdi self, SConnection * pCon)
|
||||
asctime(localtime(&zeit)));
|
||||
SCWrite(pCon, pBueffel, eWarning);
|
||||
}
|
||||
SNXFormatTime(pBueffel, sizeof(pBueffel));
|
||||
NXDputalias(hfil, hdict, "eend", pBueffel);
|
||||
|
||||
|
||||
/*
|
||||
write time binning
|
||||
*/
|
||||
|
1
psi.c
1
psi.c
@ -124,6 +124,7 @@ static void AddPsiCommands(SicsInterp * pInter)
|
||||
SCMD("MakeTRICSSupport", MakeTricsSupport);
|
||||
SCMD("PolterInstall", PolterInstall);
|
||||
SCMD("SerialInit", SerialInit);
|
||||
SCMD("MakeEiger", InitEiger);
|
||||
PCMD("cnvrt", CnvrtAction);
|
||||
/*
|
||||
SCMD("MakeDifrac",MakeDifrac);
|
||||
|
@ -253,6 +253,8 @@ static void handleReply(Ascon * a)
|
||||
pHttp->node->value.v.intArray[i] = htonl(hmData[i]);
|
||||
}
|
||||
NotifyHipadabaPar(pHttp->node,NULL);
|
||||
DynStringClear(a->rdBuffer);
|
||||
DynStringCopy(a->rdBuffer, "NODEDATA");
|
||||
/*
|
||||
path = GetHipadabaPath(pHttp->node);
|
||||
if(path != NULL){
|
||||
|
Reference in New Issue
Block a user