This commit is contained in:
zolliker
2007-09-19 06:41:36 +00:00
parent b59af433e4
commit 4f4e539569
17 changed files with 883 additions and 61 deletions

View File

@ -56,9 +56,6 @@ static char *motorCommands[]={"G", "H", "N"};
static char *gauges[]={"G1", "G2", "G3", "", "", "", "P1", "P2", NULL};
typedef enum {G1,G2,G3,G4,G5,G6,P1,P2,n_PRESS} PressureGauges;
static char *closedOrOpen[]={"closed", "open", NULL};
typedef struct {
EaseDriv d;
float setT;
@ -90,14 +87,14 @@ static int IghPower2Range(float p) {
int e;
if (p <= 0) return 0;
for (e = 1; e < 5; e++) {
if (p < 1.9994) break;
if (p < 1.9994e-3) break;
p /= 10;
}
return e;
}
/*----------------------------------------------------------------------------*/
static float IghRange2Max(int e) {
static float elist[]={0,2,20,200,2000,20000};
static float elist[]={0,0.002,0.02,0.2,2.0,20.0};
if (e < 0) {
e = 0;
} else if (e > 5) {
@ -112,15 +109,24 @@ static void IghParDef(void *object) {
int i, flag, l, changed;
char *vPos, *val;
char fmt[8], vList[80];
static char *na=NULL;
float maxP;
static char *heaterList[]={"off", "2uW", "20uW", "200uW", "2mW", "20mW", NULL};
static char *closedOrOpen[]={"closed", "open", NULL};
ParName(""); ParTail("K"); ParFmt("%.4f");
ParFloat(&drv->mixT, PAR_NAN);
ParName("Tset"); ParTail("K"); ParFmt("%.4f");
if (eab->syntax == OLDIGH) ParList("all");
ParFloat(&drv->setT, PAR_NAN);
if (eab->syntax == OLDIGH) {
ParList("all");
drv->setT = -1;
ParFloat(&drv->setT, -1);
} else {
if (drv->setT < 0) drv->setT = 0;
ParFloat(&drv->setT, PAR_NAN);
}
ParName("TsorbSet");
EaseUpdate(SORBS_FLAG); ParTail("K"); ParFmt("%.1f");
ParFloat(&drv->sorbS, PAR_NAN);
@ -138,28 +144,27 @@ static void IghParDef(void *object) {
ParFloat(&drv->sorbT, PAR_NAN);
ParName("Pmix");
if (drv->e >= 5 || drv->e < 1) {
strcpy(fmt, "%.0f");
} else {
snprintf(fmt, sizeof fmt, "%%.%df", 4 - drv->e);
}
EaseUpdate(MIXP_FLAG); ParTail("uW"); ParFmt(fmt);
EaseUpdate(MIXP_FLAG); ParTail("mW"); ParFmt("%.5g");
ParFloat(&drv->mixP, PAR_NAN);
ParName("Pmax");
EaseUpdate(MAXP_FLAG); ParTail("uW"); ParFmt("%g");
if ((val = ParGetValueArg())) {
drv->e = IghPower2Range(atof(val) * 0.9);
}
ParTail("mW"); ParFmt("%.5g");
maxP = IghRange2Max(drv->e);
ParFloat(&maxP, PAR_NAN);
ParName("HtrRange");
EaseUpdate(MAXP_FLAG); ParEnum(heaterList); ParList(NULL);
ParInt(&drv->e, PAR_NAN);
if (ParActionIs(PAR_SET) > 0) {
drv->mixP = 0;
}
ParName("Pstill");
EaseUpdate(STILL_FLAG); ParTail("mW"); ParFmt("%.3f");
ParFloat(&drv->stillP, PAR_NAN);
ParName("Psorb");
EaseUpdate(SORBP_FLAG); ParTail("W"); ParFmt("%.1f");
EaseUpdate(SORBP_FLAG); ParTail("W"); ParFmt("%.3f");
ParFloat(&drv->sorbP, PAR_NAN);
for (i=0; i<n_PRESS; i++) {
@ -359,11 +364,11 @@ static long IghRead(long pc, void *object) {
drv->mixP = 0;
goto skip4;
}
if (EaseGetUpdate(drv, MIXP_FLAG)) goto skip4;
if (EaseGetUpdate(drv, MIXP_FLAG) || EaseGetUpdate(drv, MAXP_FLAG)) goto skip4;
EaseWrite(eab, "R4");
return __LINE__; case __LINE__: /**********************************/
if (EaseGetUpdate(drv, MIXP_FLAG)) goto skip4;
drv->mixP = OxiGet(eab, 5 - drv->e, NULL, drv->mixP/10) * 10;
if (EaseGetUpdate(drv, MIXP_FLAG) || EaseGetUpdate(drv, MAXP_FLAG)) goto skip4;
drv->mixP = OxiGet(eab, 5 - drv->e, NULL, drv->mixP*100) * 0.01;
skip4:
if (EaseCheckDoit(eab)) goto quit;
@ -576,15 +581,25 @@ static long IghSet(long pc, void *object) {
}
OxiSet(eab, "M", mp, 0);
return __LINE__; case __LINE__: /**********************************/
if (drv->e == 0) goto loop;
if (drv->e == 0) goto seta0;
snprintf(buf, sizeof buf, "E%d", drv->e);
EaseWrite(eab, buf);
return __LINE__; case __LINE__: /**********************************/
EaseWrite(eab, "A1");
return __LINE__; case __LINE__: /**********************************/
goto loop;
EaseWrite(eab, "A1");
return __LINE__; case __LINE__: /**********************************/
set_max_pow:
if (drv->e == 0) goto seta0;
snprintf(buf, sizeof buf, "E%d", drv->e);
EaseWrite(eab, buf);
return __LINE__; case __LINE__: /**********************************/
EaseWrite(eab, "M0");
return __LINE__; case __LINE__: /**********************************/
EaseWrite(eab, "A1");
return __LINE__; case __LINE__: /**********************************/
goto loop;