- various enhancements in drivers
This commit is contained in:
45
haakedriv.c
45
haakedriv.c
@ -36,6 +36,8 @@ Markus Zolliker, Nov 2006
|
||||
|
||||
typedef struct {
|
||||
EaseDriv d;
|
||||
char *unit;
|
||||
float kelvin;
|
||||
float t;
|
||||
float t2;
|
||||
float set;
|
||||
@ -147,19 +149,26 @@ static void HaakeParDef(void *object)
|
||||
|
||||
ParName("");
|
||||
ParFmt("%.2f");
|
||||
ParTail("K");
|
||||
ParTail(drv->unit);
|
||||
ParFloat(&drv->t, PAR_NAN);
|
||||
|
||||
ParName("unit");
|
||||
if (drv->unit == NULL) {
|
||||
ParAccess(usUser);
|
||||
}
|
||||
ParLogAs(NULL);
|
||||
ParStr(&drv->unit, NULL);
|
||||
|
||||
ParName("t2");
|
||||
if (drv->with2sensors) {
|
||||
if (drv->with2sensors > 0) {
|
||||
ParFmt("%.2f");
|
||||
ParTail("K");
|
||||
ParTail(drv->unit);
|
||||
}
|
||||
ParFloat(&drv->t2, PAR_NAN);
|
||||
|
||||
ParName("set");
|
||||
ParFmt("%.2f");
|
||||
ParTail("K");
|
||||
ParTail(drv->unit);
|
||||
ParFloat(&drv->set, PAR_NAN);
|
||||
|
||||
ParName("running");
|
||||
@ -200,7 +209,7 @@ static void HaakeParDef(void *object)
|
||||
|
||||
EaseBasePar(drv);
|
||||
EaseSendPar(drv);
|
||||
EaseDrivPar(drv, "%.2f", "K");
|
||||
EaseDrivPar(drv, "%.2f", drv->unit);
|
||||
ParStdDef();
|
||||
EaseMsgPar(drv);
|
||||
}
|
||||
@ -236,13 +245,13 @@ static long HaakeRead(long pc, void *object)
|
||||
EaseWrite(eab, "F1");
|
||||
return __LINE__;
|
||||
case __LINE__: /**********************************/
|
||||
drv->t = atof(eab->ans) + 273.15;
|
||||
if (!drv->with2sensors)
|
||||
drv->t = atof(eab->ans) + drv->kelvin;
|
||||
if (drv->with2sensors < 1)
|
||||
goto nof2;
|
||||
EaseWrite(eab, "F2");
|
||||
return __LINE__;
|
||||
case __LINE__: /**********************************/
|
||||
drv->t2 = atof(eab->ans) + 273.15;
|
||||
drv->t2 = atof(eab->ans) + drv->kelvin;
|
||||
if (drv->t2 < -222) {
|
||||
drv->t2 = PAR_NAN;
|
||||
}
|
||||
@ -250,7 +259,7 @@ static long HaakeRead(long pc, void *object)
|
||||
EaseWrite(eab, "S");
|
||||
return __LINE__;
|
||||
case __LINE__: /**********************************/
|
||||
drv->set = atof(eab->ans) + 273.15;
|
||||
drv->set = atof(eab->ans) + drv->kelvin;
|
||||
|
||||
skipGetSet:
|
||||
ParLog(drv);
|
||||
@ -263,6 +272,7 @@ static long HaakeStart(long pc, void *object)
|
||||
{
|
||||
Haake *drv = ParCast(&haakeClass, object);
|
||||
EaseBase *eab = object;
|
||||
char unitcmd[8] = "W TE K";
|
||||
|
||||
switch (pc) {
|
||||
default: /* FSM BEGIN ****************************** */
|
||||
@ -276,8 +286,18 @@ static long HaakeStart(long pc, void *object)
|
||||
EaseStop(eab);
|
||||
goto quit;
|
||||
}
|
||||
ParPrintf(drv, eLog, "connected to haake thermostat %s", eab->version);
|
||||
EaseWrite(eab, "W TE K");
|
||||
ParPrintf(drv, eLog, "connected to haake thermostat %s",
|
||||
eab->version);
|
||||
if (drv->unit == NULL) {
|
||||
drv->unit = strdup("K");
|
||||
}
|
||||
if (*drv->unit == 'C') {
|
||||
EaseWrite(eab, "W TE C");
|
||||
drv->kelvin = 0;
|
||||
} else {
|
||||
EaseWrite(eab, "W TE K");
|
||||
drv->kelvin = 273.15;
|
||||
}
|
||||
return __LINE__;
|
||||
case __LINE__: /**********************************/
|
||||
FsmCall(HaakeRead);
|
||||
@ -302,7 +322,8 @@ static long HaakeSet(long pc, void *object)
|
||||
upd = EaseNextUpdate(drv);
|
||||
switch (upd) {
|
||||
case EASE_RUN:
|
||||
snprintf(cmd, sizeof cmd, "w sw %.5g", drv->d.targetValue - 273.17);
|
||||
snprintf(cmd, sizeof cmd, "w sw %.5g",
|
||||
drv->d.targetValue - drv->kelvin);
|
||||
break;
|
||||
case HAAKE_ON:
|
||||
snprintf(cmd, sizeof cmd, "w ts%d", drv->running);
|
||||
|
Reference in New Issue
Block a user