areaDetector  3-13
EPICS areaDetector framework
Classes | Macros | Typedefs | Enumerations | Functions
adsc.cpp File Reference
#include <stddef.h>
#include <stdlib.h>
#include <stdarg.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <libgen.h>
#include <epicsAssert.h>
#include <epicsTime.h>
#include <epicsThread.h>
#include <epicsEvent.h>
#include <epicsString.h>
#include <epicsStdio.h>
#include <epicsMutex.h>
#include <cantProceed.h>
#include <iocsh.h>
#include <epicsExport.h>
#include "ADDriver.h"
#include <detcon_entry.h>
#include <detcon_par.h>
#include <detcon_state.h>

Classes

struct  AdscSensor_t
 ADSC sensor structure. More...
 
class  adsc
 Driver for ADSC detectors (Q4, Q4r, Q210, Q210r, Q270, Q315, Q315r). More...
 

Macros

#define ADSC_CCD_INITIALIZE_SLEEP_TIME   0.5
 
#define ADSC_CCD_INITIALIZE_TIMEOUT   10.0
 
#define PATH_COMPONENT_SEPARATOR   "/"
 
#define START_EXPOSURE_TIMEOUT   30.0
 
#define STOP_EXPOSURE_TIMEOUT   10.0
 
#define STATE_POLL_DELAY   0.05
 
#define NUM_ADSC_MODELS
 
#define NUM_ADSC_CCD_STATES
 
#define AdscReadConditionString   "ADSC_READ_CONDITION"
 Driver-specific parameters for the ADSC driver. More...
 
#define AdscStateString   "ADSC_STATE"
 
#define AdscStatusString   "ADSC_STATUS"
 
#define AdscLastErrorString   "ADSC_LAST_ERROR"
 
#define AdscSoftwareResetString   "ADSC_SOFTWARE_RESET"
 
#define AdscLastImageString   "ADSC_LAST_IMAGE"
 
#define AdscOkToExposeString   "ADSC_OK_TO_EXPOSE"
 
#define AdscExternSwTriggerControlString   "ADSC_EXTERN_SW_TRIGGER_CTRL"
 
#define AdscReuseDarksString   "ADSC_REUSE_DARKS"
 
#define AdscDezingerString   "ADSC_DEZINGER"
 
#define AdscAdcString   "ADSC_ADC"
 
#define AdscRawString   "ADSC_RAW"
 
#define AdscImageTransformString   "ADSC_IMAGE_TRANSFORM"
 
#define AdscStoredDarksString   "ADSC_STORED_DARKS"
 
#define AdscBeamCenterXString   "ADSC_BEAM_CENTER_X"
 
#define AdscBeamCenterYString   "ADSC_BEAM_CENTER_Y"
 
#define AdscDistanceString   "ADSC_DISTANCE"
 
#define AdscTwoThetaString   "ADSC_TWO_THETA"
 
#define AdscAxisString   "ADSC_AXIS"
 
#define AdscWavelengthString   "ADSC_WAVELENGTH"
 
#define AdscImageWidthString   "ADSC_IMAGE_WIDTH"
 
#define AdscPhiString   "ADSC_PHI"
 
#define AdscOmegaString   "ADSC_OMEGA"
 
#define AdscPrivateStopExpRetryCntString   "ADSC_PRVT_STOP_EXP_RTRY_CNT"
 
#define AdscKappaString   "ADSC_KAPPA"
 
#define FIRST_ADSC_PARAM   AdscReadCondition
 
#define LAST_ADSC_PARAM   AdscPrivateStopExpRetryCnt
 
#define NUM_ADSC_PARAMS   ((int)(&LAST_ADSC_PARAM - &FIRST_ADSC_PARAM + 1))
 

Typedefs

typedef struct AdscSensor_t AdscSensor_t
 ADSC sensor structure. More...
 

Enumerations

enum  AdscStatus_t {
  AdscStatusOk , AdscStatusInterrupt , AdscStatusTimeout , AdscStatusAgain ,
  AdscStatusError
}
 Status choices. More...
 
enum  AdscExternSwTriggerControl_t { AdscExternSwTriggerControlStop , AdscExternSwTriggerControlStart , AdscExternSwTriggerControlOk , AdscExternSwTriggerControlAgain }
 Trigger choices. More...
 
enum  AdscModel_t {
  AdscQ4 , AdscQ4r , AdscQ210 , AdscQ210r ,
  AdscQ270 , AdscQ315 , AdscQ315r
}
 Model choices. More...
 
enum  AdscTriggerStartMode_t { AdscTriggerStartInternal , AdscTriggerStartExternSw , NUM_START_TRIGGER_MODES }
 These parameters describe the trigger modes of this driver; they must agree with the values in the mbbo/mbbi records in the adsc.template database (or the ADBase.template database if the default is used) More...
 

Functions

int adscConfig (const char *portName, const char *modelName)
 
 epicsExportRegistrar (adscRegister)
 

Macro Definition Documentation

◆ ADSC_CCD_INITIALIZE_SLEEP_TIME

#define ADSC_CCD_INITIALIZE_SLEEP_TIME   0.5

◆ ADSC_CCD_INITIALIZE_TIMEOUT

#define ADSC_CCD_INITIALIZE_TIMEOUT   10.0

◆ AdscAdcString

#define AdscAdcString   "ADSC_ADC"

◆ AdscAxisString

#define AdscAxisString   "ADSC_AXIS"

◆ AdscBeamCenterXString

#define AdscBeamCenterXString   "ADSC_BEAM_CENTER_X"

◆ AdscBeamCenterYString

#define AdscBeamCenterYString   "ADSC_BEAM_CENTER_Y"

◆ AdscDezingerString

#define AdscDezingerString   "ADSC_DEZINGER"

◆ AdscDistanceString

#define AdscDistanceString   "ADSC_DISTANCE"

◆ AdscExternSwTriggerControlString

#define AdscExternSwTriggerControlString   "ADSC_EXTERN_SW_TRIGGER_CTRL"

◆ AdscImageTransformString

#define AdscImageTransformString   "ADSC_IMAGE_TRANSFORM"

◆ AdscImageWidthString

#define AdscImageWidthString   "ADSC_IMAGE_WIDTH"

◆ AdscKappaString

#define AdscKappaString   "ADSC_KAPPA"

◆ AdscLastErrorString

#define AdscLastErrorString   "ADSC_LAST_ERROR"

◆ AdscLastImageString

#define AdscLastImageString   "ADSC_LAST_IMAGE"

◆ AdscOkToExposeString

#define AdscOkToExposeString   "ADSC_OK_TO_EXPOSE"

◆ AdscOmegaString

#define AdscOmegaString   "ADSC_OMEGA"

◆ AdscPhiString

#define AdscPhiString   "ADSC_PHI"

◆ AdscPrivateStopExpRetryCntString

#define AdscPrivateStopExpRetryCntString   "ADSC_PRVT_STOP_EXP_RTRY_CNT"

◆ AdscRawString

#define AdscRawString   "ADSC_RAW"

◆ AdscReadConditionString

#define AdscReadConditionString   "ADSC_READ_CONDITION"

Driver-specific parameters for the ADSC driver.

◆ AdscReuseDarksString

#define AdscReuseDarksString   "ADSC_REUSE_DARKS"

◆ AdscSoftwareResetString

#define AdscSoftwareResetString   "ADSC_SOFTWARE_RESET"

◆ AdscStateString

#define AdscStateString   "ADSC_STATE"

◆ AdscStatusString

#define AdscStatusString   "ADSC_STATUS"

◆ AdscStoredDarksString

#define AdscStoredDarksString   "ADSC_STORED_DARKS"

◆ AdscTwoThetaString

#define AdscTwoThetaString   "ADSC_TWO_THETA"

◆ AdscWavelengthString

#define AdscWavelengthString   "ADSC_WAVELENGTH"

◆ FIRST_ADSC_PARAM

#define FIRST_ADSC_PARAM   AdscReadCondition

◆ LAST_ADSC_PARAM

#define LAST_ADSC_PARAM   AdscPrivateStopExpRetryCnt

◆ NUM_ADSC_CCD_STATES

#define NUM_ADSC_CCD_STATES
Value:
((int)(sizeof(AdscCcdStateStrings) / \
sizeof(AdscCcdStateStrings[0])))

◆ NUM_ADSC_MODELS

#define NUM_ADSC_MODELS
Value:
((int)(sizeof(AdscModelStrings) / \
sizeof(AdscModelStrings[0])))

◆ NUM_ADSC_PARAMS

#define NUM_ADSC_PARAMS   ((int)(&LAST_ADSC_PARAM - &FIRST_ADSC_PARAM + 1))

◆ PATH_COMPONENT_SEPARATOR

#define PATH_COMPONENT_SEPARATOR   "/"

◆ START_EXPOSURE_TIMEOUT

#define START_EXPOSURE_TIMEOUT   30.0

◆ STATE_POLL_DELAY

#define STATE_POLL_DELAY   0.05

◆ STOP_EXPOSURE_TIMEOUT

#define STOP_EXPOSURE_TIMEOUT   10.0

Typedef Documentation

◆ AdscSensor_t

typedef struct AdscSensor_t AdscSensor_t

ADSC sensor structure.

Enumeration Type Documentation

◆ AdscExternSwTriggerControl_t

Trigger choices.

Enumerator
AdscExternSwTriggerControlStop 
AdscExternSwTriggerControlStart 
AdscExternSwTriggerControlOk 
AdscExternSwTriggerControlAgain 

◆ AdscModel_t

Model choices.

Enumerator
AdscQ4 
AdscQ4r 
AdscQ210 
AdscQ210r 
AdscQ270 
AdscQ315 
AdscQ315r 

◆ AdscStatus_t

Status choices.

Enumerator
AdscStatusOk 
AdscStatusInterrupt 
AdscStatusTimeout 
AdscStatusAgain 
AdscStatusError 

◆ AdscTriggerStartMode_t

These parameters describe the trigger modes of this driver; they must agree with the values in the mbbo/mbbi records in the adsc.template database (or the ADBase.template database if the default is used)

Enumerator
AdscTriggerStartInternal 
AdscTriggerStartExternSw 
NUM_START_TRIGGER_MODES 

Function Documentation

◆ adscConfig()

int adscConfig ( const char *  portName,
const char *  modelName 
)

◆ epicsExportRegistrar()

epicsExportRegistrar ( adscRegister  )