diff --git a/ecbcounter.c b/ecbcounter.c index 01faefc..c204dc4 100644 --- a/ecbcounter.c +++ b/ecbcounter.c @@ -161,6 +161,22 @@ static int ECBContinue(struct __COUNTER *self){ return OKOK; } +/*=======================================================================*/ +static int ECBHalt(struct __COUNTER *self){ + int status; + pECBCounter pPriv = NULL; + + assert(self); + pPriv = (pECBCounter)self->pData; + assert(pPriv); + + pPriv->state = IDLE; + if((status = stopScalers(pPriv)) <= 0){ + self->iErrorCode = status; + return HWFault; + } + return OKOK; +} /*-----------------------------------------------------------------------*/ static int ECBGetStatus(struct __COUNTER *self, float *fControl){ pECBCounter pPriv = (pECBCounter)self->pData; @@ -225,7 +241,6 @@ static int ECBGetStatus(struct __COUNTER *self, float *fControl){ result = HWBusy; } - /* select which scaler to read */ @@ -238,6 +253,9 @@ static int ECBGetStatus(struct __COUNTER *self, float *fControl){ *fControl = (float)count; } + if(*fControl > self->fPreset){ + ECBHalt(self); + } return result; } /*=====================================================================*/ @@ -352,22 +370,6 @@ static int ECBStart(struct __COUNTER *self){ return OKOK; } /*=======================================================================*/ -static int ECBHalt(struct __COUNTER *self){ - int status; - pECBCounter pPriv = NULL; - - assert(self); - pPriv = (pECBCounter)self->pData; - assert(pPriv); - - pPriv->state = IDLE; - if((status = stopScalers(pPriv)) <= 0){ - self->iErrorCode = status; - return HWFault; - } - return OKOK; -} -/*=======================================================================*/ static int ECBTransfer(struct __COUNTER *self){ int status, count, i; pECBCounter pPriv = NULL;