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

Driver for Antikernel Labs FPGA logic analyzer core (WIP) More...

#include <AntikernelLogicAnalyzer.h>

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

Public Member Functions

 AntikernelLogicAnalyzer (SCPITransport *transport)
 Connects to a UART and reads the stuff off it.
 
 AntikernelLogicAnalyzer (const AntikernelLogicAnalyzer &rhs)=delete
 
AntikernelLogicAnalyzeroperator= (const AntikernelLogicAnalyzer &rhs)=delete
 
virtual std::string IDPing () override
 Returns the instrument's identification string. More...
 
virtual std::string GetTransportConnectionString () override
 Gets the connection string for our transport. More...
 
virtual std::string GetTransportName () override
 Gets the name of our transport. More...
 
virtual std::string GetName () const override
 
virtual std::string GetVendor () const override
 
virtual std::string GetSerial () const override
 
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 std::vector< OscilloscopeChannel::CouplingType > GetAvailableCouplings (size_t i) override
 Gets the set of legal coupling values 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 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 OscilloscopeChannelGetExternalTrigger () override
 Returns the external trigger input channel, if we have one. 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 Oscilloscope::TriggerMode PollTrigger () override
 Checks the curent trigger status. More...
 
virtual bool AcquireData () override
 Pull data from the instrument. 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 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 std::vector< uint64_t > GetSampleRatesNonInterleaved () override
 Get the legal sampling rates (in Hz) for this scope in all-channels mode. More...
 
virtual std::vector< uint64_t > GetSampleRatesInterleaved () override
 Get the legal sampling rates (in Hz) for this scope in combined-channels mode. More...
 
virtual std::set< InterleaveConflictGetInterleaveConflicts () override
 
virtual std::vector< uint64_t > GetSampleDepthsNonInterleaved () override
 Get the legal memory depths for this scope in all-channels mode. More...
 
virtual std::vector< uint64_t > GetSampleDepthsInterleaved () override
 Get the legal memory depths for this scope in combined-channels mode. 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 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 unsigned int GetInstrumentTypes () const override
 Returns a bitfield describing the set of instrument types that this instrument supports. More...
 
 OSCILLOSCOPE_INITPROC (AntikernelLogicAnalyzer)
 
- 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 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 Member Functions

void LoadChannels ()
 
void SendCommand (uint8_t opcode)
 
void SendCommand (uint8_t opcode, uint8_t chan)
 
void SendCommand (uint8_t opcode, uint8_t chan, uint8_t arg)
 
uint8_t Read1ByteReply ()
 
void ArmTrigger ()
 
- 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)
 

Protected Attributes

bool m_triggerArmed
 
bool m_triggerOneShot
 
std::vector< size_t > m_lowIndexes
 
std::vector< size_t > m_highIndexes
 
uint32_t m_samplePeriod
 
uint32_t m_memoryDepth
 
uint32_t m_memoryWidth
 
uint32_t m_maxWidth
 
- 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 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...
 
- Protected Types inherited from Oscilloscope
typedef std::map< StreamDescriptor, WaveformBase * > SequenceSet
 
typedef std::map< std::string, CreateProcType > CreateMapType
 
- Static Protected Attributes inherited from Oscilloscope
static CreateMapType m_createprocs
 

Detailed Description

Driver for Antikernel Labs FPGA logic analyzer core (WIP)

Member Function Documentation

◆ AcquireData()

bool AntikernelLogicAnalyzer::AcquireData ( )
overridevirtual

Pull data from the instrument.

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

Implements Instrument.

◆ DisableChannel()

void AntikernelLogicAnalyzer::DisableChannel ( size_t  i)
overridevirtual

Turn a channel off, given the index.

This function may optionally configure channel interleaving, if supported in hardware.

Parameters
iZero-based index of channel

Implements Oscilloscope.

◆ EnableChannel()

void AntikernelLogicAnalyzer::EnableChannel ( size_t  i)
overridevirtual

Turn a channel on, given the index.

Parameters
iZero-based index of channel

Implements Oscilloscope.

◆ ForceTrigger()

void AntikernelLogicAnalyzer::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.

◆ GetAvailableCouplings()

vector< OscilloscopeChannel::CouplingType > AntikernelLogicAnalyzer::GetAvailableCouplings ( size_t  i)
overridevirtual

Gets the set of legal coupling values for an input channel.

Parameters
iZero-based index of channel

Implements Oscilloscope.

◆ GetChannelAttenuation()

double AntikernelLogicAnalyzer::GetChannelAttenuation ( size_t  i)
overridevirtual

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

Implements Oscilloscope.

◆ GetChannelBandwidthLimit()

unsigned int AntikernelLogicAnalyzer::GetChannelBandwidthLimit ( size_t  i)
overridevirtual

Gets the bandwidth limit for an input channel.

Parameters
iZero-based index of channel
Returns
Bandwidth limit, in MHz. Zero means "no bandwidth limit".

Implements Oscilloscope.

◆ GetChannelCoupling()

OscilloscopeChannel::CouplingType AntikernelLogicAnalyzer::GetChannelCoupling ( size_t  i)
overridevirtual

Gets the coupling used for an input channel.

Parameters
iZero-based index of channel

Implements Oscilloscope.

◆ GetChannelOffset()

float AntikernelLogicAnalyzer::GetChannelOffset ( size_t  i,
size_t  stream 
)
overridevirtual

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)

Implements Oscilloscope.

◆ GetChannelVoltageRange()

float AntikernelLogicAnalyzer::GetChannelVoltageRange ( size_t  i,
size_t  stream 
)
overridevirtual

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)

Implements Oscilloscope.

◆ GetExternalTrigger()

OscilloscopeChannel * AntikernelLogicAnalyzer::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 AntikernelLogicAnalyzer::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.

Implements Instrument.

◆ GetInstrumentTypesForChannel()

uint32_t AntikernelLogicAnalyzer::GetInstrumentTypesForChannel ( size_t  i) const
overridevirtual

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

Parameters
iChannel index

Implements Instrument.

◆ GetInterleaveConflicts()

set< Oscilloscope::InterleaveConflict > AntikernelLogicAnalyzer::GetInterleaveConflicts ( )
overridevirtual

Implements Oscilloscope.

◆ GetName()

string AntikernelLogicAnalyzer::GetName ( ) const
overridevirtual

Reimplemented from SCPIInstrument.

◆ GetSampleDepth()

uint64_t AntikernelLogicAnalyzer::GetSampleDepth ( )
overridevirtual

Gets the current sample depth of this scope.

Implements Oscilloscope.

◆ GetSampleDepthsInterleaved()

vector< uint64_t > AntikernelLogicAnalyzer::GetSampleDepthsInterleaved ( )
overridevirtual

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

Implements Oscilloscope.

◆ GetSampleDepthsNonInterleaved()

vector< uint64_t > AntikernelLogicAnalyzer::GetSampleDepthsNonInterleaved ( )
overridevirtual

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

Implements Oscilloscope.

◆ GetSampleRate()

uint64_t AntikernelLogicAnalyzer::GetSampleRate ( )
overridevirtual

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

Implements Oscilloscope.

◆ GetSampleRatesInterleaved()

vector< uint64_t > AntikernelLogicAnalyzer::GetSampleRatesInterleaved ( )
overridevirtual

Get the legal sampling rates (in Hz) for this scope in combined-channels mode.

Implements Oscilloscope.

◆ GetSampleRatesNonInterleaved()

vector< uint64_t > AntikernelLogicAnalyzer::GetSampleRatesNonInterleaved ( )
overridevirtual

Get the legal sampling rates (in Hz) for this scope in all-channels mode.

Implements Oscilloscope.

◆ GetSerial()

string AntikernelLogicAnalyzer::GetSerial ( ) const
overridevirtual

Reimplemented from SCPIInstrument.

◆ GetTransportConnectionString()

string AntikernelLogicAnalyzer::GetTransportConnectionString ( )
overridevirtual

Gets the connection string for our transport.

Reimplemented from SCPIInstrument.

◆ GetTransportName()

string AntikernelLogicAnalyzer::GetTransportName ( )
overridevirtual

Gets the name of our transport.

Reimplemented from SCPIInstrument.

◆ GetTriggerOffset()

int64_t AntikernelLogicAnalyzer::GetTriggerOffset ( )
overridevirtual

Gets the trigger offset.

Implements Oscilloscope.

◆ GetVendor()

string AntikernelLogicAnalyzer::GetVendor ( ) const
overridevirtual

Reimplemented from SCPIInstrument.

◆ IDPing()

string AntikernelLogicAnalyzer::IDPing ( )
overridevirtual

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.

Implements Oscilloscope.

◆ IsChannelEnabled()

bool AntikernelLogicAnalyzer::IsChannelEnabled ( size_t  i)
overridevirtual

Checks if a channel is enabled in hardware.

Implements Oscilloscope.

◆ IsInterleaving()

bool AntikernelLogicAnalyzer::IsInterleaving ( )
overridevirtual

Checks if the scope is currently combining channels.

Implements Oscilloscope.

◆ IsTriggerArmed()

bool AntikernelLogicAnalyzer::IsTriggerArmed ( )
overridevirtual

Checks if the trigger is currently armed.

Implements Oscilloscope.

◆ PollTrigger()

Oscilloscope::TriggerMode AntikernelLogicAnalyzer::PollTrigger ( )
overridevirtual

Checks the curent trigger status.

Implements Oscilloscope.

◆ PullTrigger()

void AntikernelLogicAnalyzer::PullTrigger ( )
overridevirtual

Updates m_trigger with any changes made from the instrument side.

Implements Oscilloscope.

◆ PushTrigger()

void AntikernelLogicAnalyzer::PushTrigger ( )
overridevirtual

Pushes changes made to m_trigger to the instrument.

Implements Oscilloscope.

◆ SetChannelAttenuation()

void AntikernelLogicAnalyzer::SetChannelAttenuation ( size_t  i,
double  atten 
)
overridevirtual

Sets the probe attenuation used for an input channel.

Parameters
iZero-based index of channel
attenAttenuation factor

Implements Oscilloscope.

◆ SetChannelBandwidthLimit()

void AntikernelLogicAnalyzer::SetChannelBandwidthLimit ( size_t  i,
unsigned int  limit_mhz 
)
overridevirtual

Sets the bandwidth limit for an input channel.

Parameters
iZero-based index of channel
limit_mhzBandwidth limit, in MHz. Zero means "no bandwidth limit".

Implements Oscilloscope.

◆ SetChannelCoupling()

void AntikernelLogicAnalyzer::SetChannelCoupling ( size_t  i,
OscilloscopeChannel::CouplingType  type 
)
overridevirtual

Sets the coupling used for an input channel.

Parameters
iZero-based index of channel

Implements Oscilloscope.

◆ SetChannelOffset()

void AntikernelLogicAnalyzer::SetChannelOffset ( size_t  i,
size_t  stream,
float  offset 
)
overridevirtual

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

Implements Oscilloscope.

◆ SetChannelVoltageRange()

void AntikernelLogicAnalyzer::SetChannelVoltageRange ( size_t  i,
size_t  stream,
float  range 
)
overridevirtual

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

Implements Oscilloscope.

◆ SetInterleaving()

bool AntikernelLogicAnalyzer::SetInterleaving ( bool  combine)
overridevirtual

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

Implements Oscilloscope.

◆ SetSampleDepth()

void AntikernelLogicAnalyzer::SetSampleDepth ( uint64_t  depth)
overridevirtual

Sets the sample depth of the scope.

Implements Oscilloscope.

◆ SetSampleRate()

void AntikernelLogicAnalyzer::SetSampleRate ( uint64_t  rate)
overridevirtual

Sets the sample rate of the scope, in Hz.

Implements Oscilloscope.

◆ SetTriggerOffset()

void AntikernelLogicAnalyzer::SetTriggerOffset ( int64_t  offset)
overridevirtual

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.

Implements Oscilloscope.

◆ Start()

void AntikernelLogicAnalyzer::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 AntikernelLogicAnalyzer::StartSingleTrigger ( )
overridevirtual

Arms the trigger for a single acquistion.

Implements Oscilloscope.

◆ Stop()

void AntikernelLogicAnalyzer::Stop ( )
overridevirtual

Stops triggering.

Implements Oscilloscope.


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