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

Generic representation of an oscilloscope, logic analyzer, or spectrum analyzer. More...

#include <Oscilloscope.h>

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

Public Types

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 Member Functions

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...
 

Static Public Member Functions

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

typedef std::map< StreamDescriptor, WaveformBase * > SequenceSet
 
typedef std::map< std::string, CreateProcType > CreateMapType
 

Protected Member Functions

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 Attributes

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.
 

Static Protected Attributes

static CreateMapType m_createprocs
 

Additional Inherited Members

- Public Attributes inherited from Instrument
std::string m_nickname
 Optional user-selected nickname of the instrument. More...
 

Detailed Description

Generic representation of an oscilloscope, logic analyzer, or spectrum analyzer.

An Oscilloscope contains triggering logic and one or more OscilloscopeChannel objects.

Member Typedef Documentation

◆ InterleaveConflict

Get the set of conflicting channels.

If any pair of channels in this list is enabled, channel interleaving is not possible.

Member Enumeration Documentation

◆ TriggerMode

Enumerator
TRIGGER_MODE_RUN 

Active, waiting for a trigger event.

TRIGGER_MODE_STOP 

Triggered once, but not recently.

TRIGGER_MODE_TRIGGERED 

Just got triggered, data is ready to read.

TRIGGER_MODE_WAIT 

WAIT - not yet fully armed.

TRIGGER_MODE_AUTO 

Auto trigger - waiting for auto-trigger.

TRIGGER_MODE_COUNT 

Placeholder.

Member Function Documentation

◆ AutoZero()

void Oscilloscope::AutoZero ( size_t  i)
virtual

Performs an "auto zero" cycle on the attached active probe, if supported by the hardware.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope.

◆ CanAutoZero()

bool Oscilloscope::CanAutoZero ( size_t  i)
virtual

Determines if a channel has a probe connected which supports the "auto zero" feature.

This is typically true for power rail and differential probes and false for most others.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope.

◆ CanAverage()

bool Oscilloscope::CanAverage ( size_t  i)
virtual

Determines if the channel supports hardware averaging.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope.

◆ CanDegauss()

bool Oscilloscope::CanDegauss ( size_t  i)
virtual

Determines if a channel has a probe connected which supports the "degauss" feature.

This is typically true for current probes and false for most others.

Parameters
iZero-based index of channel

Reimplemented in TektronixOscilloscope.

◆ CanEnableChannel()

bool Oscilloscope::CanEnableChannel ( size_t  i)
virtual

Determines if a channel can be enabled.

Returns
False if the channel cannot currently be used (due to interleave conflicts or other hardware limitations).

True if the channel is available or is already enabled.

Parameters
iZero-based index of channel

The default implementation always returns true.

Reimplemented in DigilentOscilloscope, DSLabsOscilloscope, LeCroyOscilloscope, PicoOscilloscope, SiglentSCPIOscilloscope, TektronixOscilloscope, and ThunderScopeOscilloscope.

◆ CanInterleave()

bool Oscilloscope::CanInterleave ( )
virtual

Returns true if we have no interleave conflicts, false if we have conflicts.

Reimplemented in AntikernelLabsTriggerCrossbar, PicoOscilloscope, and UHDBridgeSDR.

◆ CanInvert()

bool Oscilloscope::CanInvert ( size_t  i)
virtual

Checks if a channel is capable of hardware polarity inversion.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope, and SiglentSCPIOscilloscope.

◆ ChannelsDownloadStatusUpdate()

void Oscilloscope::ChannelsDownloadStatusUpdate ( size_t  ch,
InstrumentChannel::DownloadState  state,
float  progress 
)
protected

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.

Parameters
chZero-based index of channel
stateThe new InstrumentChannel::DownloadState for this channel
progressA float value ranging from 0 to 1 to represent the download progress

◆ Degauss()

void Oscilloscope::Degauss ( size_t  i)
virtual

Performs an "degauss" cycle on the attached active probe, if supported by the hardware.

Parameters
iZero-based index of channel

Reimplemented in TektronixOscilloscope.

◆ DisableChannel()

virtual void Oscilloscope::DisableChannel ( size_t  i)
pure virtual

◆ EnableChannel()

virtual void Oscilloscope::EnableChannel ( size_t  i)
pure virtual

◆ EnableTriggerOutput()

void Oscilloscope::EnableTriggerOutput ( )
virtual

Enables the trigger output, configuring a shared auxiliary port for this purpose if needed.

The default implementation does nothing, and is intended for instruments where the trigger output is always enabled.

Reimplemented in LeCroyOscilloscope, SiglentSCPIOscilloscope, and TektronixOscilloscope.

◆ FlushConfigCache()

void Oscilloscope::FlushConfigCache ( )
virtual

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 in AgilentOscilloscope, AntikernelLabsOscilloscope, AseqSpectrometer, DigilentOscilloscope, DSLabsOscilloscope, KeysightDCA, LeCroyOscilloscope, PicoOscilloscope, PicoVNA, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SiglentSCPIOscilloscope, TektronixOscilloscope, ThunderScopeOscilloscope, and UHDBridgeSDR.

◆ ForceTrigger()

virtual void Oscilloscope::ForceTrigger ( )
pure virtual

◆ FreeWaveformPools()

bool Oscilloscope::FreeWaveformPools ( )
inline

Free all waveforms in our pool to reclaim memory.

Returns
True if memory was freed, false if pools were already empty

◆ GetADCMode()

size_t Oscilloscope::GetADCMode ( size_t  channel)
virtual

◆ GetADCModeNames()

vector< string > Oscilloscope::GetADCModeNames ( size_t  channel)
virtual

Gets the names of the ADC modes for the bank a given channel is located in.

ADC mode names are usually descriptive, like "12 bit, 640 Msps max" or "8 bit, 1 Gsps max"; but some instruments may use more generic

Parameters
channelIndex of the channel to query modes for

Reimplemented in DemoOscilloscope, DigilentOscilloscope, DSLabsOscilloscope, LeCroyOscilloscope, PicoOscilloscope, and SiglentSCPIOscilloscope.

◆ GetAnalogBank()

Oscilloscope::AnalogBank Oscilloscope::GetAnalogBank ( size_t  channel)
virtual

Gets the bank containing a given channel.

Reimplemented in DemoOscilloscope, DigilentOscilloscope, DSLabsOscilloscope, and PicoOscilloscope.

◆ GetAnalogBanks()

vector< Oscilloscope::AnalogBank > Oscilloscope::GetAnalogBanks ( )
virtual

Gets the analog banks for this instrument.

A bank is a set of one or more channels all sharing a common ADC configuration.

Reimplemented in DemoOscilloscope, DigilentOscilloscope, DSLabsOscilloscope, and PicoOscilloscope.

◆ GetAvailableCouplings()

virtual std::vector< OscilloscopeChannel::CouplingType > Oscilloscope::GetAvailableCouplings ( size_t  i)
pure virtual

◆ GetCenterFrequency()

int64_t Oscilloscope::GetCenterFrequency ( size_t  channel)
virtual

Gets the center frequency for a frequency-domain channel.

Parameters
channelChannel number

Reimplemented in CopperMountainVNA, NanoVNA, PicoVNA, TektronixOscilloscope, TinySA, and UHDBridgeSDR.

◆ GetChannelAttenuation()

virtual double Oscilloscope::GetChannelAttenuation ( size_t  i)
pure virtual

Gets the probe attenuation for an input channel.

Note that this function returns attenuation, not gain. For example, a 10x probe would return 10 and not 0.1.

Parameters
iZero-based index of channel

Implemented in AgilentOscilloscope, AntikernelLabsOscilloscope, AntikernelLabsTriggerCrossbar, AntikernelLogicAnalyzer, DemoOscilloscope, DigilentOscilloscope, DSLabsOscilloscope, KeysightDCA, LeCroyOscilloscope, MockOscilloscope, PicoOscilloscope, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, SiglentSCPIOscilloscope, TektronixOscilloscope, ThunderScopeOscilloscope, and UHDBridgeSDR.

◆ GetChannelBandwidthLimit()

virtual unsigned int Oscilloscope::GetChannelBandwidthLimit ( size_t  i)
pure virtual

◆ GetChannelBandwidthLimiters()

vector< unsigned int > Oscilloscope::GetChannelBandwidthLimiters ( size_t  i)
virtual

Gets the set of available bandwidth limiters for an input channel.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope, RigolOscilloscope, RSRTO6Oscilloscope, SiglentSCPIOscilloscope, TektronixOscilloscope, and ThunderScopeOscilloscope.

◆ GetChannelCoupling()

virtual OscilloscopeChannel::CouplingType Oscilloscope::GetChannelCoupling ( size_t  i)
pure virtual

◆ GetChannelOffset()

virtual float Oscilloscope::GetChannelOffset ( size_t  i,
size_t  stream 
)
pure virtual

Gets the offset, in volts, for a given channel.

Parameters
iZero-based index of channel
streamZero-based index of stream within channel (0 if only one stream, as is normally the case)

Implemented in AgilentOscilloscope, AntikernelLabsOscilloscope, AntikernelLabsTriggerCrossbar, AntikernelLogicAnalyzer, DemoOscilloscope, KeysightDCA, LeCroyOscilloscope, MockOscilloscope, RemoteBridgeOscilloscope, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, SiglentSCPIOscilloscope, TektronixOscilloscope, and UHDBridgeSDR.

◆ GetChannelVoltageRange()

virtual float Oscilloscope::GetChannelVoltageRange ( size_t  i,
size_t  stream 
)
pure virtual

Gets the range of the current channel configuration.

The range is the distance, in volts, between the most negative/smallest and most positive/largest voltage which the ADC can represent using the current vertical gain configuration. This can be calculated as the number of vertical divisions times the number of volts per division.

The range does not depend on the offset.

Parameters
iZero-based index of channel
streamZero-based index of stream within channel (0 if only one stream, as is normally the case)

Implemented in AgilentOscilloscope, AntikernelLabsOscilloscope, AntikernelLabsTriggerCrossbar, AntikernelLogicAnalyzer, DemoOscilloscope, KeysightDCA, LeCroyOscilloscope, MockOscilloscope, RemoteBridgeOscilloscope, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, SiglentSCPIOscilloscope, TektronixOscilloscope, and UHDBridgeSDR.

◆ GetDeskewForChannel()

int64_t Oscilloscope::GetDeskewForChannel ( size_t  channel)
virtual

Gets the deskew setting for a channel.

The default implementation returns zero, and is suitable for lower-end instruments that do not support deskew.

Reimplemented in LeCroyOscilloscope, SiglentSCPIOscilloscope, and TektronixOscilloscope.

◆ GetDigitalBank()

Oscilloscope::DigitalBank Oscilloscope::GetDigitalBank ( size_t  channel)
virtual

◆ GetDigitalBanks()

vector< Oscilloscope::DigitalBank > Oscilloscope::GetDigitalBanks ( )
virtual

Gets the digital channel banks for this instrument.

A bank is a set of one or more channels all sharing a common threshold and hysteresis setting.

Reimplemented in DigilentOscilloscope, DSLabsOscilloscope, LeCroyOscilloscope, PicoOscilloscope, RSRTO6Oscilloscope, SiglentSCPIOscilloscope, and TektronixOscilloscope.

◆ GetDigitalHysteresis()

float Oscilloscope::GetDigitalHysteresis ( size_t  channel)
virtual

◆ GetDigitalThreshold()

float Oscilloscope::GetDigitalThreshold ( size_t  channel)
virtual

◆ GetEnabledChannelCount()

int Oscilloscope::GetEnabledChannelCount ( )

Returns the number of enabled channels for this oscilloscope.

Returns
the number of enabled channels for this oscilloscope.

◆ GetExternalTrigger()

virtual OscilloscopeChannel * Oscilloscope::GetExternalTrigger ( )
pure virtual

◆ GetInputMuxNames()

vector< string > Oscilloscope::GetInputMuxNames ( size_t  i)
virtual

Gets names for the input mux ports of a channel.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope.

◆ GetInputMuxSetting()

size_t Oscilloscope::GetInputMuxSetting ( size_t  i)
virtual

Gets the setting for a channel's input mux (if it has one)

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope.

◆ GetNumAverages()

size_t Oscilloscope::GetNumAverages ( size_t  i)
virtual

Returns the number of averages the channel is configured for.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope.

◆ GetOscilloscopeChannel()

OscilloscopeChannel * Oscilloscope::GetOscilloscopeChannel ( size_t  i)
inline

Gets a channel by index.

Parameters
iZero-based index of channel

◆ GetProbeName()

string Oscilloscope::GetProbeName ( size_t  i)
virtual

Returns the name of the probe connected to the scope, if possible.

If a passive or no probe is connected, or the instrument driver does not support probe identification, an empty string may be returned.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope, RSRTO6Oscilloscope, and TektronixOscilloscope.

◆ GetResolutionBandwidth()

int64_t Oscilloscope::GetResolutionBandwidth ( )
virtual

Gets the resolution bandwidth for frequency-domain channels.

Reimplemented in CopperMountainVNA, NanoVNA, PicoVNA, SCPISA, and TektronixOscilloscope.

◆ GetSampleDepth()

virtual uint64_t Oscilloscope::GetSampleDepth ( )
pure virtual

◆ GetSampleDepthsInterleaved()

virtual std::vector< uint64_t > Oscilloscope::GetSampleDepthsInterleaved ( )
pure virtual

◆ GetSampleDepthsNonInterleaved()

virtual std::vector< uint64_t > Oscilloscope::GetSampleDepthsNonInterleaved ( )
pure virtual

◆ GetSampleRate()

virtual uint64_t Oscilloscope::GetSampleRate ( )
pure virtual

◆ GetSampleRatesInterleaved()

virtual std::vector< uint64_t > Oscilloscope::GetSampleRatesInterleaved ( )
pure virtual

◆ GetSampleRatesNonInterleaved()

virtual std::vector< uint64_t > Oscilloscope::GetSampleRatesNonInterleaved ( )
pure virtual

◆ GetSamplingMode()

Oscilloscope::SamplingMode Oscilloscope::GetSamplingMode ( )
virtual

Gets the current sampling mode of the instrument.

The default implementation returns "real time"

Reimplemented in LeCroyOscilloscope.

◆ GetSpan()

int64_t Oscilloscope::GetSpan ( )
virtual

Gets the span for frequency-domain channels.

Reimplemented in CopperMountainVNA, NanoVNA, PicoVNA, TektronixOscilloscope, TinySA, and UHDBridgeSDR.

◆ GetTrigger()

Trigger * Oscilloscope::GetTrigger ( bool  sync = false)
inline

Gets the current trigger.

Ownership of the trigger object is retained by the Oscilloscope. This pointer may be invalidated by any future call to GetTrigger() or PullTrigger().

◆ GetTriggerOffset()

virtual int64_t Oscilloscope::GetTriggerOffset ( )
pure virtual

◆ GetTriggerTypes()

vector< string > Oscilloscope::GetTriggerTypes ( )
virtual

Gets a list of triggers this instrument supports.

Reimplemented in AgilentOscilloscope, KeysightDCA, LeCroyOscilloscope, SiglentSCPIOscilloscope, and TektronixOscilloscope.

◆ HasFrequencyControls()

bool Oscilloscope::HasFrequencyControls ( )
virtual

Returns true if the instrument has at least one frequency-domain channel.

Reimplemented in SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, TektronixOscilloscope, and UHDBridgeSDR.

◆ HasInputMux()

bool Oscilloscope::HasInputMux ( size_t  i)
virtual

Checks if a channel has an input multiplexer.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope.

◆ HasResolutionBandwidth()

bool Oscilloscope::HasResolutionBandwidth ( )
virtual

Returns true if the instrument has a resolution bandwidth setting.

Only valid if HasFrequencyControls() returns tre.

If false, GetResolutionBandwidth() always returns 1 and SetResolutionBandwidth() does nothing.

Reimplemented in UHDBridgeSDR.

◆ HasTimebaseControls()

bool Oscilloscope::HasTimebaseControls ( )
virtual

Returns true if the instrument has at least one time-domain channel.

Reimplemented in SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, and UHDBridgeSDR.

◆ IDPing()

virtual std::string Oscilloscope::IDPing ( )
pure virtual

Returns the instrument's identification string.

This function MUST NOT CACHE the return value and is safe to use as a barrier synchronization to ensure that the instrument has received and processed all previous commands.

Implemented in SCPIOscilloscope, AntikernelLogicAnalyzer, DemoOscilloscope, and MockOscilloscope.

◆ Invert()

void Oscilloscope::Invert ( size_t  i,
bool  invert 
)
virtual

Enables hardware polarity inversion for a channel, if supported.

Parameters
iZero-based index of channel
invertTrue to invert, false for normal operation

Reimplemented in LeCroyOscilloscope, and SiglentSCPIOscilloscope.

◆ IsADCModeConfigurable()

bool Oscilloscope::IsADCModeConfigurable ( )
virtual

Returns true if the ADC is configurable, false if it can only run in one mode.

Reimplemented in DemoOscilloscope, DigilentOscilloscope, DSLabsOscilloscope, LeCroyOscilloscope, PicoOscilloscope, and SiglentSCPIOscilloscope.

◆ IsChannelEnabled()

virtual bool Oscilloscope::IsChannelEnabled ( size_t  i)
pure virtual

◆ IsDigitalHysteresisConfigurable()

bool Oscilloscope::IsDigitalHysteresisConfigurable ( )
virtual

Checks if digital input hysteresis is configurable or fixed.

Returns
true if configurable, false if fixed

Reimplemented in DigilentOscilloscope, DSLabsOscilloscope, LeCroyOscilloscope, PicoOscilloscope, RSRTO6Oscilloscope, SiglentSCPIOscilloscope, and TektronixOscilloscope.

◆ IsDigitalThresholdConfigurable()

bool Oscilloscope::IsDigitalThresholdConfigurable ( )
virtual

Checks if digital input threshold is configurable or fixed.

Returns
true if configurable, false if fixed

Reimplemented in DigilentOscilloscope, DSLabsOscilloscope, LeCroyOscilloscope, PicoOscilloscope, RSRTO6Oscilloscope, SiglentSCPIOscilloscope, and TektronixOscilloscope.

◆ IsInterleaving()

virtual bool Oscilloscope::IsInterleaving ( )
pure virtual

◆ IsInverted()

bool Oscilloscope::IsInverted ( size_t  i)
virtual

Checks if hardware polarity inversion is enabled for a channel.

Parameters
iZero-based index of channel

Reimplemented in LeCroyOscilloscope, and SiglentSCPIOscilloscope.

◆ IsOffline()

bool Oscilloscope::IsOffline ( )
virtual

Checks if the instrument is currently online.

Returns
True if the Oscilloscope object is actively connected to a physical scope. False if working offline, a file import, etc.

Reimplemented in MockOscilloscope.

◆ IsSamplingModeAvailable()

bool Oscilloscope::IsSamplingModeAvailable ( SamplingMode  mode)
virtual

Returns true if the requested sampling mode is available with the current instrument configuration.

The default implementation returns true for real-time only.

Reimplemented in LeCroyOscilloscope.

◆ IsTriggerArmed()

virtual bool Oscilloscope::IsTriggerArmed ( )
pure virtual

◆ PeekTriggerArmed()

bool Oscilloscope::PeekTriggerArmed ( )
virtual

Checks if the trigger is armed directly on the instrument, without altering internal state or touching caches.

The default implementation of this function simply calls PollTrigger(). This function should be overridden by the driver class if PollTrigger() changes any internal driver state or accesses cached state (including a clientside "trigger armed" flag).

In particular, the multi-scope synchronization feature requires that this function not return true until the instment has confirmed the arm command has completely executed. Otherwise we risk losing trigger events by arming the primary before the secondary is ready to accept a trigger.

Reimplemented in LeCroyOscilloscope, RemoteBridgeOscilloscope, and TektronixOscilloscope.

◆ PollTrigger()

virtual Oscilloscope::TriggerMode Oscilloscope::PollTrigger ( )
pure virtual

◆ PullTrigger()

virtual void Oscilloscope::PullTrigger ( )
pure virtual

◆ PushTrigger()

virtual void Oscilloscope::PushTrigger ( )
pure virtual

◆ SetADCMode()

void Oscilloscope::SetADCMode ( size_t  channel,
size_t  mode 
)
virtual

◆ SetCenterFrequency()

void Oscilloscope::SetCenterFrequency ( size_t  channel,
int64_t  freq 
)
virtual

Sets the center frequency for frequency-domain channels.

Parameters
channelChannel number
freqCenter frequency, in Hz

Reimplemented in CopperMountainVNA, NanoVNA, PicoVNA, TektronixOscilloscope, TinySA, and UHDBridgeSDR.

◆ SetChannelAttenuation()

virtual void Oscilloscope::SetChannelAttenuation ( size_t  i,
double  atten 
)
pure virtual

◆ SetChannelBandwidthLimit()

virtual void Oscilloscope::SetChannelBandwidthLimit ( size_t  i,
unsigned int  limit_mhz 
)
pure virtual

◆ SetChannelCoupling()

virtual void Oscilloscope::SetChannelCoupling ( size_t  i,
OscilloscopeChannel::CouplingType  type 
)
pure virtual

◆ SetChannelOffset()

virtual void Oscilloscope::SetChannelOffset ( size_t  i,
size_t  stream,
float  offset 
)
pure virtual

Sets the offset for a given channel.

Parameters
iZero-based index of channel
streamZero-based index of stream within channel (0 if only one stream, as is normally the case)
offsetOffset, in volts

Implemented in AgilentOscilloscope, AntikernelLabsOscilloscope, AntikernelLabsTriggerCrossbar, AntikernelLogicAnalyzer, DemoOscilloscope, KeysightDCA, LeCroyOscilloscope, MockOscilloscope, RemoteBridgeOscilloscope, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, SiglentSCPIOscilloscope, TektronixOscilloscope, and UHDBridgeSDR.

◆ SetChannelVoltageRange()

virtual void Oscilloscope::SetChannelVoltageRange ( size_t  i,
size_t  stream,
float  range 
)
pure virtual

Sets the range of the current channel configuration.

The range is the distance, in volts, between the most negative/smallest and most positive/largest voltage which the ADC can represent using the current vertical gain configuration. This can be calculated as the number of vertical divisions times the number of volts per division.

The range does not depend on the offset.

Parameters
iZero-based index of channel
streamZero-based index of stream within channel (0 if only one stream, as is normally the case)
rangeVoltage range

Implemented in AgilentOscilloscope, AntikernelLabsOscilloscope, AntikernelLabsTriggerCrossbar, AntikernelLogicAnalyzer, DemoOscilloscope, KeysightDCA, LeCroyOscilloscope, MockOscilloscope, RemoteBridgeOscilloscope, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, SiglentSCPIOscilloscope, TektronixOscilloscope, and UHDBridgeSDR.

◆ SetDeskewForChannel()

void Oscilloscope::SetDeskewForChannel ( size_t  channel,
int64_t  skew 
)
virtual

Sets the deskew setting for a channel.

Parameters
channelThe channel to deskew
skewSkew value, in femtoseconds. Negative values move the channel earlier relative to the zero point. Positive values move the channel later.

The default implementation does nothing, and is suitable for lower-end instruments that do not support deskew.

Reimplemented in LeCroyOscilloscope, SiglentSCPIOscilloscope, and TektronixOscilloscope.

◆ SetDigitalHysteresis()

void Oscilloscope::SetDigitalHysteresis ( size_t  channel,
float  level 
)
virtual

◆ SetDigitalThreshold()

void Oscilloscope::SetDigitalThreshold ( size_t  channel,
float  level 
)
virtual

◆ SetInputMux()

void Oscilloscope::SetInputMux ( size_t  i,
size_t  select 
)
virtual

Sets the input mux for a channel.

Parameters
iZero-based index of channel
selectSelector for the mux

Reimplemented in LeCroyOscilloscope.

◆ SetInterleaving()

virtual bool Oscilloscope::SetInterleaving ( bool  combine)
pure virtual

Configures the scope to combine channels.

This function may fail to enable channel combining if conflicts are present, check the return value!

Returns
True if channel combining is enabled, false if not

Implemented in AgilentOscilloscope, AntikernelLabsOscilloscope, AntikernelLabsTriggerCrossbar, AntikernelLogicAnalyzer, DemoOscilloscope, DigilentOscilloscope, DSLabsOscilloscope, KeysightDCA, LeCroyOscilloscope, MockOscilloscope, PicoOscilloscope, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, SiglentSCPIOscilloscope, TektronixOscilloscope, and ThunderScopeOscilloscope.

◆ SetNumAverages()

void Oscilloscope::SetNumAverages ( size_t  i,
size_t  navg 
)
virtual

Sets the number of hardware averages to use.

Parameters
iZero-based index of channel
navgNumber of averages to use

Reimplemented in LeCroyOscilloscope.

◆ SetResolutionBandwidth()

void Oscilloscope::SetResolutionBandwidth ( int64_t  rbw)
virtual

Gets the resolution bandwidth for frequency-domain channels.

Reimplemented in NanoVNA, SCPISA, TektronixOscilloscope, and TinySA.

◆ SetSampleDepth()

virtual void Oscilloscope::SetSampleDepth ( uint64_t  depth)
pure virtual

◆ SetSampleRate()

virtual void Oscilloscope::SetSampleRate ( uint64_t  rate)
pure virtual

◆ SetSamplingMode()

void Oscilloscope::SetSamplingMode ( SamplingMode  mode)
virtual

Sets the current sampling mode of the instrument.

The default implementation is a no-op.

Reimplemented in LeCroyOscilloscope.

◆ SetSpan()

void Oscilloscope::SetSpan ( int64_t  span)
virtual

Sets the span for frequency-domain channels.

Parameters
spanSpan, in Hz

Reimplemented in CopperMountainVNA, NanoVNA, PicoVNA, TektronixOscilloscope, TinySA, and UHDBridgeSDR.

◆ SetTrigger()

void Oscilloscope::SetTrigger ( Trigger trigger)
inline

Sets a new trigger on the instrument and pushes changes.

Calling SetTrigger() with the currently selected trigger is legal and is equivalent to calling PushTrigger().

Ownership of the trigger object is transferred to the Oscilloscope.

◆ SetTriggerOffset()

virtual void Oscilloscope::SetTriggerOffset ( int64_t  offset)
pure virtual

Sets the trigger offset.

Parameters
offsetFemtoseconds from the start of the capture to the trigger point. Positive values mean the trigger is within the waveform. Negative values mean there is a delay from the trigger point to the start of the waveform.

Implemented in AgilentOscilloscope, AntikernelLabsOscilloscope, AntikernelLabsTriggerCrossbar, AntikernelLogicAnalyzer, DemoOscilloscope, KeysightDCA, LeCroyOscilloscope, MockOscilloscope, PicoOscilloscope, RemoteBridgeOscilloscope, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SCPISA, SCPISDR, SCPISpectrometer, SCPIVNA, SiglentSCPIOscilloscope, TektronixOscilloscope, and UHDBridgeSDR.

◆ SetUseExternalRefclk()

void Oscilloscope::SetUseExternalRefclk ( bool  external)
virtual

Configures the instrument's clock source.

Parameters
externalTrue to use external reference False to use internal clock

The default implementation prints an "unsupported operation" warning, and is suitable for lower-end instruments that do not support external clock inputs.

Reimplemented in AntikernelLabsTriggerCrossbar, LeCroyOscilloscope, SiglentSCPIOscilloscope, and TektronixOscilloscope.

◆ ShouldDegauss()

bool Oscilloscope::ShouldDegauss ( size_t  i)
virtual

Determines if a channel requires a degauss cycle (if supported)

Parameters
iZero-based index of channel

Reimplemented in TektronixOscilloscope.

◆ Start()

virtual void Oscilloscope::Start ( )
pure virtual

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.

Implemented in AgilentOscilloscope, AntikernelLabsOscilloscope, AntikernelLabsTriggerCrossbar, AntikernelLogicAnalyzer, AseqSpectrometer, CopperMountainVNA, DemoOscilloscope, DSLabsOscilloscope, KeysightDCA, LeCroyFWPOscilloscope, LeCroyOscilloscope, MockOscilloscope, NanoVNA, PicoVNA, RemoteBridgeOscilloscope, RigolOscilloscope, RohdeSchwarzOscilloscope, RSRTO6Oscilloscope, SCPISA, SiglentSCPIOscilloscope, TektronixHSIOscilloscope, TektronixOscilloscope, and ThunderScopeOscilloscope.

◆ StartSingleTrigger()

virtual void Oscilloscope::StartSingleTrigger ( )
pure virtual

◆ Stop()

virtual void Oscilloscope::Stop ( )
pure virtual

◆ WaitForTrigger()

bool Oscilloscope::WaitForTrigger ( int  timeout)

Block until a trigger happens or a timeout elapses.

Note that this function has no provision to dispatch any UI events etc. It's intended as a convenience helper for non-interactive ATE applications only.

Parameters
timeoutTimeout value, in milliseconds
Returns
True if triggered, false if timeout

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