From 75a6d3100b6c643c0bed2b8b3b0a456cd648993f Mon Sep 17 00:00:00 2001 From: zolliker Date: Fri, 23 Feb 2007 12:30:26 +0000 Subject: [PATCH] - various enhancements, integrate linahdl.c into linadriv.c --- linadriv.c | 63 +++++++++++++++++++++++++++++++++++++++++- linahdl.c | 81 ------------------------------------------------------ linahdl.h | 16 ----------- 3 files changed, 62 insertions(+), 98 deletions(-) delete mode 100644 linahdl.c delete mode 100644 linahdl.h diff --git a/linadriv.c b/linadriv.c index 6ac651a..9e27098 100644 --- a/linadriv.c +++ b/linadriv.c @@ -26,8 +26,8 @@ Markus Zolliker, Oct 2006 #include #include #include -#include "linahdl.h" #include "fsm.h" +#include "ease.h" #include "initializer.h" typedef struct { @@ -37,6 +37,67 @@ typedef struct { static ParClass linaClass = { "LINA", sizeof(Lina) }; +/*----------------------------------------------------------------------------*/ +int LinaHandler(void *object) { + int iret, l; + EaseBase *eab = EaseBaseCast(object); + char *corr; + + 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 if (strncmp(eab->cmd,"ID",2) == 0) { + if (strcmp(eab->ans, eab->version) == 0) { + /* we are still connected with the same device */ + } else if (*eab->version == '\0') { + strncat(eab->version, eab->ans, sizeof(eab->version)-1); + } else { /* version (and therefore device) changed */ + eab->errCode = EASE_DEV_CHANGED; + eab->state = EASE_idle; + goto error; + } + eab->state = EASE_idle; + 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) { +/* + if (time(NULL) > eab->cmdtime) { + EaseWrite(eab, "RS"); + eab->state = EASE_lost; + } +*/ + } + goto quit; +error: + /* EaseWriteError(eab); */ +quit: + return EaseHandler(eab); +} /*----------------------------------------------------------------------------*/ static void LinaParDef(void *object) { Lina *drv = ParCast(&linaClass, object); diff --git a/linahdl.c b/linahdl.c deleted file mode 100644 index 290289f..0000000 --- a/linahdl.c +++ /dev/null @@ -1,81 +0,0 @@ -/*--------------------------------------------------------------------------- -linahdl.c - -lina (signal recovery lock in amplifier model 7265) handler - -Markus Zolliker, Oct 2006 ----------------------------------------------------------------------------- - -there is no error return value, eab->errCode is used. On success, eab->errCode -is not changed, i.e. an existing errCode is not overwritten. -*/ - -#include -#include -#include -#include -#include -#include "sics.h" -#include "oxinst.h" - -/*----------------------------------------------------------------------------*/ -int LinaHandler(void *object) { - int iret, l; - EaseBase *eab = EaseBaseCast(object); - char *corr; - - 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 if (strncmp(eab->cmd,"ID",2) == 0) { - if (strcmp(eab->ans, eab->version) == 0) { - /* we are still connected with the same device */ - } else if (*eab->version == '\0') { - strncat(eab->version, eab->ans, sizeof(eab->version)-1); - } else { /* version (and therefore device) changed */ - eab->errCode = EASE_DEV_CHANGED; - eab->state = EASE_idle; - goto error; - } - eab->state = EASE_idle; - 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) { -/* - if (time(NULL) > eab->cmdtime) { - EaseWrite(eab, "RS"); - eab->state = EASE_lost; - } -*/ - } - goto quit; -error: - /* EaseWriteError(eab); */ -quit: - return EaseHandler(eab); -} diff --git a/linahdl.h b/linahdl.h deleted file mode 100644 index 1cc9e64..0000000 --- a/linahdl.h +++ /dev/null @@ -1,16 +0,0 @@ -/*--------------------------------------------------------------------------- -linahdl.h - -lina (signal recovery lock in amplifier model 7265) handler - -Markus Zolliker, Oct 2006 -----------------------------------------------------------------------------*/ - -#ifndef LINAHDL_H -#define LINAHDL_H - -#include "ease.h" - -int LinaHandler(void *eab); - -#endif