From 90497e4beb18b6e884984e75e3709e0d0ad124f9 Mon Sep 17 00:00:00 2001 From: koennecke Date: Mon, 9 Jun 2008 09:00:19 +0000 Subject: [PATCH] - Modified dubiuos limit code in ECBSetValue - Added subsampling to sinqhmdriv --- ecbdriv.c | 5 +++++ julcho.c | 20 ++++++++++++++++---- polterwrite.c | 12 ++++++++++-- sinqhmdriv.c | 1 + 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/ecbdriv.c b/ecbdriv.c index 1b0d970..51c3a9e 100644 --- a/ecbdriv.c +++ b/ecbdriv.c @@ -694,9 +694,14 @@ static int ECBRunTo(void *pData, float newPosition){ */ diff = newPosition - oldValue; steps2degree= ObVal(self->driverPar,STEPS2DEG); + if(ABS(diff) <= ObVal(self->driverPar,TOLERANCE)){ + return OKOK; + } + /* if(ABS(diff) <= .5/steps2degree + ObVal(self->driverPar,TOLERANCE)){ return OKOK; } + */ /* save restartTarget for backlash handling diff --git a/julcho.c b/julcho.c index cd92d70..b99a5c0 100644 --- a/julcho.c +++ b/julcho.c @@ -625,7 +625,13 @@ static hdbCallbackReturn JulChoGetCallback(pHdb currentNode, } /*--------------------------------------------------------------------------*/ static int AppendJulChoROPar(pHdb parent, char *name, int type){ - return AddSICSHdbROPar(parent,name,makeHdbValue(type,1)); + pHdb child = NULL; + child = AddSICSHdbROPar(parent,name,makeHdbValue(type,1)); + if(child != NULL){ + return 1; + } else { + return 0; + } } /*---------------------------------------------------------------------------*/ static int ConfigureSingleJulCho(pHdb parent, pJulCho driv, @@ -796,11 +802,13 @@ static int InitJulChoPar(pJulCho driv){ * set callback and replace by a speed setting callback */ parChild = GetHipadabaNode(child,"nomspeed"); - assert(parChild != NULL); + assert(parChild != NULL); /* - * TODO: possible delete some callbacks + * delete the callback cahin in order to remove the + * read only callback */ - + DeleteCallbackChain(parChild->callBackChain); + parChild->callBackChain = NULL; pCb = MakeCheckPermissionCallback(usUser); if(pCb == NULL){ @@ -812,6 +820,10 @@ static int InitJulChoPar(pJulCho driv){ return 0; } AppendHipadabaCallback(parChild,pCb); + AppendHipadabaCallback(parChild, + MakeHipadabaCallback(JulChoGetCallback,driv,NULL)); + + AddHipadabaChild(driv->parNode,child,NULL); child = MakeHipadabaNode(CH3N,HIPNONE,0); diff --git a/polterwrite.c b/polterwrite.c index b052498..a2767b8 100644 --- a/polterwrite.c +++ b/polterwrite.c @@ -48,9 +48,12 @@ typedef struct { char *pFile; }Polterdi, *pPolterdi; + /* ------------------- forward declaration of task function --------------*/ static int PoldiTask(void *pData); static void PoldiUpdate(pPolterdi self, SConnection *pCon); + static void PoldiStart(pPolterdi s, SConnection *pCon); + static void PoldiLink(pPolterdi s, SConnection *pCon); /*------------------ The Countstart Callback Function ----------------------*/ static int Countstartcallback(int iEvent, void *pEventData, void *pUser, @@ -70,7 +73,7 @@ typedef struct { return 1; } return 1; - } + } /*------------------ The Countend Callback Function ----------------------*/ static int Countendcallback(int iEvent, void *pEventData, void *pUser, commandContext cc) @@ -83,7 +86,12 @@ typedef struct { assert(self); self->tUpdate = time(NULL); self->iEnd = 1; - PoldiUpdate(self,self->pCon); + if(self->iNew == 1){ + PoldiStart(self,self->pCon); + PoldiLink(self, self->pCon); + } else { + PoldiUpdate(self,self->pCon); + } return 1; } return 1; diff --git a/sinqhmdriv.c b/sinqhmdriv.c index 3357a69..2c11844 100644 --- a/sinqhmdriv.c +++ b/sinqhmdriv.c @@ -1156,6 +1156,7 @@ pCon); pNew->Preset = SQPreset; pNew->FreePrivate = SQFreePrivate; pNew->Pause = SQPause; + pNew->SubSample = DefaultSubSample; pNew->Continue = SQContinue; return pNew;