diff --git a/sinqEPICSApp/src/devScalerEL737.c b/sinqEPICSApp/src/devScalerEL737.c index 73612fd..ff058f8 100644 --- a/sinqEPICSApp/src/devScalerEL737.c +++ b/sinqEPICSApp/src/devScalerEL737.c @@ -289,7 +289,7 @@ static long el737_write_preset(scalerRecord *psr, int signal, unsigned long val) { 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; if(signal >= 0 && signal < 13){ @@ -298,7 +298,7 @@ static long el737_write_preset(scalerRecord *psr, int signal, unsigned long val) if(signal == THRESHVAL){ priv->sendThreshold = 1; epicsEventSignal(priv->wakeUp); - //errlogPrintf("Setting threshold \n"); + // errlogPrintf("EL737: Setting threshold \n"); } return 0; @@ -311,7 +311,7 @@ static long el737_arm(scalerRecord *psr, int val) priv = (EL737priv *)psr->dpvt; priv->countCommand = val; - //errlogPrintf("Sending arm %d \n", val); + // errlogPrintf("EL737: Sending arm %d \n", val); epicsEventSignal(priv->wakeUp); @@ -323,7 +323,7 @@ static long el737_done(scalerRecord *psr) EL737priv *priv; 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){ priv->countCommand = 0; epicsEventSignal(priv->wakeUp); @@ -345,6 +345,8 @@ static asynStatus el737_transactCommand(EL737priv *priv,char command[COMLEN],cha pasynOctetSyncIO->flush(priv->asynContext); + // errlogPrintf("EL737: sending command %s\n", command); + strcpy(message,""); status = pasynOctetSyncIO->writeRead(priv->asynContext, command, strlen(command), 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); } else { snprintf(message,sizeof(message), "Lost communication with errno %d", errno); + /* force a reconnect */ + pasynOctetSyncIO->disconnect(priv->asynContext); } } if(priv->dbInit){ @@ -405,7 +409,7 @@ static asynStatus el737_transactCommand(EL737priv *priv,char command[COMLEN],cha static asynStatus sendStop(EL737priv *priv) { char command[COMLEN], reply[COMLEN]; - //errlogPrintf("Sending stop\n"); + // errlogPrintf("EL737: Sending stop\n"); strcpy(command,"S"); return el737_transactCommand(priv,command,reply); } @@ -440,7 +444,7 @@ static void runEvents(EL737priv *priv) } sprintf(command,"DL %d %d", (int)threshCounter, (int)myThreshold); - errlogPrintf("Sending threshold command %s\n", command); + // errlogPrintf("Sending threshold command %s\n", command); status = el737_transactCommand(priv,command,reply); sprintf(command,"DR %d", (int)threshCounter); status = el737_transactCommand(priv, command,reply); @@ -458,7 +462,7 @@ static void runEvents(EL737priv *priv) if(priv->presets[THRESHMON] > 0) { sprintf(command,"DL %d %d", (int)priv->presets[THRESHMON], (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); sprintf(command,"DR %d", (int)priv->presets[THRESHMON]); 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->presets[MODE] > 0) { /* preset monitor */ sprintf(command,"MP %d", (int)priv->presets[MONITOR]); - //errlogPrintf("Starting preset monitor\n"); + // errlogPrintf("EL737: Starting preset monitor\n"); } else { /* preset time */ 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); if(status == asynSuccess){ @@ -552,11 +556,11 @@ static void el737Thread(void *param) int rs, ctStatus; long dbStatus, options, nElements = 1, pauseFlag = 0; - //errlogPrintf("Within EL737 thread \n"); + // errlogPrintf("EL737: Within EL737 thread \n"); while(1){ 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) { /* @@ -583,7 +587,7 @@ static void el737Thread(void *param) if(status != asynSuccess){ errlogPrintf("devScalerEL737::el737Thread communication problem %s\n", priv->asynContext->errorMessage); - break; + continue; } sscanf(reply,"%d",&rs); //errlogPrintf("RS = %d\n", rs); @@ -632,7 +636,7 @@ static void el737Thread(void *param) if(status != asynSuccess){ errlogPrintf("devScalerEL737::el737Thread communication problem %s\n", priv->asynContext->errorMessage); - break; + continue; } } else if(pauseFlag == 0 && ctStatus == 3){ strcpy(command,"CO"); @@ -640,7 +644,7 @@ static void el737Thread(void *param) if(status != asynSuccess){ errlogPrintf("devScalerEL737::el737Thread communication problem %s\n", priv->asynContext->errorMessage); - break; + continue; } } }