dxp 3-0
|
#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 CALLHANDEL | ( | handel_call, | |
msg | |||
) |
{ \ 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 struct moduleStatistics moduleStatistics |
enum NDDxpCollectMode_t |
enum NDDxpListMode_t |
enum NDDxpModel_t |
enum NDDxpPresetMode_t |
enum NDDxpTraceMode_t |
epicsExportRegistrar | ( | NDDxpRegister | ) |
int NDDxpConfig | ( | const char * | portName, |
int | nChannels, | ||
int | maxBuffers, | ||
size_t | maxMemory | ||
) |