- various enhancements

This commit is contained in:
zolliker
2008-01-18 07:35:34 +00:00
parent a3df7d2729
commit 661df39166
11 changed files with 165 additions and 118 deletions

View File

@@ -58,18 +58,19 @@ typedef struct {
char typ;
} SensorT;
enum Sensors { A, B, C, D, A1, A2, A3, A4, N_SENSORS };
enum Sensors { A, B, C, D, A0, A1, A2, A3, A4, N_SENSORS };
static SensorT
sensA={"A"},
sensB={"B"},
sensC={"C"},
sensD={"D"},
sensA0={"A0", DATA_UNDEF},
sensA1={"A1", DATA_UNDEF},
sensA2={"A2", DATA_UNDEF},
sensA3={"A3", DATA_UNDEF},
sensA4={"A4", DATA_UNDEF},
*sensors[N_SENSORS]={&sensA, &sensB, &sensC, &sensD, &sensA1, &sensA2, &sensA3, &sensA4 },
*sensors[N_SENSORS]={&sensA, &sensB, &sensC, &sensD, &sensA0, &sensA1, &sensA2, &sensA3, &sensA4 },
*ctlSens=NULL, /* control sensor */
*heliumSens=NULL,
*auxSens=NULL,
@@ -672,15 +673,15 @@ again:
}
if (sensA.type[0]>'0' && sensA.type[0]<='4') {
nScan=sensA.type[0]-'0';
for (i=4;i<4+nScan;i++) {
for (i=5;i<5+nScan;i++) {
s=sensors[i];
s->present=-1;
s->band=10;
if (s->scale==0.0) s->scale=1.0;
s->typ='1'+i-4;
s->typ='1'+i-5;
}
sensA.type[0]='\0';
for (i=4+nScan; i<N_SENSORS; i++) {
for (i=5+nScan; i<N_SENSORS; i++) {
sensors[i]->t=DATA_UNDEF;
sensors[i]->present=0;
}
@@ -879,7 +880,7 @@ void LogMinMax(int new) {
} else if (nScan==0) {
return;
}
for (i=4; i<4+nScan; i++) {
for (i=5; i<5+nScan; i++) {
s1=sensors[i];
if (s1->t!=DATA_UNDEF) {
sprintf(buf1, " T%c %.5g", s1->ch[1], s1->t);
@@ -1009,7 +1010,7 @@ int ReadTemp(void) {
if (nScan>0) {
while (1) { /* read until a non-selected channel found */
if (iScan>=nScan) iScan=0;
s=sensors[iScan+4];
s=sensors[iScan+5];
if (s->present<1) break;
str_copy(chan, s->ch);
ERR_P(LscCmd(ser, "KRDG?[chan]>fbuf;DIOST?>,out1"));
@@ -1615,7 +1616,7 @@ int ConfigAlarms(float genLimit) {
ERR_P(LscCmd(ser, "RELAY 1:1;BEEP:0"));
relay=0;
k=0;
for (i=0;i<4+nScan;i++) {
for (i=0;i<5+nScan;i++) {
s=sensors[i];
str_copy(buf1, s->ch);
if (s->customAlarm==0 && genLimit>0.0) s->alarm=genLimit;
@@ -1675,7 +1676,7 @@ void AssignTypes(void) {
auxSens=NULL;
testSens=NULL;
test2Sens=NULL;
for (i=0; i<4+nScan; i++) {
for (i=0; i<5+nScan; i++) {
s=sensors[i];
if (s->present==1) {
typ=s->typ;
@@ -1736,7 +1737,7 @@ int Settings(void) {
} else {
ERR_P(LscCmd(ser, "PID [loop],[prop],[integ],[deriv]"));
}
for (i=0; i<4+nScan; i++) {
for (i=0; i<5+nScan; i++) {
s=sensors[i];
if (i<4) {
plug=plugs[i/2];
@@ -1796,7 +1797,7 @@ int Settings(void) {
DisplayFmt(auxSens, fields, &k);
if (nScan>0) {
i=0;
while (i<nScan && DisplayFmt(sensors[i+4], fields, &k)) {
while (i<nScan && DisplayFmt(sensors[i+5], fields, &k)) {
i++;
}
}
@@ -2491,6 +2492,19 @@ 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;
}
}
if (out1==30 && out2==29) {
/* code conversion */
plug0.code1=3*decod[cod2 % 8] ^ 2*decod[cod1 % 8]; /* ^ is exclusive OR */
@@ -3105,7 +3119,7 @@ int StatusHdl(int mode, void *base, int fd) {
if (test2Sens!=NULL) {
ERR_I(ShowSensor(&buf, test2Sens, "T", "K", 0));
}
for (i=4; i<4+nScan; i++) {
for (i=5; i<5+nScan; i++) {
ERR_I(ShowSensor(&buf, sensors[i], "T", "K", 0));
}
if (auxSens!=NULL) {
@@ -3298,6 +3312,7 @@ int main(int argc, char *argv[]) {
CocDefStruct(sensB, SensorT);
CocDefStruct(sensC, SensorT);
CocDefStruct(sensD, SensorT);
CocDefStruct(sensA0, SensorT);
CocDefStruct(sensA1, SensorT);
CocDefStruct(sensA2, SensorT);
CocDefStruct(sensA3, SensorT);
@@ -3438,6 +3453,7 @@ int main(int argc, char *argv[]) {
CocAlias(Tb,sensB.t);
CocAlias(Tc,sensC.t);
CocAlias(Td,sensD.t);
CocAlias(T0,sensA0.t);
CocAlias(T1,sensA1.t);
CocAlias(T2,sensA2.t);
CocAlias(T3,sensA3.t);
@@ -3561,6 +3577,7 @@ int main(int argc, char *argv[]) {
ERR_P(DataCreateSet(NULL, "Te", &te, logPeriod, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "Tk", &tk, logPeriod, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "He", &he, logPeriod, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "T0", &sensA0.t, logPeriod, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "T1", &sensA1.t, logPeriod, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "T2", &sensA2.t, logPeriod, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "T3", &sensA3.t, logPeriod, LOGLIFETIME, tim));