- bug fixes and improvements
This commit is contained in:
91
tecs/tecs.c
91
tecs/tecs.c
@@ -187,6 +187,7 @@ static int
|
||||
switch heater range on when controller switched it off */
|
||||
initMaxPower=0, /* set MaxPower for the first time */
|
||||
unit=1, /* 1: Kelvin, 2: Celsius */
|
||||
autoconfig=1,
|
||||
lockAlarm,
|
||||
cntError;
|
||||
|
||||
@@ -216,6 +217,8 @@ static char
|
||||
devHelp[10000],
|
||||
update[32], /* update script option */
|
||||
lscfg[256], /* lsc commands for configuration */
|
||||
devname0[64], /* name of plugs from codes */
|
||||
devname1[64],
|
||||
maxPower[128],
|
||||
controlChannel[4]="A";
|
||||
|
||||
@@ -501,7 +504,7 @@ int InstalCurve(SensorT *sensor, char *devArg) {
|
||||
str_upcase(head, chead);
|
||||
ERR_P(LscCmd(ser, "CRVHDR [num]:[head];INCRV [chan]:[num];MNMX [chan]:1,[unit]"));
|
||||
logfileOut(LOG_MAIN, "curve %d selected on channel %s\n", num, chan);
|
||||
saveTime=tim+30;
|
||||
saveTime = (tim/3600/24 + 1) * 3600*24; /* save at midnight GMT */
|
||||
}
|
||||
FREE(crv); crv=NULL;
|
||||
|
||||
@@ -1926,9 +1929,17 @@ int ConfigByCode(int plugNr) {
|
||||
plug->devcmd=0;
|
||||
ConcatDevice();
|
||||
if (plug->code==0) {
|
||||
logfileOut(LOG_MAIN ,"reset inputs on plug%d\n", plugNr);
|
||||
plug->sensor1->present=0;
|
||||
plug->sensor2->present=0;
|
||||
if (autoconfig) {
|
||||
logfileOut(LOG_MAIN ,"reset inputs on plug%d\n", plugNr);
|
||||
plug->sensor1->present=0;
|
||||
plug->sensor2->present=0;
|
||||
} else {
|
||||
if (plugNr == 0) {
|
||||
str_copy(devname0, "none");
|
||||
} else {
|
||||
str_copy(devname1, "none");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
str_copy(buf, binDir);
|
||||
str_append(buf, LSC_CODES);
|
||||
@@ -1947,11 +1958,20 @@ int ConfigByCode(int plugNr) {
|
||||
logfileOut(LOG_MAIN+LOG_STAT ,"unknown code %d on plug%d\n", plug->code, plugNr);
|
||||
return 0;
|
||||
} else {
|
||||
logfileOut(LOG_MAIN+LOG_STAT ,"configure plug%d for %s (code %d)\n", plugNr, nam, plug->code);
|
||||
str_copy(buf, "'");
|
||||
str_append(buf, nam);
|
||||
str_append(buf, "'");
|
||||
ERR_I(PrepInput(buf));
|
||||
if (autoconfig) {
|
||||
logfileOut(LOG_MAIN+LOG_STAT ,"configure plug%d for %s (code %d)\n", plugNr, nam, plug->code);
|
||||
str_copy(buf, "'");
|
||||
str_append(buf, nam);
|
||||
str_append(buf, "'");
|
||||
ERR_I(PrepInput(buf));
|
||||
} else {
|
||||
logfileOut(LOG_MAIN+LOG_STAT ,"%s on plug%d (code %d)\n", nam, plugNr, plug->code);
|
||||
if (plugNr == 0) {
|
||||
str_copy(devname0, nam);
|
||||
} else {
|
||||
str_copy(devname1, nam);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
settingsFlag=1;
|
||||
@@ -2296,6 +2316,7 @@ int PeriodicTask(void) {
|
||||
str_copy(plug0.device, buf1+1);
|
||||
plug0.codChanged=0;
|
||||
ConfigByName(0);
|
||||
if (autoconfig == 0) ConfigByCode(0);
|
||||
} else {
|
||||
if (plug0.code!=0) str_copy(plug0.device, buf1);
|
||||
plug0.devcmd=0;
|
||||
@@ -2304,6 +2325,7 @@ int PeriodicTask(void) {
|
||||
str_copy(plug1.device, buf2+1);
|
||||
plug1.codChanged=0;
|
||||
ConfigByName(1);
|
||||
if (autoconfig == 0) ConfigByCode(1);
|
||||
} else {
|
||||
if (plug1.code!=0) str_copy(plug1.device, buf2);
|
||||
plug1.devcmd=0;
|
||||
@@ -2554,29 +2576,32 @@ int PeriodicTask(void) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((plug0.code1 & 0x2a) == 0x20) {
|
||||
sensA0.t = DATA_UNDEF;
|
||||
sensA1.t = DATA_UNDEF;
|
||||
sensA2.t = DATA_UNDEF;
|
||||
sensA3.t = DATA_UNDEF;
|
||||
switch ((int)scanChan) {
|
||||
case 0: sensA0.t = te; break;
|
||||
case 1: sensA1.t = te; break;
|
||||
case 2: sensA2.t = te; break;
|
||||
case 3: sensA3.t = te; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
/* obsolete
|
||||
* if ((plug0.code1 & 0x2a) == 0x20) {
|
||||
* sensA0.t = DATA_UNDEF;
|
||||
* sensA1.t = DATA_UNDEF;
|
||||
* sensA2.t = DATA_UNDEF;
|
||||
* sensA3.t = DATA_UNDEF;
|
||||
* switch ((int)scanChan) {
|
||||
* case 0: sensA0.t = te; break;
|
||||
* case 1: sensA1.t = te; break;
|
||||
* case 2: sensA2.t = te; break;
|
||||
* case 3: sensA3.t = te; break;
|
||||
* default: break;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
if (out1==30 && out2==29) {
|
||||
/* code conversion */
|
||||
plug0.code1=3*decod[cod2 % 8] ^ 2*decod[cod1 % 8]; /* ^ is exclusive OR */
|
||||
if ((plug0.code1 & 0x2a) == 0x20) {
|
||||
/* for external switch (MA09) */
|
||||
scanChan = cod1 & 0x03;
|
||||
plug0.code1 = plug0.code1 & 0x30;
|
||||
} else {
|
||||
scanChan = DATA_UNDEF;
|
||||
}
|
||||
/* obsolete, for external switch (MA09)
|
||||
* if ((plug0.code1 & 0x2a) == 0x20) {
|
||||
* scanChan = cod1 & 0x03;
|
||||
* plug0.code1 = plug0.code1 & 0x30;
|
||||
* } else {
|
||||
* scanChan = DATA_UNDEF;
|
||||
* }
|
||||
*/
|
||||
plug1.code1=-(3*decod[cod2 / 8] ^ 2*decod[cod1 / 8]);
|
||||
for (i=0; i<2; i++) {
|
||||
plug=plugs[i];
|
||||
@@ -2949,7 +2974,7 @@ int StillHdl(int mode, void *base, int fd) {
|
||||
return COC_DWR;
|
||||
} else if (mode==COC_DWR) {
|
||||
fbuf=still;
|
||||
ERR_P(LscCmd(ser,"ANALOG 1:0,2,,,,,[fbuf]"));
|
||||
ERR_P(LscCmd(ser,"ANALOG 1:1,2,,,,,[fbuf]"));
|
||||
}
|
||||
return 0;
|
||||
OnError: return -1;
|
||||
@@ -3500,6 +3525,7 @@ int main(int argc, char *argv[]) {
|
||||
CocDefInt(rdTim, RD);
|
||||
CocDefInt(tim0, RD);
|
||||
CocDefInt(ibuf, RD);
|
||||
CocDefInt(autoconfig, RW);
|
||||
|
||||
CocDefInt(logMask, RW);
|
||||
CocDefInt(logPeriod, RW);
|
||||
@@ -3520,6 +3546,8 @@ int main(int argc, char *argv[]) {
|
||||
CocDefStr(grapar, RA);
|
||||
CocDefArr(gradata, RD); CocHdl(GraHdl); grasize=CocSizePtr();
|
||||
|
||||
CocDefStr(devname0, RW);
|
||||
CocDefStr(devname1, RW);
|
||||
CocAlias(tempX,cryo.temp);
|
||||
CocAlias(tempP,samp.temp);
|
||||
CocAlias(Ta,sensA.t);
|
||||
@@ -3560,6 +3588,9 @@ int main(int argc, char *argv[]) {
|
||||
} else if ('s'==opt) {
|
||||
use_stdout=1;
|
||||
opt=' ';
|
||||
} else if ('a'==opt) {
|
||||
autoconfig=0;
|
||||
opt=' ';
|
||||
} else if ('n'==opt) {
|
||||
i++;
|
||||
str_copy(serverId, argv[i]);
|
||||
|
||||
Reference in New Issue
Block a user