Alex: Committing Mark's fixes to el737 devsup
This commit is contained in:
@ -289,7 +289,7 @@ static long el737_write_preset(scalerRecord *psr, int signal, unsigned long val)
|
|||||||
{
|
{
|
||||||
EL737priv *priv;
|
EL737priv *priv;
|
||||||
|
|
||||||
//errlogPrintf("Setting preset %d to %ld\n", signal, val);
|
// errlogPrintf("EL737: Setting preset %d to %ld\n", signal, val);
|
||||||
|
|
||||||
priv = (EL737priv *)psr->dpvt;
|
priv = (EL737priv *)psr->dpvt;
|
||||||
if(signal >= 0 && signal < 13){
|
if(signal >= 0 && signal < 13){
|
||||||
@ -298,7 +298,7 @@ static long el737_write_preset(scalerRecord *psr, int signal, unsigned long val)
|
|||||||
if(signal == THRESHVAL){
|
if(signal == THRESHVAL){
|
||||||
priv->sendThreshold = 1;
|
priv->sendThreshold = 1;
|
||||||
epicsEventSignal(priv->wakeUp);
|
epicsEventSignal(priv->wakeUp);
|
||||||
//errlogPrintf("Setting threshold \n");
|
// errlogPrintf("EL737: Setting threshold \n");
|
||||||
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -311,7 +311,7 @@ static long el737_arm(scalerRecord *psr, int val)
|
|||||||
priv = (EL737priv *)psr->dpvt;
|
priv = (EL737priv *)psr->dpvt;
|
||||||
priv->countCommand = val;
|
priv->countCommand = val;
|
||||||
|
|
||||||
//errlogPrintf("Sending arm %d \n", val);
|
// errlogPrintf("EL737: Sending arm %d \n", val);
|
||||||
|
|
||||||
epicsEventSignal(priv->wakeUp);
|
epicsEventSignal(priv->wakeUp);
|
||||||
|
|
||||||
@ -323,7 +323,7 @@ static long el737_done(scalerRecord *psr)
|
|||||||
EL737priv *priv;
|
EL737priv *priv;
|
||||||
priv = (EL737priv *)psr->dpvt;
|
priv = (EL737priv *)psr->dpvt;
|
||||||
|
|
||||||
// errlogPrintf("Calling done with %d\n", psr->cnt);
|
// errlogPrintf("EL737: Calling done with %d\n", psr->cnt);
|
||||||
if(priv->counting && psr->cnt == 0){
|
if(priv->counting && psr->cnt == 0){
|
||||||
priv->countCommand = 0;
|
priv->countCommand = 0;
|
||||||
epicsEventSignal(priv->wakeUp);
|
epicsEventSignal(priv->wakeUp);
|
||||||
@ -345,6 +345,8 @@ static asynStatus el737_transactCommand(EL737priv *priv,char command[COMLEN],cha
|
|||||||
|
|
||||||
pasynOctetSyncIO->flush(priv->asynContext);
|
pasynOctetSyncIO->flush(priv->asynContext);
|
||||||
|
|
||||||
|
// errlogPrintf("EL737: sending command %s\n", command);
|
||||||
|
|
||||||
strcpy(message,"");
|
strcpy(message,"");
|
||||||
status = pasynOctetSyncIO->writeRead(priv->asynContext, command, strlen(command),
|
status = pasynOctetSyncIO->writeRead(priv->asynContext, command, strlen(command),
|
||||||
reply,COMLEN, 1.,&out,&in,&reason);
|
reply,COMLEN, 1.,&out,&in,&reason);
|
||||||
@ -390,6 +392,8 @@ static asynStatus el737_transactCommand(EL737priv *priv,char command[COMLEN],cha
|
|||||||
errlogPrintf("Lost response to %s with EAGAIN\n", command);
|
errlogPrintf("Lost response to %s with EAGAIN\n", command);
|
||||||
} else {
|
} else {
|
||||||
snprintf(message,sizeof(message), "Lost communication with errno %d", errno);
|
snprintf(message,sizeof(message), "Lost communication with errno %d", errno);
|
||||||
|
/* force a reconnect */
|
||||||
|
pasynOctetSyncIO->disconnect(priv->asynContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(priv->dbInit){
|
if(priv->dbInit){
|
||||||
@ -405,7 +409,7 @@ static asynStatus el737_transactCommand(EL737priv *priv,char command[COMLEN],cha
|
|||||||
static asynStatus sendStop(EL737priv *priv)
|
static asynStatus sendStop(EL737priv *priv)
|
||||||
{
|
{
|
||||||
char command[COMLEN], reply[COMLEN];
|
char command[COMLEN], reply[COMLEN];
|
||||||
//errlogPrintf("Sending stop\n");
|
// errlogPrintf("EL737: Sending stop\n");
|
||||||
strcpy(command,"S");
|
strcpy(command,"S");
|
||||||
return el737_transactCommand(priv,command,reply);
|
return el737_transactCommand(priv,command,reply);
|
||||||
}
|
}
|
||||||
@ -440,7 +444,7 @@ static void runEvents(EL737priv *priv)
|
|||||||
}
|
}
|
||||||
sprintf(command,"DL %d %d", (int)threshCounter,
|
sprintf(command,"DL %d %d", (int)threshCounter,
|
||||||
(int)myThreshold);
|
(int)myThreshold);
|
||||||
errlogPrintf("Sending threshold command %s\n", command);
|
// errlogPrintf("Sending threshold command %s\n", command);
|
||||||
status = el737_transactCommand(priv,command,reply);
|
status = el737_transactCommand(priv,command,reply);
|
||||||
sprintf(command,"DR %d", (int)threshCounter);
|
sprintf(command,"DR %d", (int)threshCounter);
|
||||||
status = el737_transactCommand(priv, command,reply);
|
status = el737_transactCommand(priv, command,reply);
|
||||||
@ -458,7 +462,7 @@ static void runEvents(EL737priv *priv)
|
|||||||
if(priv->presets[THRESHMON] > 0) {
|
if(priv->presets[THRESHMON] > 0) {
|
||||||
sprintf(command,"DL %d %d", (int)priv->presets[THRESHMON],
|
sprintf(command,"DL %d %d", (int)priv->presets[THRESHMON],
|
||||||
(int)priv->presets[THRESHVAL]);
|
(int)priv->presets[THRESHVAL]);
|
||||||
errlogPrintf("Sending threshold from presets, command %s\n", command);
|
// errlogPrintf("Sending threshold from presets, command %s\n", command);
|
||||||
status = el737_transactCommand(priv,command,reply);
|
status = el737_transactCommand(priv,command,reply);
|
||||||
sprintf(command,"DR %d", (int)priv->presets[THRESHMON]);
|
sprintf(command,"DR %d", (int)priv->presets[THRESHMON]);
|
||||||
status = el737_transactCommand(priv, command,reply);
|
status = el737_transactCommand(priv, command,reply);
|
||||||
@ -468,16 +472,16 @@ static void runEvents(EL737priv *priv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//errlogPrintf("Doing a count command: %d\n", priv->countCommand);
|
errlogPrintf("EL737: Doing a count command: %d\n", priv->countCommand);
|
||||||
if(priv->countCommand == 1){
|
if(priv->countCommand == 1){
|
||||||
if(priv->presets[MODE] > 0) {
|
if(priv->presets[MODE] > 0) {
|
||||||
/* preset monitor */
|
/* preset monitor */
|
||||||
sprintf(command,"MP %d", (int)priv->presets[MONITOR]);
|
sprintf(command,"MP %d", (int)priv->presets[MONITOR]);
|
||||||
//errlogPrintf("Starting preset monitor\n");
|
// errlogPrintf("EL737: Starting preset monitor\n");
|
||||||
} else {
|
} else {
|
||||||
/* preset time */
|
/* preset time */
|
||||||
sprintf(command,"TP %f", priv->presets[TIMER]/1000.);
|
sprintf(command,"TP %f", priv->presets[TIMER]/1000.);
|
||||||
//errlogPrintf("Starting preset timer\n");
|
// errlogPrintf("EL737: Starting preset timer\n");
|
||||||
}
|
}
|
||||||
status = el737_transactCommand(priv,command,reply);
|
status = el737_transactCommand(priv,command,reply);
|
||||||
if(status == asynSuccess){
|
if(status == asynSuccess){
|
||||||
@ -552,11 +556,11 @@ static void el737Thread(void *param)
|
|||||||
int rs, ctStatus;
|
int rs, ctStatus;
|
||||||
long dbStatus, options, nElements = 1, pauseFlag = 0;
|
long dbStatus, options, nElements = 1, pauseFlag = 0;
|
||||||
|
|
||||||
//errlogPrintf("Within EL737 thread \n");
|
// errlogPrintf("EL737: Within EL737 thread \n");
|
||||||
|
|
||||||
while(1){
|
while(1){
|
||||||
evStatus = epicsEventWaitWithTimeout(priv->wakeUp,timeout);
|
evStatus = epicsEventWaitWithTimeout(priv->wakeUp,timeout);
|
||||||
//errlogPrintf("EL737 thread woke up with %d\n", evStatus);
|
// errlogPrintf("EL737 thread woke up with %d\n", evStatus);
|
||||||
|
|
||||||
if(evStatus == epicsEventWaitOK) {
|
if(evStatus == epicsEventWaitOK) {
|
||||||
/*
|
/*
|
||||||
@ -583,7 +587,7 @@ static void el737Thread(void *param)
|
|||||||
if(status != asynSuccess){
|
if(status != asynSuccess){
|
||||||
errlogPrintf("devScalerEL737::el737Thread communication problem %s\n",
|
errlogPrintf("devScalerEL737::el737Thread communication problem %s\n",
|
||||||
priv->asynContext->errorMessage);
|
priv->asynContext->errorMessage);
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
sscanf(reply,"%d",&rs);
|
sscanf(reply,"%d",&rs);
|
||||||
//errlogPrintf("RS = %d\n", rs);
|
//errlogPrintf("RS = %d\n", rs);
|
||||||
@ -632,7 +636,7 @@ static void el737Thread(void *param)
|
|||||||
if(status != asynSuccess){
|
if(status != asynSuccess){
|
||||||
errlogPrintf("devScalerEL737::el737Thread communication problem %s\n",
|
errlogPrintf("devScalerEL737::el737Thread communication problem %s\n",
|
||||||
priv->asynContext->errorMessage);
|
priv->asynContext->errorMessage);
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
} else if(pauseFlag == 0 && ctStatus == 3){
|
} else if(pauseFlag == 0 && ctStatus == 3){
|
||||||
strcpy(command,"CO");
|
strcpy(command,"CO");
|
||||||
@ -640,7 +644,7 @@ static void el737Thread(void *param)
|
|||||||
if(status != asynSuccess){
|
if(status != asynSuccess){
|
||||||
errlogPrintf("devScalerEL737::el737Thread communication problem %s\n",
|
errlogPrintf("devScalerEL737::el737Thread communication problem %s\n",
|
||||||
priv->asynContext->errorMessage);
|
priv->asynContext->errorMessage);
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user