ngscopeclient 0.1-dev+51fbda87c
Public Member Functions | Static Public Member Functions | Protected Types | Protected Attributes | List of all members

Driver for Aseq Instruments LR1/HR1 spectrometers via the scopehal-aseq-bridge server. More...

#include <AseqSpectrometer.h>

Inheritance diagram for AseqSpectrometer:
Inheritance graph
[legend]
Collaboration diagram for AseqSpectrometer:
Collaboration graph
[legend]

Public Member Functions

 AseqSpectrometer (SCPITransport *transport)
 Initialize the driver. More...
 
 AseqSpectrometer (const AseqSpectrometer &rhs)=delete
 
AseqSpectrometeroperator= (const AseqSpectrometer &rhs)=delete
 
virtual unsigned int GetInstrumentTypes () const override
 Returns a bitfield describing the set of instrument types that this instrument supports. More...
 
uint32_t GetInstrumentTypesForChannel (size_t i) const override
 Returns a bitfield describing the set of instrument types that a given channel supports. More...
 
virtual void FlushConfigCache () override
 Instruments are allowed to cache configuration settings to reduce round trip queries to the device. More...
 
virtual Oscilloscope::TriggerMode PollTrigger () override
 Checks the curent trigger status. More...
 
virtual bool AcquireData () override
 Pull data from the instrument. More...
 
virtual bool IsTriggerArmed () override
 Checks if the trigger is currently armed. More...
 
virtual void PushTrigger () override
 Pushes changes made to m_trigger to the instrument. More...
 
virtual void PullTrigger () override
 Updates m_trigger with any changes made from the instrument side. More...
 
virtual void Start () override
 Starts the instrument in continuous trigger mode. More...
 
virtual void StartSingleTrigger () override
 Arms the trigger for a single acquistion. More...
 
virtual void Stop () override
 Stops triggering. More...
 
virtual void ForceTrigger () override
 Forces a single acquisition as soon as possible. More...
 
virtual OscilloscopeChannelGetExternalTrigger () override
 Returns the external trigger input channel, if we have one. More...
 
virtual uint64_t GetSampleRate () override
 Gets the current sampling rate (in Hz) of this scope. More...
 
virtual uint64_t GetSampleDepth () override
 Gets the current sample depth of this scope. More...
 
virtual void SetSampleDepth (uint64_t depth) override
 Sets the sample depth of the scope. More...
 
virtual void SetSampleRate (uint64_t rate) override
 Sets the sample rate of the scope, in Hz. More...
 
virtual std::vector< uint64_t > GetSampleDepthsNonInterleaved () override
 Get the legal memory depths for this scope in all-channels mode. More...
 
virtual int64_t GetIntegrationTime () override
 
virtual void SetIntegrationTime (int64_t t) override
 
- Public Member Functions inherited from SCPISpectrometer
virtual unsigned int GetInstrumentTypes () const override
 Returns a bitfield describing the set of instrument types that this instrument supports. More...
 
virtual uint32_t GetInstrumentTypesForChannel (size_t i) const override
 Returns a bitfield describing the set of instrument types that a given channel supports. More...
 
virtual bool IsChannelEnabled (size_t i) override
 Checks if a channel is enabled in hardware. More...
 
virtual void EnableChannel (size_t i) override
 Turn a channel on, given the index. More...
 
virtual void DisableChannel (size_t i) override
 Turn a channel off, given the index. More...
 
virtual OscilloscopeChannel::CouplingType GetChannelCoupling (size_t i) override
 Gets the coupling used for an input channel. More...
 
virtual void SetChannelCoupling (size_t i, OscilloscopeChannel::CouplingType type) override
 Sets the coupling used for an input channel. More...
 
virtual std::vector< OscilloscopeChannel::CouplingType > GetAvailableCouplings (size_t i) override
 Gets the set of legal coupling values for an input channel. More...
 
virtual double GetChannelAttenuation (size_t i) override
 Gets the probe attenuation for an input channel. More...
 
virtual void SetChannelAttenuation (size_t i, double atten) override
 Sets the probe attenuation used for an input channel. More...
 
virtual unsigned int GetChannelBandwidthLimit (size_t i) override
 Gets the bandwidth limit for an input channel. More...
 
virtual void SetChannelBandwidthLimit (size_t i, unsigned int limit_mhz) override
 Sets the bandwidth limit for an input channel. More...
 
virtual float GetChannelVoltageRange (size_t i, size_t stream) override
 Gets the range of the current channel configuration. More...
 
virtual void SetChannelVoltageRange (size_t i, size_t stream, float range) override
 Sets the range of the current channel configuration. More...
 
virtual float GetChannelOffset (size_t i, size_t stream) override
 Gets the offset, in volts, for a given channel. More...
 
virtual void SetChannelOffset (size_t i, size_t stream, float offset) override
 Sets the offset for a given channel. More...
 
virtual std::set< InterleaveConflictGetInterleaveConflicts () override
 
virtual std::vector< uint64_t > GetSampleRatesInterleaved () override
 Get the legal sampling rates (in Hz) for this scope in combined-channels mode. More...
 
virtual std::vector< uint64_t > GetSampleDepthsInterleaved () override
 Get the legal memory depths for this scope in combined-channels mode. More...
 
virtual void SetTriggerOffset (int64_t offset) override
 Sets the trigger offset. More...
 
virtual int64_t GetTriggerOffset () override
 Gets the trigger offset. More...
 
virtual bool IsInterleaving () override
 Checks if the scope is currently combining channels. More...
 
virtual bool SetInterleaving (bool combine) override
 Configures the scope to combine channels. More...
 
virtual std::vector< uint64_t > GetSampleRatesNonInterleaved () override
 Get the legal sampling rates (in Hz) for this scope in all-channels mode. More...
 
virtual uint64_t GetSampleRate () override
 Gets the current sampling rate (in Hz) of this scope. More...
 
virtual void SetSampleRate (uint64_t rate) override
 Sets the sample rate of the scope, in Hz. More...
 
virtual bool HasFrequencyControls () override
 Returns true if the instrument has at least one frequency-domain channel. More...
 
virtual bool HasTimebaseControls () override
 Returns true if the instrument has at least one time-domain channel. More...
 
virtual int64_t GetIntegrationTime ()=0
 
virtual void SetIntegrationTime (int64_t t)=0
 
- Public Member Functions inherited from SCPIOscilloscope
virtual std::string IDPing ()
 Returns the instrument's identification string. More...
 
- Public Member Functions inherited from Oscilloscope
virtual std::string IDPing ()=0
 Returns the instrument's identification string. More...
 
virtual void FlushConfigCache ()
 Instruments are allowed to cache configuration settings to reduce round trip queries to the device. More...
 
virtual bool IsOffline ()
 Checks if the instrument is currently online. More...
 
OscilloscopeChannelGetOscilloscopeChannel (size_t i)
 Gets a channel by index. More...
 
virtual bool IsChannelEnabled (size_t i)=0
 Checks if a channel is enabled in hardware. More...
 
virtual void EnableChannel (size_t i)=0
 Turn a channel on, given the index. More...
 
virtual bool CanEnableChannel (size_t i)
 Determines if a channel can be enabled. More...
 
virtual void DisableChannel (size_t i)=0
 Turn a channel off, given the index. More...
 
int GetEnabledChannelCount ()
 Returns the number of enabled channels for this oscilloscope. More...
 
OscilloscopeChannelGetOscilloscopeChannelByHwName (const std::string &name)
 Gets a channel given the hardware name.
 
virtual OscilloscopeChannel::CouplingType GetChannelCoupling (size_t i)=0
 Gets the coupling used for an input channel. More...
 
virtual void SetChannelCoupling (size_t i, OscilloscopeChannel::CouplingType type)=0
 Sets the coupling used for an input channel. More...
 
virtual std::vector< OscilloscopeChannel::CouplingType > GetAvailableCouplings (size_t i)=0
 Gets the set of legal coupling values for an input channel. More...
 
virtual double GetChannelAttenuation (size_t i)=0
 Gets the probe attenuation for an input channel. More...
 
virtual void SetChannelAttenuation (size_t i, double atten)=0
 Sets the probe attenuation used for an input channel. More...
 
virtual std::vector< unsigned int > GetChannelBandwidthLimiters (size_t i)
 Gets the set of available bandwidth limiters for an input channel. More...
 
virtual unsigned int GetChannelBandwidthLimit (size_t i)=0
 Gets the bandwidth limit for an input channel. More...
 
virtual void SetChannelBandwidthLimit (size_t i, unsigned int limit_mhz)=0
 Sets the bandwidth limit for an input channel. More...
 
virtual OscilloscopeChannelGetExternalTrigger ()=0
 Returns the external trigger input channel, if we have one. More...
 
virtual float GetChannelVoltageRange (size_t i, size_t stream)=0
 Gets the range of the current channel configuration. More...
 
virtual void SetChannelVoltageRange (size_t i, size_t stream, float range)=0
 Sets the range of the current channel configuration. More...
 
virtual bool CanAutoZero (size_t i)
 Determines if a channel has a probe connected which supports the "auto zero" feature. More...
 
virtual void AutoZero (size_t i)
 Performs an "auto zero" cycle on the attached active probe, if supported by the hardware. More...
 
virtual bool CanDegauss (size_t i)
 Determines if a channel has a probe connected which supports the "degauss" feature. More...
 
virtual bool ShouldDegauss (size_t i)
 Determines if a channel requires a degauss cycle (if supported) More...
 
virtual void Degauss (size_t i)
 Performs an "degauss" cycle on the attached active probe, if supported by the hardware. More...
 
virtual bool CanAverage (size_t i)
 Determines if the channel supports hardware averaging. More...
 
virtual size_t GetNumAverages (size_t i)
 Returns the number of averages the channel is configured for. More...
 
virtual void SetNumAverages (size_t i, size_t navg)
 Sets the number of hardware averages to use. More...
 
virtual std::string GetProbeName (size_t i)
 Returns the name of the probe connected to the scope, if possible. More...
 
virtual bool HasInputMux (size_t i)
 Checks if a channel has an input multiplexer. More...
 
virtual size_t GetInputMuxSetting (size_t i)
 Gets the setting for a channel's input mux (if it has one) More...
 
virtual std::vector< std::string > GetInputMuxNames (size_t i)
 Gets names for the input mux ports of a channel. More...
 
virtual void SetInputMux (size_t i, size_t select)
 Sets the input mux for a channel. More...
 
virtual float GetChannelOffset (size_t i, size_t stream)=0
 Gets the offset, in volts, for a given channel. More...
 
virtual void SetChannelOffset (size_t i, size_t stream, float offset)=0
 Sets the offset for a given channel. More...
 
virtual bool CanInvert (size_t i)
 Checks if a channel is capable of hardware polarity inversion. More...
 
virtual void Invert (size_t i, bool invert)
 Enables hardware polarity inversion for a channel, if supported. More...
 
virtual bool IsInverted (size_t i)
 Checks if hardware polarity inversion is enabled for a channel. More...
 
virtual Oscilloscope::TriggerMode PollTrigger ()=0
 Checks the curent trigger status. More...
 
virtual bool PeekTriggerArmed ()
 Checks if the trigger is armed directly on the instrument, without altering internal state or touching caches. More...
 
bool WaitForTrigger (int timeout)
 Block until a trigger happens or a timeout elapses. More...
 
void SetTrigger (Trigger *trigger)
 Sets a new trigger on the instrument and pushes changes. More...
 
virtual void PushTrigger ()=0
 Pushes changes made to m_trigger to the instrument. More...
 
TriggerGetTrigger (bool sync=false)
 Gets the current trigger. More...
 
virtual std::vector< std::string > GetTriggerTypes ()
 Gets a list of triggers this instrument supports. More...
 
virtual void PullTrigger ()=0
 Updates m_trigger with any changes made from the instrument side. More...
 
virtual void Start ()=0
 Starts the instrument in continuous trigger mode. More...
 
virtual void StartSingleTrigger ()=0
 Arms the trigger for a single acquistion. More...
 
virtual void Stop ()=0
 Stops triggering. More...
 
virtual void ForceTrigger ()=0
 Forces a single acquisition as soon as possible. More...
 
virtual bool IsTriggerArmed ()=0
 Checks if the trigger is currently armed. More...
 
virtual void EnableTriggerOutput ()
 Enables the trigger output, configuring a shared auxiliary port for this purpose if needed. More...
 
virtual std::vector< uint64_t > GetSampleRatesNonInterleaved ()=0
 Get the legal sampling rates (in Hz) for this scope in all-channels mode. More...
 
virtual std::vector< uint64_t > GetSampleRatesInterleaved ()=0
 Get the legal sampling rates (in Hz) for this scope in combined-channels mode. More...
 
virtual uint64_t GetSampleRate ()=0
 Gets the current sampling rate (in Hz) of this scope. More...
 
virtual bool IsInterleaving ()=0
 Checks if the scope is currently combining channels. More...
 
virtual bool SetInterleaving (bool combine)=0
 Configures the scope to combine channels. More...
 
virtual bool CanInterleave ()
 Returns true if we have no interleave conflicts, false if we have conflicts. More...
 
virtual std::set< InterleaveConflictGetInterleaveConflicts ()=0
 
virtual std::vector< uint64_t > GetSampleDepthsNonInterleaved ()=0
 Get the legal memory depths for this scope in all-channels mode. More...
 
virtual std::vector< uint64_t > GetSampleDepthsInterleaved ()=0
 Get the legal memory depths for this scope in combined-channels mode. More...
 
virtual uint64_t GetSampleDepth ()=0
 Gets the current sample depth of this scope. More...
 
virtual void SetSampleDepth (uint64_t depth)=0
 Sets the sample depth of the scope. More...
 
virtual void SetSampleRate (uint64_t rate)=0
 Sets the sample rate of the scope, in Hz. More...
 
virtual bool IsSamplingModeAvailable (SamplingMode mode)
 Returns true if the requested sampling mode is available with the current instrument configuration. More...
 
virtual SamplingMode GetSamplingMode ()
 Gets the current sampling mode of the instrument. More...
 
virtual void SetSamplingMode (SamplingMode mode)
 Sets the current sampling mode of the instrument. More...
 
virtual void SetUseExternalRefclk (bool external)
 Configures the instrument's clock source. More...
 
virtual void SetTriggerOffset (int64_t offset)=0
 Sets the trigger offset. More...
 
virtual int64_t GetTriggerOffset ()=0
 Gets the trigger offset. More...
 
virtual void SetDeskewForChannel (size_t channel, int64_t skew)
 Sets the deskew setting for a channel. More...
 
virtual int64_t GetDeskewForChannel (size_t channel)
 Gets the deskew setting for a channel. More...
 
virtual std::vector< AnalogBank > GetAnalogBanks ()
 Gets the analog banks for this instrument. More...
 
virtual AnalogBank GetAnalogBank (size_t channel)
 Gets the bank containing a given channel. More...
 
virtual bool IsADCModeConfigurable ()
 Returns true if the ADC is configurable, false if it can only run in one mode. More...
 
virtual std::vector< std::string > GetADCModeNames (size_t channel)
 Gets the names of the ADC modes for the bank a given channel is located in. More...
 
virtual size_t GetADCMode (size_t channel)
 Gets the ADC mode for a channel. More...
 
virtual void SetADCMode (size_t channel, size_t mode)
 Sets the ADC mode for a channel. More...
 
virtual std::vector< DigitalBank > GetDigitalBanks ()
 Gets the digital channel banks for this instrument. More...
 
virtual DigitalBank GetDigitalBank (size_t channel)
 Gets the bank containing a given channel. More...
 
virtual bool IsDigitalHysteresisConfigurable ()
 Checks if digital input hysteresis is configurable or fixed. More...
 
virtual bool IsDigitalThresholdConfigurable ()
 Checks if digital input threshold is configurable or fixed. More...
 
virtual float GetDigitalHysteresis (size_t channel)
 Gets the hysteresis for a digital input. More...
 
virtual float GetDigitalThreshold (size_t channel)
 Gets the threshold for a digital input. More...
 
virtual void SetDigitalHysteresis (size_t channel, float level)
 Sets the hysteresis for a digital input. More...
 
virtual void SetDigitalThreshold (size_t channel, float level)
 Gets the threshold for a digital input. More...
 
virtual void SetSpan (int64_t span)
 Sets the span for frequency-domain channels. More...
 
virtual int64_t GetSpan ()
 Gets the span for frequency-domain channels. More...
 
virtual void SetCenterFrequency (size_t channel, int64_t freq)
 Sets the center frequency for frequency-domain channels. More...
 
virtual int64_t GetCenterFrequency (size_t channel)
 Gets the center frequency for a frequency-domain channel. More...
 
virtual void SetResolutionBandwidth (int64_t rbw)
 Gets the resolution bandwidth for frequency-domain channels. More...
 
virtual int64_t GetResolutionBandwidth ()
 Gets the resolution bandwidth for frequency-domain channels. More...
 
virtual bool HasFrequencyControls ()
 Returns true if the instrument has at least one frequency-domain channel. More...
 
virtual bool HasResolutionBandwidth ()
 Returns true if the instrument has a resolution bandwidth setting. More...
 
virtual bool HasTimebaseControls ()
 Returns true if the instrument has at least one time-domain channel. More...
 
bool HasPendingWaveforms ()
 
void ClearPendingWaveforms ()
 Discard any pending waveforms that haven't yet been processed.
 
size_t GetPendingWaveformCount ()
 
virtual bool PopPendingWaveform ()
 Pops the queue of pending waveforms and updates each channel with a new waveform.
 
virtual bool IsAppendingToWaveform ()
 Checks if we are appending to the existing waveform or creating a new one.
 
bool HasPendingDiagnosticLogMessages ()
 
std::string PopPendingDiagnosticLogMessage ()
 
std::map< std::string, FilterParameter * > & GetDiagnosticsValues ()
 
bool FreeWaveformPools ()
 Free all waveforms in our pool to reclaim memory. More...
 
void AddWaveformToAnalogPool (WaveformBase *w)
 
void AddWaveformToDigitalPool (WaveformBase *w)
 
- Public Member Functions inherited from Instrument
virtual unsigned int GetInstrumentTypes () const =0
 Returns a bitfield describing the set of instrument types that this instrument supports. More...
 
virtual std::string GetName () const =0
 
virtual std::string GetVendor () const =0
 
virtual std::string GetSerial () const =0
 
virtual std::string GetTransportConnectionString ()=0
 Gets the connection string for our transport. More...
 
virtual std::string GetTransportName ()=0
 Gets the name of our transport. More...
 
virtual uint32_t GetInstrumentTypesForChannel (size_t i) const =0
 Returns a bitfield describing the set of instrument types that a given channel supports. More...
 
size_t GetChannelCount () const
 Gets the number of channels (of any type) this instrument has.
 
InstrumentChannelGetChannel (size_t i) const
 Gets a given channel on the instrument. More...
 
virtual std::string GetChannelDisplayName (size_t i)
 Gets the hardware display name for a channel. This is an arbitrary user-selected string. More...
 
virtual void SetChannelDisplayName (size_t i, std::string name)
 Sets the hardware display name for a channel. This is an arbitrary user-selected string. More...
 
InstrumentChannelGetChannelByDisplayName (const std::string &name)
 Gets a channel given the display name.
 
InstrumentChannelGetChannelByHwName (const std::string &name)
 Gets a channel given the hardware name.
 
virtual bool AcquireData ()=0
 Pull data from the instrument. More...
 
virtual YAML::Node SerializeConfiguration (IDTable &table) const
 Serializes this instrument's configuration to a YAML node. More...
 
virtual void LoadConfiguration (int version, const YAML::Node &node, IDTable &idmap)
 Load instrument and channel configuration from a save file. More...
 
virtual void PreLoadConfiguration (int version, const YAML::Node &node, IDTable &idmap, ConfigWarningList &warnings)
 Parse a limited subset of instrument configuration but do not apply it. More...
 
- Public Member Functions inherited from SCPIInstrument
 SCPIInstrument (SCPITransport *transport, bool identify=true)
 
virtual std::string GetTransportConnectionString ()
 Gets the connection string for our transport. More...
 
virtual std::string GetTransportName ()
 Gets the name of our transport. More...
 
virtual std::string GetName () const
 
virtual std::string GetVendor () const
 
virtual std::string GetSerial () const
 
virtual std::string GetDriverName () const =0
 
- Public Member Functions inherited from SCPIDevice
 SCPIDevice (SCPITransport *transport, bool identify=true)
 
SCPITransportGetTransport () const
 

Static Public Member Functions

static std::string GetDriverNameInternal ()
 
- Static Public Member Functions inherited from SCPISpectrometer
static void DoAddDriverClass (std::string name, SpectrometerCreateProcType proc)
 
static void EnumDrivers (std::vector< std::string > &names)
 
static std::shared_ptr< SCPISpectrometerCreateSpectrometer (std::string driver, SCPITransport *transport)
 
- Static Public Member Functions inherited from Oscilloscope
static void Convert8BitSamples (float *pout, const int8_t *pin, float gain, float offset, size_t count)
 Converts 8-bit ADC samples to floating point.
 
static void Convert8BitSamplesGeneric (float *pout, const int8_t *pin, float gain, float offset, size_t count)
 Generic backend for Convert8BitSamples()
 
static void ConvertUnsigned8BitSamples (float *pout, const uint8_t *pin, float gain, float offset, size_t count)
 Converts Unsigned 8-bit ADC samples to floating point.
 
static void ConvertUnsigned8BitSamplesGeneric (float *pout, const uint8_t *pin, float gain, float offset, size_t count)
 Generic backend for ConvertUnsigned8BitSamples()
 
static void Convert16BitSamples (float *pout, const int16_t *pin, float gain, float offset, size_t count)
 Converts 16-bit ADC samples to floating point.
 
static void Convert16BitSamplesGeneric (float *pout, const int16_t *pin, float gain, float offset, size_t count)
 Converts raw ADC samples to floating point.
 
static void DoAddDriverClass (std::string name, CreateProcType proc)
 
static void EnumDrivers (std::vector< std::string > &names)
 
static std::shared_ptr< OscilloscopeCreateOscilloscope (std::string driver, SCPITransport *transport)
 

Protected Types

enum  channelids { CHAN_SPECTRUM , CHAN_DARKFRAME }
 Channel indexes. More...
 
- Protected Types inherited from Oscilloscope
typedef std::map< StreamDescriptor, WaveformBase * > SequenceSet
 
typedef std::map< std::string, CreateProcType > CreateMapType
 

Protected Attributes

bool m_triggerArmed
 Indicates trigger is armed.
 
bool m_triggerOneShot
 Indicates most recent trigger arm was a one-shot rather than continuous trigger.
 
std::vector< float > m_wavelengths
 Wavelength (in picometers) at each spectral bin.
 
std::vector< float > m_flatcal
 Flatness calibration coefficient for each spectral bin.
 
std::vector< float > m_irrcal
 Irradiance calibration (if available) for each spectral bin.
 
float m_irrcoeff
 Global scaling factor for irradiance calibration.
 
SpectrometerDarkFrameChannelm_darkframe
 Dark frame input.
 
int64_t m_integrationTime
 Integration time, in femtoseconds.
 
- Protected Attributes inherited from SCPISpectrometer
std::map< std::pair< size_t, size_t >, float > m_channelVoltageRange
 
std::map< std::pair< size_t, size_t >, float > m_channelOffset
 
- Protected Attributes inherited from SCPIOscilloscope
bool m_triggerArmed
 
bool m_triggerOneShot
 
std::recursive_mutex m_cacheMutex
 
- Protected Attributes inherited from Oscilloscope
std::list< SequenceSet > m_pendingWaveforms
 
std::mutex m_pendingWaveformsMutex
 
std::recursive_mutex m_mutex
 
std::deque< std::string > m_diagnosticLogMessages
 
std::map< std::string, FilterParameter * > m_diagnosticValues
 
Triggerm_trigger
 
WaveformPool m_analogWaveformPool
 
WaveformPool m_digitalWaveformPool
 
- Protected Attributes inherited from Instrument
std::list< sigc::slot< void(YAML::Node &, IDTable &)> > m_serializers
 List of methods which need to be called to serialize this node's configuration.
 
std::list< sigc::slot< void(int, const YAML::Node &, IDTable &)> > m_loaders
 List of methods which need to be called to deserialize this node's configuration.
 
std::list< sigc::slot< void(int, const YAML::Node &, IDTable &, ConfigWarningList &)> > m_preloaders
 List of methods which need to be called to pre-load this node's configuration.
 
std::vector< InstrumentChannel * > m_channels
 Set of all channels on this instrument.
 
- Protected Attributes inherited from SCPIDevice
SCPITransportm_transport
 
std::string m_vendor
 
std::string m_model
 
std::string m_serial
 
std::string m_fwVersion
 

Additional Inherited Members

- Public Types inherited from SCPISpectrometer
typedef std::shared_ptr< SCPISpectrometer >(* SpectrometerCreateProcType) (SCPITransport *)
 
typedef std::map< std::string, SpectrometerCreateProcType > SpectrometerCreateMapType
 
- Public Types inherited from Oscilloscope
enum  TriggerMode {
  TRIGGER_MODE_RUN , TRIGGER_MODE_STOP , TRIGGER_MODE_TRIGGERED , TRIGGER_MODE_WAIT ,
  TRIGGER_MODE_AUTO , TRIGGER_MODE_COUNT
}
 
enum  SamplingMode { REAL_TIME , EQUIVALENT_TIME }
 
typedef std::pair< OscilloscopeChannel *, OscilloscopeChannel * > InterleaveConflict
 Get the set of conflicting channels. More...
 
typedef std::vector< OscilloscopeChannel * > AnalogBank
 
typedef std::vector< OscilloscopeChannel * > DigitalBank
 
typedef std::shared_ptr< Oscilloscope >(* CreateProcType) (SCPITransport *)
 
- Public Types inherited from Instrument
enum  InstrumentTypes {
  INST_OSCILLOSCOPE = 0x01 , INST_DMM = 0x02 , INST_PSU = 0x04 , INST_FUNCTION = 0x08 ,
  INST_RF_GEN = 0x10 , INST_LOAD = 0x20 , INST_BERT = 0x40 , INST_MISC = 0x80 ,
  INST_SWITCH_MATRIX = 0x100
}
 
- Public Attributes inherited from Instrument
std::string m_nickname
 Optional user-selected nickname of the instrument. More...
 
- Static Public Attributes inherited from SCPISpectrometer
static SpectrometerCreateMapType m_spectrometercreateprocs
 
- Protected Member Functions inherited from SCPISpectrometer
void DoSerializeConfiguration (YAML::Node &node, IDTable &table)
 Serializes this spectrometer's configuration to a YAML node.
 
void DoLoadConfiguration (int version, const YAML::Node &node, IDTable &idmap)
 Load instrument and channel configuration from a save file.
 
void DoPreLoadConfiguration (int version, const YAML::Node &node, IDTable &idmap, ConfigWarningList &list)
 Validate instrument and channel configuration from a save file.
 
- Protected Member Functions inherited from Oscilloscope
void ChannelsDownloadStarted ()
 Helper method called by drivers to reset all channels to "waiting to download" state.
 
void ChannelsDownloadStatusUpdate (size_t ch, InstrumentChannel::DownloadState state, float progress)
 Helper method called by drivers to set one channel's download status and update its download progress. Be aware that there is a measurement on ngscopeclient UI of the time spent between the download start and the progress of the last enabled channel. This measurement is used to decide whether to display a progress bar or not. This download speed evaluation method only works if enabled channels are download sequencially in increasing numeric order or if all channels are downloaded at the same speed. More...
 
void ChannelsDownloadFinished ()
 Helper method called by drivers when waveform download is finished to reset all channels to "no download" state.
 
void DoSerializeConfiguration (YAML::Node &node, IDTable &table)
 Serializes this oscilloscope's configuration to a YAML node.
 
void DoLoadConfiguration (int version, const YAML::Node &node, IDTable &idmap)
 Load instrument and channel configuration from a save file.
 
void DoPreLoadConfiguration (int version, const YAML::Node &node, IDTable &idmap, ConfigWarningList &list)
 Validate instrument and channel configuration from a save file.
 
void AddDiagnosticLog (std::string message)
 
UniformAnalogWaveformAllocateAnalogWaveform (const std::string &name)
 
SparseDigitalWaveformAllocateDigitalWaveform (const std::string &name)
 
- Protected Member Functions inherited from SCPIInstrument
void DoSerializeConfiguration (YAML::Node &node, IDTable &table)
 
- Static Protected Attributes inherited from Oscilloscope
static CreateMapType m_createprocs
 

Detailed Description

Driver for Aseq Instruments LR1/HR1 spectrometers via the scopehal-aseq-bridge server.

Member Enumeration Documentation

◆ channelids

Channel indexes.

Enumerator
CHAN_SPECTRUM 

Spectral output.

CHAN_DARKFRAME 

Dark frame correction input.

Constructor & Destructor Documentation

◆ AseqSpectrometer()

AseqSpectrometer::AseqSpectrometer ( SCPITransport transport)

Initialize the driver.

Parameters
transportSCPITransport pointing to a scopehal-aseq-bridge instance

Member Function Documentation

◆ AcquireData()

bool AseqSpectrometer::AcquireData ( )
overridevirtual

Pull data from the instrument.

Returns
True if waveform was acquired, false if connection lost or other serious error

Implements Instrument.

◆ FlushConfigCache()

void AseqSpectrometer::FlushConfigCache ( )
overridevirtual

Instruments are allowed to cache configuration settings to reduce round trip queries to the device.

In order to see updates made by the user at the front panel, the cache must be flushed.

Cache flushing is recommended to be manually triggered during interactive operation if there is no way to push updates from the scope to the driver.

In scripted/ATE environments where nobody should be touching the instrument, flushing is typically not needed.

The default implementation of this function does nothing since the base class provides no caching. If a derived class caches configuration, it should override this function to clear any cached data.

Reimplemented from Oscilloscope.

◆ ForceTrigger()

void AseqSpectrometer::ForceTrigger ( )
overridevirtual

Forces a single acquisition as soon as possible.

Note that PollTrigger() may not return 'triggered' immediately, due to command processing latency.

Implements Oscilloscope.

◆ GetExternalTrigger()

OscilloscopeChannel * AseqSpectrometer::GetExternalTrigger ( )
overridevirtual

Returns the external trigger input channel, if we have one.

Note that some very high end oscilloscopes have multiple external trigger inputs. We do not currently support this.

Implements Oscilloscope.

◆ GetInstrumentTypes()

unsigned int AseqSpectrometer::GetInstrumentTypes ( ) const
overridevirtual

Returns a bitfield describing the set of instrument types that this instrument supports.

Not all types may be available on a given channel.

Reimplemented from SCPISpectrometer.

◆ GetInstrumentTypesForChannel()

uint32_t AseqSpectrometer::GetInstrumentTypesForChannel ( size_t  i) const
overridevirtual

Returns a bitfield describing the set of instrument types that a given channel supports.

Parameters
iChannel index

Reimplemented from SCPISpectrometer.

◆ GetIntegrationTime()

int64_t AseqSpectrometer::GetIntegrationTime ( )
overridevirtual

Implements SCPISpectrometer.

◆ GetSampleDepth()

uint64_t AseqSpectrometer::GetSampleDepth ( )
overridevirtual

Gets the current sample depth of this scope.

Implements Oscilloscope.

◆ GetSampleDepthsNonInterleaved()

vector< uint64_t > AseqSpectrometer::GetSampleDepthsNonInterleaved ( )
overridevirtual

Get the legal memory depths for this scope in all-channels mode.

Implements Oscilloscope.

◆ GetSampleRate()

uint64_t AseqSpectrometer::GetSampleRate ( )
overridevirtual

Gets the current sampling rate (in Hz) of this scope.

Reimplemented from SCPISpectrometer.

◆ IsTriggerArmed()

bool AseqSpectrometer::IsTriggerArmed ( )
overridevirtual

Checks if the trigger is currently armed.

Implements Oscilloscope.

◆ PollTrigger()

Oscilloscope::TriggerMode AseqSpectrometer::PollTrigger ( )
overridevirtual

Checks the curent trigger status.

Implements Oscilloscope.

◆ PullTrigger()

void AseqSpectrometer::PullTrigger ( )
overridevirtual

Updates m_trigger with any changes made from the instrument side.

Implements Oscilloscope.

◆ PushTrigger()

void AseqSpectrometer::PushTrigger ( )
overridevirtual

Pushes changes made to m_trigger to the instrument.

Implements Oscilloscope.

◆ SetIntegrationTime()

void AseqSpectrometer::SetIntegrationTime ( int64_t  t)
overridevirtual

Implements SCPISpectrometer.

◆ SetSampleDepth()

void AseqSpectrometer::SetSampleDepth ( uint64_t  depth)
overridevirtual

Sets the sample depth of the scope.

Implements Oscilloscope.

◆ SetSampleRate()

void AseqSpectrometer::SetSampleRate ( uint64_t  rate)
overridevirtual

Sets the sample rate of the scope, in Hz.

Reimplemented from SCPISpectrometer.

◆ Start()

void AseqSpectrometer::Start ( )
overridevirtual

Starts the instrument in continuous trigger mode.

Most drivers will implement this as repeated calls to the "single trigger" function to avoid race conditions when the instrument triggers halfway through downloading captured waveforms.

Implements Oscilloscope.

◆ StartSingleTrigger()

void AseqSpectrometer::StartSingleTrigger ( )
overridevirtual

Arms the trigger for a single acquistion.

Implements Oscilloscope.

◆ Stop()

void AseqSpectrometer::Stop ( )
overridevirtual

Stops triggering.

Implements Oscilloscope.


The documentation for this class was generated from the following files: