- various improvements in SE drivers
This commit is contained in:
16
ease.c
16
ease.c
@ -44,6 +44,7 @@ EaseDriv *EaseDrivCast(void *object) {
|
||||
/*----------------------------------------------------------------------------*/
|
||||
void EaseStop(EaseBase *eab) {
|
||||
FsmStop(eab->task, eab->idle);
|
||||
closeRS232(eab->ser);
|
||||
eab->state = EASE_notconnected;
|
||||
}
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@ -105,6 +106,7 @@ void EaseWrite(EaseBase *eab, char *cmd) {
|
||||
snprintf(eab->msg, sizeof eab->msg,
|
||||
"connection to %s:%d lost", eab->ser->pHost, eab->ser->iPort);
|
||||
ParPrintf(eab, eError, "ERROR: %s", eab->msg);
|
||||
closeRS232(eab->ser);
|
||||
eab->state = EASE_notconnected;
|
||||
eab->errCode = iRet;
|
||||
return;
|
||||
@ -205,9 +207,11 @@ int EaseHandler(EaseBase *eab) {
|
||||
snprintf(eab->msg, sizeof eab->msg,
|
||||
"connection for %s failed", eab->p.name);
|
||||
ParPrintf(eab, eError, "%s", eab->msg);
|
||||
closeRS232(eab->ser);
|
||||
eab->state = EASE_notconnected;
|
||||
return 0;
|
||||
} else {
|
||||
eab->tmo = 20;
|
||||
snprintf(eab->msg, sizeof eab->msg,
|
||||
"get a first answer from %s", eab->p.name);
|
||||
eab->state = EASE_idle;
|
||||
@ -345,7 +349,7 @@ int EaseUpdate(int flag) {
|
||||
assert(flag >= 0);
|
||||
assert(flag <= eab->maxflag);
|
||||
eab->updateFlags[flag / EASE_FLAGBITS] |= 1 << (flag % EASE_FLAGBITS);
|
||||
FsmSpeed(eab->task);
|
||||
if (eab->task) FsmSpeed(eab->task);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@ -614,6 +618,7 @@ static int EaseInit(SConnection *pCon, EaseBase *eab, int argc, char *argv[],
|
||||
eab->version[0] = '\0';
|
||||
eab->maxflag = maxflag;
|
||||
eab->sendCmd = NULL;
|
||||
eab->tmo = 20;
|
||||
eab->updateFlags = calloc(maxflag / EASE_FLAGBITS + 1, sizeof (*eab->updateFlags));
|
||||
if (eab->updateFlags == NULL) {
|
||||
SCWrite(pCon, "out of memory", eError);
|
||||
@ -723,7 +728,14 @@ void *EaseMakeDriv(SConnection *con, void *class, int argc, char *argv[],
|
||||
ead->drivInt->SetValue = EaseRun;
|
||||
ead->drivInt->CheckStatus = EaseCheckStatus;
|
||||
ead->drivInt->GetValue = EaseGetValue;
|
||||
|
||||
|
||||
ead->maxwait = -1;
|
||||
ead->lowerLimit = 0;
|
||||
ead->upperLimit = 1000;
|
||||
ead->settle = 0;
|
||||
ead->tolerance = 1;
|
||||
ead->targetValue = 0;
|
||||
|
||||
/* EMon interface to be implemented */
|
||||
return ead;
|
||||
}
|
||||
|
Reference in New Issue
Block a user