11 #include <epicsExit.h>
12 #include <epicsRingBytes.h>
13 #include <epicsMessageQueue.h>
18 #define P_AcquireModeString "QE_ACQUIRE_MODE"
19 #define P_CurrentOffsetString "QE_CURRENT_OFFSET"
20 #define P_CurrentScaleString "QE_CURRENT_SCALE"
21 #define P_PositionOffsetString "QE_POSITION_OFFSET"
22 #define P_PositionScaleString "QE_POSITION_SCALE"
23 #define P_GeometryString "QE_GEOMETRY"
24 #define P_DoubleDataString "QE_DOUBLE_DATA"
25 #define P_IntArrayDataString "QE_INT_ARRAY_DATA"
26 #define P_RingOverflowsString "QE_RING_OVERFLOWS"
27 #define P_ReadDataString "QE_READ_DATA"
28 #define P_PingPongString "QE_PING_PONG"
29 #define P_IntegrationTimeString "QE_INTEGRATION_TIME"
30 #define P_SampleTimeString "QE_SAMPLE_TIME"
31 #define P_RangeString "QE_RANGE"
32 #define P_ResetString "QE_RESET"
33 #define P_TriggerModeString "QE_TRIGGER_MODE"
34 #define P_TriggerPolarityString "QE_TRIGGER_POLARITY"
35 #define P_NumChannelsString "QE_NUM_CHANNELS"
36 #define P_BiasStateString "QE_BIAS_STATE"
37 #define P_BiasVoltageString "QE_BIAS_VOLTAGE"
38 #define P_BiasInterlockString "QE_BIAS_INTERLOCK"
39 #define P_HVSReadbackString "QE_HVS_READBACK"
40 #define P_HVVReadbackString "QE_HVV_READBACK"
41 #define P_HVIReadbackString "QE_HVI_READBACK"
42 #define P_TemperatureString "QE_TEMPERATURE"
43 #define P_ReadStatusString "QE_READ_STATUS"
44 #define P_ResolutionString "QE_RESOLUTION"
45 #define P_ValuesPerReadString "QE_VALUES_PER_READ"
46 #define P_ReadFormatString "QE_READ_FORMAT"
47 #define P_AveragingTimeString "QE_AVERAGING_TIME"
48 #define P_NumAverageString "QE_NUM_AVERAGE"
49 #define P_NumAveragedString "QE_NUM_AVERAGED"
50 #define P_NumAcquireString "QE_NUM_ACQUIRE"
51 #define P_NumAcquiredString "QE_NUM_ACQUIRED"
52 #define P_ModelString "QE_MODEL"
53 #define P_FirmwareString "QE_FIRMWARE"
123 #define QE_MAX_DATA (QEPositionY+1)
124 #define QE_MAX_INPUTS 4
125 #define QE_DEFAULT_RING_BUFFER_SIZE 2048
133 virtual asynStatus
writeInt32(asynUser *pasynUser, epicsInt32 value);
134 virtual asynStatus
writeFloat64(asynUser *pasynUser, epicsFloat64 value);
141 #define FIRST_QE_COMMAND P_AcquireMode
187 virtual asynStatus
reset()=0;
188 virtual asynStatus
setAcquire(epicsInt32 value);
198 virtual asynStatus
setRange(epicsInt32 value);
207 virtual asynStatus doDataCallbacks(
int numRead);
210 epicsRingBytesId ringBuffer_;
211 epicsMessageQueueId msgQId_;
virtual asynStatus triggerCallbacks()
Definition: drvQuadEM.cpp:243
virtual asynStatus readStatus()=0
int P_ReadData
Definition: drvQuadEM.h:150
Definition: drvQuadEM.h:58
int P_HVSReadback
Definition: drvQuadEM.h:162
Definition: drvQuadEM.h:68
Definition: drvQuadEM.h:60
int P_IntArrayData
Definition: drvQuadEM.h:148
virtual asynStatus setTriggerPolarity(epicsInt32 value)
Definition: drvQuadEM.cpp:625
int numChannels_
Definition: drvQuadEM.h:180
int P_AveragingTime
Definition: drvQuadEM.h:170
Definition: drvQuadEM.h:119
Definition: drvQuadEM.h:76
int P_Range
Definition: drvQuadEM.h:154
int P_Model
Definition: drvQuadEM.h:175
int P_SampleTime
Definition: drvQuadEM.h:153
int P_BiasVoltage
Definition: drvQuadEM.h:160
Definition: drvQuadEM.h:102
Base class to control the quad electrometer.
Definition: drvQuadEM.h:128
int P_NumAcquired
Definition: drvQuadEM.h:174
Definition: drvQuadEM.h:61
Definition: drvQuadEM.h:82
int P_NumChannels
Definition: drvQuadEM.h:158
#define QE_MAX_INPUTS
Definition: drvQuadEM.h:124
QEAcquireMode_t
Definition: drvQuadEM.h:93
QETriggerMode_t
Definition: drvQuadEM.h:100
int P_Temperature
Definition: drvQuadEM.h:165
virtual asynStatus setAveragingTime(epicsFloat64 value)
Definition: drvQuadEM.cpp:613
int P_CurrentScale
Definition: drvQuadEM.h:143
Definition: drvQuadEM.h:105
Definition: drvQuadEM.h:83
Definition: drvQuadEM.h:77
virtual asynStatus setReadFormat(epicsInt32 value)
Definition: drvQuadEM.cpp:622
int P_ReadStatus
Definition: drvQuadEM.h:166
Definition: drvQuadEM.h:88
int valuesPerRead_
Definition: drvQuadEM.h:181
QETriggerPolarity_t
Definition: drvQuadEM.h:109
int P_CurrentOffset
Definition: drvQuadEM.h:142
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Called when asyn clients call pasynInt32->write().
Definition: drvQuadEM.cpp:376
char * portName
The name of this asyn port.
Definition: asynPortDriver.h:201
int P_NumAveraged
Definition: drvQuadEM.h:172
int P_Reset
Definition: drvQuadEM.h:155
Definition: drvQuadEM.h:101
virtual asynStatus setResolution(epicsInt32 value)
Definition: drvQuadEM.cpp:623
int resolution_
Definition: drvQuadEM.h:179
int P_TriggerPolarity
Definition: drvQuadEM.h:157
Definition: drvQuadEM.h:74
virtual void exitHandler()
Definition: drvQuadEM.cpp:611
This is the class from which NDArray drivers are derived; implements the asynGenericPointer functions...
Definition: asynNDArrayDriver.h:132
Definition: drvQuadEM.h:75
Definition: drvQuadEM.h:84
virtual asynStatus setRange(epicsInt32 value)
Definition: drvQuadEM.cpp:621
Definition: drvQuadEM.h:111
Definition: drvQuadEM.h:103
virtual asynStatus setBiasVoltage(epicsFloat64 value)
Definition: drvQuadEM.cpp:615
Definition: drvQuadEM.h:80
QEData_t
Definition: drvQuadEM.h:73
int P_NumAcquire
Definition: drvQuadEM.h:173
virtual asynStatus setIntegrationTime(epicsFloat64 value)
Definition: drvQuadEM.cpp:617
int P_NumAverage
Definition: drvQuadEM.h:171
drvQuadEM(const char *portName, int ringBufferSize)
Constructor for the drvQuadEM class.
Definition: drvQuadEM.cpp:50
virtual asynStatus setBiasInterlock(epicsInt32 value)
Definition: drvQuadEM.cpp:616
virtual asynStatus reset()=0
Downloads all of the current EPICS settings to the electrometer.
Definition: drvQuadEM.cpp:563
int P_BiasState
Definition: drvQuadEM.h:159
virtual asynStatus setValuesPerRead(epicsInt32 value)
Definition: drvQuadEM.cpp:626
int P_ReadFormat
Definition: drvQuadEM.h:169
int P_DoubleData
Definition: drvQuadEM.h:147
int P_PingPong
Definition: drvQuadEM.h:151
int P_RingOverflows
Definition: drvQuadEM.h:149
Definition: drvQuadEM.h:81
int P_HVIReadback
Definition: drvQuadEM.h:164
int P_BiasInterlock
Definition: drvQuadEM.h:161
int P_ValuesPerRead
Definition: drvQuadEM.h:168
int P_HVVReadback
Definition: drvQuadEM.h:163
void computePositions(epicsFloat64 raw[QE_MAX_INPUTS])
This function computes the sums, diffs and positions, and does callbacks.
Definition: drvQuadEM.cpp:156
Definition: drvQuadEM.h:67
Definition: drvQuadEM.h:79
QEGeometry_t
Definition: drvQuadEM.h:87
Definition: drvQuadEM.h:66
virtual asynStatus setNumAcquire(epicsInt32 value)
Definition: drvQuadEM.cpp:619
Definition: drvQuadEM.h:65
Definition: drvQuadEM.h:118
Definition: drvQuadEM.h:69
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value)
Called when asyn clients call pasynFloat64->write().
Definition: drvQuadEM.cpp:490
Definition: drvQuadEM.h:62
Definition: drvQuadEM.h:63
virtual asynStatus setBiasState(epicsInt32 value)
Definition: drvQuadEM.cpp:614
int P_TriggerMode
Definition: drvQuadEM.h:156
Definition: drvQuadEM.h:59
virtual asynStatus setPingPong(epicsInt32 value)
Definition: drvQuadEM.cpp:620
int numAcquired_
Definition: drvQuadEM.h:183
Definition: drvQuadEM.h:95
Definition: drvQuadEM.h:78
virtual asynStatus setAcquire(epicsInt32 value)
Starts and stops the electrometer.
Definition: drvQuadEM.cpp:546
Definition: drvQuadEM.h:64
virtual asynStatus setTriggerMode(epicsInt32 value)
Definition: drvQuadEM.cpp:624
void callbackTask()
Definition: drvQuadEM.cpp:329
int P_IntegrationTime
Definition: drvQuadEM.h:152
Definition: drvQuadEM.h:96
Definition: drvQuadEM.h:94
int P_AcquireMode
Values used for pasynUser->reason, and indexes into the parameter library.
Definition: drvQuadEM.h:140
Definition: drvQuadEM.h:89
QEReadFormat_t
Definition: drvQuadEM.h:117
int P_Resolution
Definition: drvQuadEM.h:167
Definition: drvQuadEM.h:110
QEModel_t
Definition: drvQuadEM.h:57
virtual asynStatus setAcquireMode(epicsInt32 value)
Definition: drvQuadEM.cpp:612
int P_PositionOffset
Definition: drvQuadEM.h:144
int acquiring_
Definition: drvQuadEM.h:182
Definition: drvQuadEM.h:104
int P_PositionScale
Definition: drvQuadEM.h:145
int P_Geometry
Definition: drvQuadEM.h:146
int P_Firmware
Definition: drvQuadEM.h:176
virtual asynStatus setNumChannels(epicsInt32 value)
Definition: drvQuadEM.cpp:618