.
This commit is contained in:
52
ease.c
52
ease.c
@ -568,6 +568,50 @@ static int EaseCheckLimits(void *obj, float fVal, char *error, int errLen) {
|
||||
return 1;
|
||||
}
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static int EaseStdHandler(void *object) {
|
||||
int iret, l;
|
||||
EaseBase *eab = EaseBaseCast(object);
|
||||
char *corr;
|
||||
|
||||
assert(eab);
|
||||
if (eab->state < EASE_idle) goto quit;
|
||||
if (availableNetRS232(eab->ser) || availableRS232(eab->ser)) {
|
||||
eab->msg[0] = '\0';
|
||||
l = sizeof(eab->ans);
|
||||
iret = readRS232TillTerm(eab->ser, eab->ans, &l);
|
||||
if (eab->state != EASE_expect && eab->state != EASE_lost) {
|
||||
if (iret == 1) {
|
||||
ParPrintf(eab, eError, "unexpected answer: %s", eab->ans);
|
||||
}
|
||||
goto quit;
|
||||
}
|
||||
if (iret == 1) {
|
||||
ParPrintf(eab, -2, "ans: %s", eab->ans);
|
||||
if (eab->state == EASE_lost) {
|
||||
goto quit;
|
||||
} else {
|
||||
eab->tmo = 120;
|
||||
}
|
||||
}
|
||||
if (iret != 1) {
|
||||
eab->errCode = iret;
|
||||
eab->state = EASE_idle;
|
||||
goto error;
|
||||
}
|
||||
eab->state = EASE_read;
|
||||
} else if (eab->state == EASE_expect) {
|
||||
if (time(NULL) > eab->cmdtime + eab->tmo) {
|
||||
eab->state = EASE_lost;
|
||||
}
|
||||
} else if (eab->state == EASE_lost) {
|
||||
}
|
||||
goto quit;
|
||||
error:
|
||||
/* EaseWriteError(eab); */
|
||||
quit:
|
||||
return EaseHandler(eab);
|
||||
}
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static int EaseInit(SConnection *pCon, EaseBase *eab, int argc, char *argv[],
|
||||
int maxflag,
|
||||
FsmHandler handler,
|
||||
@ -585,7 +629,10 @@ static int EaseInit(SConnection *pCon, EaseBase *eab, int argc, char *argv[],
|
||||
char *colon, *host;
|
||||
char buf[64];
|
||||
|
||||
assert(eab); assert(handler); assert(start); assert(read || idle);
|
||||
if (handler == NULL) {
|
||||
handler = EaseStdHandler;
|
||||
}
|
||||
assert(eab); assert(start); assert(read || idle);
|
||||
eab->handler = handler;
|
||||
eab->start = start;
|
||||
eab->read = read;
|
||||
@ -820,9 +867,10 @@ int EaseSend(void *object, void *userarg, int argc, char *argv[]) {
|
||||
iret = EaseWaitRead(eab);
|
||||
if (iret >= 0) {
|
||||
eab->sendCmd = ParArg2Str(argc, argv, NULL, 0);
|
||||
|
||||
/*
|
||||
ParPrintf(eab, -2, "ans: %s", ans);
|
||||
ParPrintf(eab, eValue, "%s", ans);
|
||||
*/
|
||||
}
|
||||
if (iret < 0) {
|
||||
eab->errCode = iret;
|
||||
|
Reference in New Issue
Block a user