dxp 3-0
Classes | Defines | Typedefs | Enumerations | Functions
/home/epics/devel/dxp/dxpApp/src/NDDxp.cpp File Reference
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <epicsString.h>
#include <epicsTime.h>
#include <epicsThread.h>
#include <epicsEvent.h>
#include <epicsMutex.h>
#include <epicsExit.h>
#include <envDefs.h>
#include <iocsh.h>
#include <handel.h>
#include <handel_errors.h>
#include <handel_generic.h>
#include <xerxes_generic.h>
#include <md_generic.h>
#include <handel_constants.h>
#include <drvMca.h>
#include <asynNDArrayDriver.h>
#include "NDDxp.h"
#include <epicsExport.h>

Classes

struct  moduleStatistics
class  NDDxp

Defines

#define epicsExportSharedSymbols
#define MAX_CHANNELS_PER_CARD   4
#define DXP_ALL   -1
#define MAX_MCA_BINS   16384
#define MCA_BIN_RES   256
#define DXP_MAX_SCAS   64
#define LEN_SCA_NAME   10
#define MAPPING_CLOCK_PERIOD   320e-9
#define DXP_MAX_LL_PARAMS   230
#define MAPPING_BUFFER_SIZE   2097152
 < The maximum number of bytes in the 2MB mapping mode buffer
#define XMAP_BUFFER_READ_SIZE   2*MAPPING_BUFFER_SIZE
 < The XMAP buffer takes up 2MB of 16bit words.
#define MEGABYTE   1048576
#define CALLHANDEL(handel_call, msg)
#define NDDxpCollectModeString   "DxpCollectMode"
#define NDDxpListModeString   "DxpListMode"
#define NDDxpPixelAdvanceModeString   "DxpPixelAdvanceMode"
#define NDDxpCurrentPixelString   "DxpCurrentPixel"
#define NDDxpNextPixelString   "DxpNextPixel"
#define NDDxpPixelsPerBufferString   "DxpPixelsPerBuffer"
#define NDDxpAutoPixelsPerBufferString   "DxpAutoPixelsPerBuffer"
#define NDDxpPixelsPerRunString   "DxpPixelsPerRun"
#define NDDxpBufferOverrunString   "DxpBufferOverrun"
#define NDDxpMBytesReadString   "DxpMBytesRead"
#define NDDxpReadRateString   "DxpReadRate"
#define NDDxpIgnoreGateString   "DxpIgnoreGate"
#define NDDxpSyncCountString   "DxpSyncCount"
#define NDDxpInputLogicPolarityString   "DxpInputLogicPolarity"
#define NDDxpErasedString   "DxpErased"
#define NDDxpAcquiringString   "NDDxpAcquiring"
#define NDDxpBufferCounterString   "DxpBufferCounter"
#define NDDxpPollTimeString   "DxpPollTime"
#define NDDxpForceReadString   "DxpForceRead"
#define NDDxpApplyString   "DxpApply"
#define NDDxpAutoApplyString   "DxpAutoApply"
#define NDDxpTraceModeString   "DxpTraceMode"
#define NDDxpTraceTimeString   "DxpTraceTime"
#define NDDxpNewTraceTimeString   "DxpNewTraceTime"
#define NDDxpTraceDataString   "DxpTraceData"
#define NDDxpTraceTimeArrayString   "DxpTraceTimeArray"
#define NDDxpBaselineHistogramString   "DxpBaselineHistogram"
#define NDDxpBaselineEnergyString   "DxpBaselineEnergy"
#define NDDxpBaselineEnergyArrayString   "DxpBaselineEnergyArray"
#define NDDxpTriggerLiveTimeString   "DxpTriggerLiveTime"
#define NDDxpTriggersString   "DxpTriggers"
#define NDDxpEventsString   "DxpEvents"
#define NDDxpOverflowsString   "DxpOverflows"
#define NDDxpUnderflowsString   "DxpUnderflows"
#define NDDxpInputCountRateString   "DxpInputCountRate"
#define NDDxpOutputCountRateString   "DxpOutputCountRate"
#define NDDxpPeakingTimeString   "DxpPeakingTime"
#define NDDxpDynamicRangeString   "DxpDynamicRange"
#define NDDxpTriggerThresholdString   "DxpTriggerThreshold"
#define NDDxpBaselineThresholdString   "DxpBaselineThreshold"
#define NDDxpEnergyThresholdString   "DxpEnergyThreshold"
#define NDDxpCalibrationEnergyString   "DxpCalibrationEnergy"
#define NDDxpADCPercentRuleString   "DxpADCPercentRule"
#define NDDxpMCABinWidthString   "DxpMCABinWidth"
#define NDDxpMaxEnergyString   "DxpMaxEnergy"
#define NDDxpPreampGainString   "DxpPreampGain"
#define NDDxpNumMCAChannelsString   "DxpNumMCAChannels"
#define NDDxpDetectorPolarityString   "DxpDetectorPolarity"
#define NDDxpResetDelayString   "DxpResetDelay"
#define NDDxpDecayTimeString   "DxpDecayTime"
#define NDDxpGapTimeString   "DxpGapTime"
#define NDDxpTriggerPeakingTimeString   "DxpTriggerPeakingTime"
#define NDDxpTriggerGapTimeString   "DxpTriggerGapTime"
#define NDDxpBaselineAverageString   "DxpBaselineAverage"
#define NDDxpBaselineCutString   "DxpBaselineCut"
#define NDDxpEnableBaselineCutString   "DxpEnableBaselineCut"
#define NDDxpMaxWidthString   "DxpMaxWidth"
#define NDDxpPresetModeString   "DxpPresetMode"
#define NDDxpPresetEventsString   "DxpPresetEvents"
#define NDDxpPresetTriggersString   "DxpPresetTriggers"
#define NDDxpSpectrumXAxisString   "DxpSpectrumXAxis"
#define NDDxpNumSCAsString   "DxpNumSCAs"
#define NDDxpMaxSCAsString   "DxpMaxSCAs"
#define NDDxpSaveSystemFileString   "DxpSaveSystemFile"
#define NDDxpSaveSystemString   "DxpSaveSystem"
#define NDDxpNumLLParamsString   "DxpNumLLParams"
#define NDDxpReadLLParamsString   "DxpReadLLParams"
#define FIRST_DXP_PARAM   NDDxpCollectMode
 < Change mapping mode (0=mca; 1=spectra mapping; 2=sca mapping) (int32 read/write) addr: all/any
#define LAST_DXP_PARAM   NDDxpLLParamVals[DXP_MAX_LL_PARAMS-1]
#define NUM_DXP_PARAMS   (&LAST_DXP_PARAM - &FIRST_DXP_PARAM + 1)
 Number of asyn parameters (asyn commands) this driver supports.

Typedefs

typedef struct moduleStatistics moduleStatistics

Enumerations

enum  NDDxpModel_t { NDDxpModelXMAP, NDDxpModelMercury, NDDxpModelSaturn, NDDxpModel4C2X }
enum  NDDxpCollectMode_t { NDDxpModeMCA, NDDxpModeSpectraMapping, NDDxpModeSCAMapping, NDDxpModeListMapping }
enum  NDDxpListMode_t { NDDxpListModeGate, NDDxpListModeSync, NDDxpListModeClock }
enum  NDDxpPresetMode_t {
  NDDxpPresetModeNone, NDDxpPresetModeReal, NDDxpPresetModeLive, NDDxpPresetModeEvents,
  NDDxpPresetModeTriggers
}
enum  NDDxpPixelAdvanceMode_t { NDDxpPixelAdvanceGate, NDDxpPixelAdvanceSync }
enum  NDDxpTraceMode_t {
  NDDxpTraceADC, NDDxpTraceBaselineHistory, NDDxpTraceTriggerFilter, NDDxpTraceBaselineFilter,
  NDDxpTraceEnergyFilter, NDDxpTraceBaselineSamples, NDDxpTraceEnergySamples
}

Functions

int NDDxpConfig (const char *portName, int nChannels, int maxBuffers, size_t maxMemory)
 epicsExportRegistrar (NDDxpRegister)

Define Documentation

#define CALLHANDEL (   handel_call,
  msg 
)
Value:
{ \
    xiastatus = handel_call; \
    status = this->xia_checkError( pasynUser, xiastatus, msg ); \
}
#define DXP_ALL   -1
#define DXP_MAX_LL_PARAMS   230
#define DXP_MAX_SCAS   64
#define epicsExportSharedSymbols
#define FIRST_DXP_PARAM   NDDxpCollectMode

< Change mapping mode (0=mca; 1=spectra mapping; 2=sca mapping) (int32 read/write) addr: all/any

#define LAST_DXP_PARAM   NDDxpLLParamVals[DXP_MAX_LL_PARAMS-1]
#define LEN_SCA_NAME   10
#define MAPPING_BUFFER_SIZE   2097152

< The maximum number of bytes in the 2MB mapping mode buffer

#define MAPPING_CLOCK_PERIOD   320e-9
#define MAX_CHANNELS_PER_CARD   4
#define MAX_MCA_BINS   16384
#define MCA_BIN_RES   256
#define MEGABYTE   1048576
#define NDDxpAcquiringString   "NDDxpAcquiring"
#define NDDxpADCPercentRuleString   "DxpADCPercentRule"
#define NDDxpApplyString   "DxpApply"
#define NDDxpAutoApplyString   "DxpAutoApply"
#define NDDxpAutoPixelsPerBufferString   "DxpAutoPixelsPerBuffer"
#define NDDxpBaselineAverageString   "DxpBaselineAverage"
#define NDDxpBaselineCutString   "DxpBaselineCut"
#define NDDxpBaselineEnergyArrayString   "DxpBaselineEnergyArray"
#define NDDxpBaselineEnergyString   "DxpBaselineEnergy"
#define NDDxpBaselineHistogramString   "DxpBaselineHistogram"
#define NDDxpBaselineThresholdString   "DxpBaselineThreshold"
#define NDDxpBufferCounterString   "DxpBufferCounter"
#define NDDxpBufferOverrunString   "DxpBufferOverrun"
#define NDDxpCalibrationEnergyString   "DxpCalibrationEnergy"
#define NDDxpCollectModeString   "DxpCollectMode"
#define NDDxpCurrentPixelString   "DxpCurrentPixel"
#define NDDxpDecayTimeString   "DxpDecayTime"
#define NDDxpDetectorPolarityString   "DxpDetectorPolarity"
#define NDDxpDynamicRangeString   "DxpDynamicRange"
#define NDDxpEnableBaselineCutString   "DxpEnableBaselineCut"
#define NDDxpEnergyThresholdString   "DxpEnergyThreshold"
#define NDDxpErasedString   "DxpErased"
#define NDDxpEventsString   "DxpEvents"
#define NDDxpForceReadString   "DxpForceRead"
#define NDDxpGapTimeString   "DxpGapTime"
#define NDDxpIgnoreGateString   "DxpIgnoreGate"
#define NDDxpInputCountRateString   "DxpInputCountRate"
#define NDDxpInputLogicPolarityString   "DxpInputLogicPolarity"
#define NDDxpListModeString   "DxpListMode"
#define NDDxpMaxEnergyString   "DxpMaxEnergy"
#define NDDxpMaxSCAsString   "DxpMaxSCAs"
#define NDDxpMaxWidthString   "DxpMaxWidth"
#define NDDxpMBytesReadString   "DxpMBytesRead"
#define NDDxpMCABinWidthString   "DxpMCABinWidth"
#define NDDxpNewTraceTimeString   "DxpNewTraceTime"
#define NDDxpNextPixelString   "DxpNextPixel"
#define NDDxpNumLLParamsString   "DxpNumLLParams"
#define NDDxpNumMCAChannelsString   "DxpNumMCAChannels"
#define NDDxpNumSCAsString   "DxpNumSCAs"
#define NDDxpOutputCountRateString   "DxpOutputCountRate"
#define NDDxpOverflowsString   "DxpOverflows"
#define NDDxpPeakingTimeString   "DxpPeakingTime"
#define NDDxpPixelAdvanceModeString   "DxpPixelAdvanceMode"
#define NDDxpPixelsPerBufferString   "DxpPixelsPerBuffer"
#define NDDxpPixelsPerRunString   "DxpPixelsPerRun"
#define NDDxpPollTimeString   "DxpPollTime"
#define NDDxpPreampGainString   "DxpPreampGain"
#define NDDxpPresetEventsString   "DxpPresetEvents"
#define NDDxpPresetModeString   "DxpPresetMode"
#define NDDxpPresetTriggersString   "DxpPresetTriggers"
#define NDDxpReadLLParamsString   "DxpReadLLParams"
#define NDDxpReadRateString   "DxpReadRate"
#define NDDxpResetDelayString   "DxpResetDelay"
#define NDDxpSaveSystemFileString   "DxpSaveSystemFile"
#define NDDxpSaveSystemString   "DxpSaveSystem"
#define NDDxpSpectrumXAxisString   "DxpSpectrumXAxis"
#define NDDxpSyncCountString   "DxpSyncCount"
#define NDDxpTraceDataString   "DxpTraceData"
#define NDDxpTraceModeString   "DxpTraceMode"
#define NDDxpTraceTimeArrayString   "DxpTraceTimeArray"
#define NDDxpTraceTimeString   "DxpTraceTime"
#define NDDxpTriggerGapTimeString   "DxpTriggerGapTime"
#define NDDxpTriggerLiveTimeString   "DxpTriggerLiveTime"
#define NDDxpTriggerPeakingTimeString   "DxpTriggerPeakingTime"
#define NDDxpTriggersString   "DxpTriggers"
#define NDDxpTriggerThresholdString   "DxpTriggerThreshold"
#define NDDxpUnderflowsString   "DxpUnderflows"
#define NUM_DXP_PARAMS   (&LAST_DXP_PARAM - &FIRST_DXP_PARAM + 1)

Number of asyn parameters (asyn commands) this driver supports.

This algorithm does NOT include the low-level parameters whose number we can only determine at run-time. That value is passed to the constructor.

#define XMAP_BUFFER_READ_SIZE   2*MAPPING_BUFFER_SIZE

< The XMAP buffer takes up 2MB of 16bit words.

Unfortunatly the transfer over PCI uses 32bit words, so the data we receive from from the Handel library is 2x2MB.


Typedef Documentation


Enumeration Type Documentation

Enumerator:
NDDxpModeMCA 
NDDxpModeSpectraMapping 
NDDxpModeSCAMapping 
NDDxpModeListMapping 
Enumerator:
NDDxpListModeGate 
NDDxpListModeSync 
NDDxpListModeClock 
Enumerator:
NDDxpModelXMAP 
NDDxpModelMercury 
NDDxpModelSaturn 
NDDxpModel4C2X 
Enumerator:
NDDxpPixelAdvanceGate 
NDDxpPixelAdvanceSync 
Enumerator:
NDDxpPresetModeNone 
NDDxpPresetModeReal 
NDDxpPresetModeLive 
NDDxpPresetModeEvents 
NDDxpPresetModeTriggers 
Enumerator:
NDDxpTraceADC 
NDDxpTraceBaselineHistory 
NDDxpTraceTriggerFilter 
NDDxpTraceBaselineFilter 
NDDxpTraceEnergyFilter 
NDDxpTraceBaselineSamples 
NDDxpTraceEnergySamples 

Function Documentation

epicsExportRegistrar ( NDDxpRegister  )
int NDDxpConfig ( const char *  portName,
int  nChannels,
int  maxBuffers,
size_t  maxMemory 
)