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

Abstract base class for all filter graph blocks which are not physical instrument channels. More...

#include <Filter.h>

Inherits OscilloscopeChannel.

Inherited by ACCoupleFilter, ACRMSMeasurement, ADL5205Decoder, AddFilter, AreaMeasurement, AutocorrelationFilter, AverageFilter, BandwidthMeasurement, BaseMeasurement, BurstWidthMeasurement, BusHeatmapFilter, CANBitmaskFilter, ClipFilter, ClockRecoveryFilter, ConstantFilter, ConstellationFilter, CouplerDeEmbedFilter, CurrentShuntFilter, DCDMeasurement, DDJMeasurement, DPhyDataDecoder, DPhyHSClockRecoveryFilter, DPhySymbolDecoder, DeEmbedFilter, DeskewFilter, DivideFilter, DownconvertFilter, DownsampleFilter, DramClockFilter, DramRefreshActivateMeasurement, DramRowColumnLatencyMeasurement, DutyCycleMeasurement, EmphasisFilter, EmphasisRemovalFilter, EnvelopeFilter, Ethernet100BaseT1LinkTrainingDecoder, Ethernet64b66bDecoder, EthernetAutonegotiationDecoder, ExponentialMovingAverageFilter, ExportFilter, EyeBitRateMeasurement, EyeHeightMeasurement, EyeJitterMeasurement, EyePattern, EyePeriodMeasurement, EyeWidthMeasurement, FIRFilter, FSKDecoder, FallMeasurement, FrequencyMeasurement, FullWidthHalfMax, GateFilter, GlitchRemovalFilter, GroupDelayFilter, HistogramFilter, HorizontalBathtub, HyperRAMDecoder, IBISDriverFilter, IBM8b10bDecoder, IPv4Decoder, IQDemuxFilter, IQSquelchFilter, ISIMeasurement, ImportFilter, InvertFilter, J1939AnalogDecoder, J1939BitmaskDecoder, JitterFilter, MagnitudeFilter, MaximumFilter, MemoryFilter, MinimumFilter, MovingAverageFilter, MultiplyFilter, NCOFilter, NoiseFilter, OneWireDecoder, OvershootMeasurement, PAM4DemodulatorFilter, PAMEdgeDetectorFilter, PCIe128b130bDecoder, PCIeGen2LogicalDecoder, PRBSCheckerFilter, PRBSGeneratorFilter, PacketDecoder, ParallelBus, PausableFilter, PeakDetectionFilter, PeriodMeasurement, PhaseMeasurement, PhaseNonlinearityFilter, PkPkMeasurement, PulseWidthMeasurement, QSGMIIDecoder, QuadratureDecoder, RISFilter, RMSMeasurement, RiseMeasurement, RjBUjFilter, SDRAMDecoderBase, SNRFilter, SPIDecoder, SParameterSourceFilter, SWDDecoder, SawtoothGeneratorFilter, ScalarPulseDelayFilter, ScalarStairstepFilter, SetupHoldMeasurement, SpectrogramFilter, SquelchFilter, StepGeneratorFilter, SubtractFilter, TCPDecoder, TDRFilter, TIEMeasurement, TMDSDecoder, TachometerFilter, TappedDelayLineFilter, ThermalDiodeFilter, ThresholdFilter, TimeOutsideLevelMeasurement, ToneGeneratorFilter, TopMeasurement, TwoPortShuntThroughFilter, USB2ActivityDecoder, USB2PCSDecoder, USB2PMADecoder, UartClockRecoveryFilter, UndershootMeasurement, UnwrappedPhaseFilter, UpsampleFilter, VectorFrequencyFilter, VectorPhaseFilter, VerticalBathtub, Waterfall, WaveformGenerationFilter, WindowFilter, WindowedAutocorrelationFilter, and XYSweepFilter.

Collaboration diagram for Filter:
Collaboration graph
[legend]

Public Types

enum  Category {
  CAT_ANALYSIS , CAT_BUS , CAT_CLOCK , CAT_MATH ,
  CAT_MEASUREMENT , CAT_MEMORY , CAT_SERIAL , CAT_MISC ,
  CAT_POWER , CAT_RF , CAT_GENERATION , CAT_EXPORT ,
  CAT_OPTICAL , CAT_COUNT
}
 Category the filter should be displayed under in the GUI. More...
 
typedef Filter *(* CreateProcType) (const std::string &)
 
- Public Types inherited from OscilloscopeChannel
enum  CouplingType {
  COUPLE_DC_1M , COUPLE_AC_1M , COUPLE_DC_50 , COUPLE_AC_50 ,
  COUPLE_GND , COUPLE_SYNTHETIC
}
 
- Public Types inherited from InstrumentChannel
enum  PhysicalConnector {
  CONNECTOR_BANANA_DUAL , CONNECTOR_BMA , CONNECTOR_BNC , CONNECTOR_K ,
  CONNECTOR_K_DUAL , CONNECTOR_N , CONNECTOR_SMA
}
 
enum  VisibilityMode { VIS_HIDE , VIS_AUTO , VIS_SHOW }
 Selects how the channel should be displayed in e.g. the ngscopeclient filter graph editor.
 
enum  DownloadState {
  DOWNLOAD_UNKNOWN , DOWNLOAD_NONE , DOWNLOAD_WAITING , DOWNLOAD_IN_PROGRESS ,
  DOWNLOAD_FINISHED
}
 Enum values to be mapped to GetDownloadState() int result value for specific channel download states. More...
 
- Public Types inherited from FlowGraphNode
enum  DataLocation { LOC_CPU , LOC_GPU , LOC_DONTCARE }
 
typedef std::map< std::string, FilterParameterParameterMapType
 Short name for a map of strings to parameters.
 

Public Member Functions

 Filter (const std::string &color, Category cat, Unit xunit=Unit::UNIT_FS)
 
void HideFromList ()
 Removes this filter from the global list. More...
 
virtual void ClearStreams () override
 Clears out any existing streams. More...
 
virtual size_t AddStream (Unit yunit, const std::string &name, Stream::StreamType stype, uint8_t flags=0) override
 Adds a new data stream to the channel. More...
 
void AddProtocolStream (const std::string &name)
 Helper method for constructors that adds a new STREAM_TYPE_PROTOCOL output stream. More...
 
void AddDigitalStream (const std::string &name)
 Helper method for constructors that adds a new STREAM_TYPE_DIGITAL output stream. More...
 
virtual void SetDefaultName ()
 Sets the name of a filter based on its inputs. More...
 
void UseDefaultName (bool use)
 Specifies whether we're using an auto-generated name or not. More...
 
bool IsUsingDefaultName ()
 Return true if we're using an autogenerated name, false if customized.
 
virtual void AddRef () override
 
virtual void Release () override
 
size_t GetRefCount ()
 Returns the current reference count.
 
Category GetCategory ()
 Returns the category for displaying this filter in the browser.
 
virtual bool NeedsConfig ()
 Determines if we need to display the configuration / setup dialog. More...
 
virtual std::string GetProtocolDisplayName ()=0
 Gets the display name of this protocol (for use in menus, save files, etc). Must be unique.
 
virtual void ClearSweeps ()
 Clears any integrated data from past triggers (e.g. eye patterns). More...
 
virtual void Refresh () override
 Evaluates a filter graph node. More...
 
virtual void Refresh (vk::raii::CommandBuffer &cmdBuf, std::shared_ptr< QueueHandle > queue) override
 
virtual void AutoscaleVertical (size_t stream)
 Adjusts gain and offset such that the active waveform occupies the entire vertical area of the plot.
 
virtual float GetVoltageRange (size_t stream) override
 
virtual void SetVoltageRange (float range, size_t stream) override
 
virtual float GetOffset (size_t stream) override
 
virtual void SetOffset (float offset, size_t stream) override
 
virtual YAML::Node SerializeConfiguration (IDTable &table) override
 Serializes this trigger's configuration to a YAML string. More...
 
virtual void LoadParameters (const YAML::Node &node, IDTable &table) override
 Load configuration from a save file. More...
 
virtual void LoadInputs (const YAML::Node &node, IDTable &table) override
 
virtual bool ShouldPersistWaveform () override
 Determine whether the channel's waveform(s) should be persisted to a session file. More...
 
template<class T >
 __attribute__ ((noinline)) static float InterpolateTime(T *cap
 Interpolates the actual time of a threshold crossing between two samples. More...
 
 if ((ag &&bg)||(!ag &&!bg)) return 0
 
template<class T >
 __attribute__ ((noinline)) static void GetMinMaxVoltage(T *cap
 Gets the lowest and highest voltage of a waveform.
 
 for (float f :cap->m_samples)
 
template<class T >
 __attribute__ ((noinline)) static float GetMinVoltage(T *cap)
 Gets the lowest voltage of a waveform.
 
template<class T >
 __attribute__ ((noinline)) static float GetMaxVoltage(T *cap)
 Gets the highest voltage of a waveform.
 
template<class T >
 __attribute__ ((noinline)) static float GetBaseVoltage(T *cap)
 Gets the most probable "0" level for a digital waveform.
 
template<class T >
 __attribute__ ((noinline)) static float GetTopVoltage(T *cap)
 Gets the most probable "1" level for a digital waveform.
 
template<class T >
 __attribute__ ((noinline)) static float GetAvgVoltage(T *cap)
 Gets the average voltage of a waveform.
 
template<class T >
 __attribute__ ((noinline)) static std
 Makes a histogram from a waveform with the specified number of bins. More...
 
template<class T >
 __attribute__ ((noinline)) static std
 Makes a histogram from a waveform with the specified number of bins. More...
 
template<class T , class R , class S >
 __attribute__ ((noinline)) static void SampleOnAnyEdges(T *data
 Samples a waveform on all edges of a clock. More...
 
 AssertSampleTypesAreSame (data, &samples)
 
samples clear ()
 
samples SetGpuAccessHint (AcceleratorBuffer< S >::HINT_NEVER)
 
samples PrepareForCpuAccess ()
 
 for (size_t i=1;i< len;i++)
 
 FillDurationsGeneric (samples)
 
samples MarkModifiedFromCpu ()
 
template<class T >
 __attribute__ ((noinline)) static void SampleOnAnyEdgesBase(WaveformBase *data
 Samples a waveform on all edges of a clock. More...
 
clock PrepareForCpuAccess ()
 
samples PrepareForCpuAccess ()
 
 if (udata &&uclock) SampleOnAnyEdges(udata
 
else if (udata &&sclock) SampleOnAnyEdges(udata
 
else if (sdata &&sclock) SampleOnAnyEdges(sdata
 
else if (sdata &&uclock) SampleOnAnyEdges(sdata
 
template<class T , class R , class S >
 __attribute__ ((noinline)) static void SampleOnRisingEdges(T *data
 Samples a waveform on the rising edges of a clock. More...
 
 AssertSampleTypesAreSame (data, &samples)
 
samples clear ()
 
samples SetGpuAccessHint (AcceleratorBuffer< S >::HINT_NEVER)
 
 for (size_t i=1;i< len;i++)
 
 FillDurationsGeneric (samples)
 
samples MarkModifiedFromCpu ()
 
template<class T >
 __attribute__ ((noinline)) static void SampleOnRisingEdgesBase(WaveformBase *data
 Samples a waveform on rising edges of a clock. More...
 
clock PrepareForCpuAccess ()
 
samples PrepareForCpuAccess ()
 
 if (udata &&uclock) SampleOnRisingEdges(udata
 
else if (udata &&sclock) SampleOnRisingEdges(udata
 
else if (sdata &&sclock) SampleOnRisingEdges(sdata
 
else if (sdata &&uclock) SampleOnRisingEdges(sdata
 
template<class T , class R , class S >
 __attribute__ ((noinline)) static void SampleOnFallingEdges(T *data
 Samples a waveform on the falling edges of a clock. More...
 
 AssertSampleTypesAreSame (data, &samples)
 
samples clear ()
 
samples SetGpuAccessHint (AcceleratorBuffer< S >::HINT_NEVER)
 
 for (size_t i=1;i< len;i++)
 
 FillDurationsGeneric (samples)
 
samples MarkModifiedFromCpu ()
 
template<class T , class R >
 __attribute__ ((noinline)) static void SampleOnAnyEdgesWithInterpolation(T *data
 Samples an analog waveform on all edges of a clock, interpolating linearly to get sub-sample accuracy. More...
 
 AssertTypeIsDigitalWaveform (clock)
 
samples clear ()
 
samples SetGpuAccessHint (AcceleratorBuffer< float >::HINT_NEVER)
 
 for (size_t i=1;i< len;i++)
 
 FillDurationsGeneric (samples)
 
samples MarkModifiedFromCpu ()
 
template<class T >
 __attribute__ ((noinline)) static void SampleOnAnyEdgesBaseWithInterpolation(WaveformBase *data
 Samples an analog waveform on all edges of a clock, interpolating linearly to get sub-sample accuracy. More...
 
clock PrepareForCpuAccess ()
 
samples PrepareForCpuAccess ()
 
 if (udata &&uclock) SampleOnAnyEdgesWithInterpolation(udata
 
else if (udata &&sclock) SampleOnAnyEdgesWithInterpolation(udata
 
else if (sdata &&sclock) SampleOnAnyEdgesWithInterpolation(sdata
 
else if (sdata &&uclock) SampleOnAnyEdgesWithInterpolation(sdata
 
sigc::signal< void()> signal_outputsChanged ()
 
- Public Member Functions inherited from OscilloscopeChannel
 OscilloscopeChannel (Oscilloscope *scope, const std::string &hwname, const std::string &color, Unit xunit=Unit(Unit::UNIT_FS), size_t index=0)
 
 OscilloscopeChannel (Oscilloscope *scope, const std::string &hwname, const std::string &color, Unit xunit=Unit(Unit::UNIT_FS), Unit yunit=Unit(Unit::UNIT_VOLTS), Stream::StreamType stype=Stream::STREAM_TYPE_ANALOG, size_t index=0)
 
OscilloscopeGetScope ()
 
size_t GetRefCount ()
 
virtual void SetDisplayName (std::string name) override
 Sets the human-readable nickname for this channel, as displayed in the GUI. More...
 
virtual std::string GetDisplayName () override
 Gets the human-readable nickname for this channel, as displayed in the GUI. More...
 
bool IsEnabled ()
 
void Enable ()
 
void Disable ()
 
virtual void AddRef ()
 
virtual void Release ()
 
virtual CouplingType GetCoupling ()
 
virtual void SetCoupling (CouplingType type)
 
virtual std::vector< OscilloscopeChannel::CouplingType > GetAvailableCouplings ()
 
virtual double GetAttenuation ()
 
virtual void SetAttenuation (double atten)
 
virtual int GetBandwidthLimit ()
 
virtual void SetBandwidthLimit (int mhz)
 
virtual void SetDeskew (int64_t skew)
 
virtual int64_t GetDeskew ()
 
bool IsPhysicalChannel ()
 
virtual float GetVoltageRange (size_t stream)
 
virtual void SetVoltageRange (float range, size_t stream)
 
virtual float GetOffset (size_t stream)
 
virtual void SetOffset (float offset, size_t stream)
 
void SetDigitalHysteresis (float level)
 
void SetDigitalThreshold (float level)
 
void SetCenterFrequency (int64_t freq)
 
bool CanAutoZero ()
 
void AutoZero ()
 
bool CanDegauss ()
 
void Degauss ()
 
std::string GetProbeName ()
 
virtual bool CanInvert ()
 
virtual void Invert (bool invert)
 
virtual bool IsInverted ()
 
virtual bool HasInputMux ()
 
virtual size_t GetInputMuxSetting ()
 
virtual void SetInputMux (size_t select)
 
void SetDefaultDisplayName ()
 Gives a channel a default display name if there's not one already. More...
 
virtual DownloadState GetDownloadState () override
 Returns the current download state of this channel. More...
 
virtual float GetDownloadProgress () override
 returns the current completion of the download (on the range [0, 1]), if not DOWNLOAD_UNKNOWN More...
 
virtual double GetDownloadStartTime () override
 returns the start time of a download, if we are DOWNLOAD_IN_PROGRESS; undefined, otherwise More...
 
- Public Member Functions inherited from InstrumentChannel
 InstrumentChannel (Instrument *inst, const std::string &hwname, const std::string &color="#808080", Unit xunit=Unit(Unit::UNIT_FS), size_t index=0)
 
 InstrumentChannel (Instrument *inst, const std::string &hwname, const std::string &color="#808080", Unit xunit=Unit(Unit::UNIT_FS), Unit yunit=Unit(Unit::UNIT_VOLTS), Stream::StreamType stype=Stream::STREAM_TYPE_ANALOG, size_t index=0)
 
virtual void SetDisplayName (std::string name)
 Sets the human-readable nickname for this channel, as displayed in the GUI. More...
 
virtual std::string GetDisplayName ()
 Gets the human-readable nickname for this channel, as displayed in the GUI. More...
 
std::string GetHwname ()
 Gets the hardware name of the channel (m_hwname)
 
size_t GetIndex ()
 Gets the (zero based) index of the channel.
 
InstrumentGetInstrument ()
 Gets the instrument this channel is part of (if any)
 
void ClearCachedDisplayName ()
 Sets the display name to an empty string, causing a fetch from hardware. More...
 
virtual PhysicalConnector GetPhysicalConnector ()
 
void SetData (WaveformBase *pNew, size_t stream)
 Sets the waveform data for a given stream, replacing any previous waveform. More...
 
virtual Unit GetXAxisUnits ()
 Returns the X axis unit for this channel.
 
virtual Unit GetYAxisUnits (size_t stream)
 Returns the Y axis unit for a specified stream.
 
virtual void SetXAxisUnits (const Unit &rhs)
 Changes the X axis unit for this channel. More...
 
virtual void SetYAxisUnits (const Unit &rhs, size_t stream)
 Changes the X axis unit for a specified stream. More...
 
Stream::StreamType GetType (size_t stream)
 Returns the type of a specified stream.
 
size_t GetStreamCount ()
 Get the number of data streams.
 
std::string GetStreamName (size_t stream)
 Gets the name of a stream (for display in the UI)
 
WaveformBaseGetData (size_t stream)
 Get the contents of a data stream.
 
uint8_t GetStreamFlags (size_t stream)
 Get the flags of a data stream.
 
float GetScalarValue (size_t stream)
 Gets the value of a scalar data stream.
 
void SetScalarValue (size_t stream, float value)
 Sets the value of a scalar data stream.
 
WaveformBaseDetach (size_t stream)
 Detach the capture data from this channel. More...
 
virtual bool ShouldPersistWaveform ()
 Determine whether the channel's waveform(s) should be persisted to a session file. More...
 
virtual DownloadState GetDownloadState ()
 Returns the current download state of this channel. More...
 
virtual float GetDownloadProgress ()
 returns the current completion of the download (on the range [0, 1]), if not DOWNLOAD_UNKNOWN More...
 
virtual double GetDownloadStartTime ()
 returns the start time of a download, if we are DOWNLOAD_IN_PROGRESS; undefined, otherwise More...
 
- Public Member Functions inherited from FlowGraphNode
void DetachInputs ()
 Disconnects all inputs from the node without releasing them. More...
 
size_t GetInputCount ()
 
std::string GetInputName (size_t i)
 
void SetInput (size_t i, StreamDescriptor stream, bool force=false)
 Connects a stream to the input of this node. More...
 
void SetInput (const std::string &name, StreamDescriptor stream, bool force=false)
 
virtual bool ValidateChannel (size_t i, StreamDescriptor stream)
 
StreamDescriptor GetInput (size_t i)
 Gets the descriptor for one of our inputs.
 
FilterParameterGetParameter (std::string s)
 
bool HasParameter (std::string s)
 Checks if we have a parameter with a given name. More...
 
ParameterMapType::iterator GetParamBegin ()
 Returns an iterator to the beginning of our parameter map.
 
ParameterMapType::iterator GetParamEnd ()
 Returns an iterator to the end of our parameter map.
 
size_t GetParamCount ()
 Returns the number of parameter we have.
 
virtual YAML::Node SerializeConfiguration (IDTable &table)
 Serializes this trigger's configuration to a YAML string. More...
 
virtual void LoadParameters (const YAML::Node &node, IDTable &table)
 Load configuration from a save file. More...
 
virtual void LoadInputs (const YAML::Node &node, IDTable &table)
 
bool IsDownstreamOf (std::set< FlowGraphNode * > nodes)
 Determines if this node is downstream of any of the specified other nodes. More...
 
virtual DataLocation GetInputLocation ()
 Gets the desired location of the nodes's input data. More...
 
virtual void Refresh ()
 Evaluates a filter graph node. More...
 
virtual void Refresh (vk::raii::CommandBuffer &cmdBuf, std::shared_ptr< QueueHandle > queue)
 
sigc::signal< void()> signal_parametersChanged ()
 
sigc::signal< void()> signal_inputsChanged ()
 

Static Public Member Functions

static std::set< Filter * > GetAllInstances ()
 Get all currently existing filters.
 
static size_t GetNumInstances ()
 Get all currently existing filters.
 
static int64_t GetNextEventTimestamp (SparseWaveformBase *wfm, size_t i, size_t len, int64_t timestamp)
 Gets the timestamp of the next event (if any) on a waveform. More...
 
static int64_t GetNextEventTimestamp (UniformWaveformBase *wfm, size_t i, size_t len, int64_t timestamp)
 Gets the timestamp of the next event (if any) on a waveform. More...
 
static int64_t GetNextEventTimestamp (SparseWaveformBase *swfm, UniformWaveformBase *uwfm, size_t i, size_t len, int64_t timestamp)
 Gets the timestamp of the next sample in a waveform, which may be sparse or uniform.
 
static void AdvanceToTimestamp (SparseWaveformBase *wfm, size_t &i, size_t len, int64_t timestamp)
 Advance the waveform to a given timestamp. More...
 
static void AdvanceToTimestamp (UniformWaveformBase *wfm, size_t &i, size_t len, int64_t timestamp)
 Advance the waveform to a given timestamp. More...
 
static void AdvanceToTimestamp (SparseWaveformBase *swfm, UniformWaveformBase *uwfm, size_t &i, size_t len, int64_t timestamp)
 
static int64_t GetNextEventTimestampScaled (SparseWaveformBase *wfm, size_t i, size_t len, int64_t timestamp)
 Gets the timestamp of the next event (if any) on a waveform. More...
 
static int64_t GetNextEventTimestampScaled (UniformWaveformBase *wfm, size_t i, size_t len, int64_t timestamp)
 Gets the timestamp of the next event (if any) on a waveform. More...
 
static void AdvanceToTimestampScaled (SparseWaveformBase *wfm, size_t &i, size_t len, int64_t timestamp)
 Advance the waveform to a given timestamp. More...
 
static void AdvanceToTimestampScaled (UniformWaveformBase *wfm, size_t &i, size_t len, int64_t timestamp)
 Advance the waveform to a given timestamp. More...
 
static void AdvanceToTimestampScaled (SparseWaveformBase *swfm, UniformWaveformBase *uwfm, size_t &i, size_t len, int64_t timestamp)
 
static int64_t GetNextEventTimestampScaled (SparseWaveformBase *swfm, UniformWaveformBase *uwfm, size_t i, size_t len, int64_t timestamp)
 
static float InterpolateTime (SparseAnalogWaveform *s, UniformAnalogWaveform *u, size_t a, float voltage)
 
static float InterpolateTime (UniformAnalogWaveform *p, UniformAnalogWaveform *n, size_t a, float voltage)
 Interpolates the actual time of a differential threshold crossing between two samples. More...
 
static float InterpolateTime (SparseAnalogWaveform *p, SparseAnalogWaveform *n, size_t a, float voltage)
 Interpolates the actual time of a differential threshold crossing between two samples. More...
 
static float InterpolateTime (SparseAnalogWaveform *sp, UniformAnalogWaveform *up, SparseAnalogWaveform *sn, UniformAnalogWaveform *un, size_t a, float voltage)
 
static float InterpolateValue (SparseAnalogWaveform *cap, size_t index, float frac_ticks)
 Interpolates the actual value of a point between two samples. More...
 
static float InterpolateValue (UniformAnalogWaveform *cap, size_t index, float frac_ticks)
 Interpolates the actual value of a point between two samples. More...
 
static float GetMinVoltage (SparseAnalogWaveform *s, UniformAnalogWaveform *u)
 Gets the lowest voltage of a waveform.
 
static float GetMaxVoltage (SparseAnalogWaveform *s, UniformAnalogWaveform *u)
 Gets the lowest voltage of a waveform.
 
static float GetBaseVoltage (SparseAnalogWaveform *swfm, UniformAnalogWaveform *uwfm)
 Gets the base voltage of a waveform which may be sparse or uniform.
 
static float GetTopVoltage (SparseAnalogWaveform *swfm, UniformAnalogWaveform *uwfm)
 Gets the top voltage of a waveform which may be sparse or uniform.
 
static float GetAvgVoltage (SparseAnalogWaveform *swfm, UniformAnalogWaveform *uwfm)
 Gets the average voltage of a waveform which may be sparse or uniform.
 
static std::vector< size_t > MakeHistogram (SparseAnalogWaveform *s, UniformAnalogWaveform *u, float low, float high, size_t bins)
 Makes a histogram from a waveform with the specified number of bins. More...
 
template<class T >
static void PrepareForCpuAccess (SparseWaveform< T > *s, UniformWaveform< T > *u)
 Prepares a sparse or uniform analog waveform for CPU access.
 
template<class T >
static void PrepareForGpuAccess (SparseWaveform< T > *s, UniformWaveform< T > *u)
 Prepares a sparse or uniform analog waveform for GPU access.
 
static void FindRisingEdges (UniformAnalogWaveform *data, float threshold, std::vector< int64_t > &edges)
 Find rising edges in a waveform, interpolating to sub-sample resolution as necessary.
 
static void FindRisingEdges (SparseAnalogWaveform *data, float threshold, std::vector< int64_t > &edges)
 Find rising edges in a waveform, interpolating to sub-sample resolution as necessary.
 
static void FindZeroCrossings (SparseAnalogWaveform *data, float threshold, std::vector< int64_t > &edges)
 Find zero crossings in a waveform, interpolating as necessary.
 
static void FindZeroCrossings (UniformAnalogWaveform *data, float threshold, std::vector< int64_t > &edges)
 Find zero crossings in a waveform, interpolating as necessary.
 
static void FindZeroCrossings (UniformDigitalWaveform *data, std::vector< int64_t > &edges)
 
static void FindZeroCrossings (SparseDigitalWaveform *data, std::vector< int64_t > &edges)
 
static void FindRisingEdges (UniformDigitalWaveform *data, std::vector< int64_t > &edges)
 
static void FindRisingEdges (SparseDigitalWaveform *data, std::vector< int64_t > &edges)
 
static void FindFallingEdges (UniformDigitalWaveform *data, std::vector< int64_t > &edges)
 
static void FindFallingEdges (SparseDigitalWaveform *data, std::vector< int64_t > &edges)
 
static void FindPeaks (UniformAnalogWaveform *data, float peak_threshold, std::vector< int64_t > &peak_indices)
 
static void FindPeaks (SparseAnalogWaveform *data, float peak_threshold, std::vector< int64_t > &peak_indices)
 
static void FindZeroCrossingsBase (WaveformBase *data, float threshold, std::vector< int64_t > &edges)
 
static void FindRisingEdges (SparseDigitalWaveform *sdata, UniformDigitalWaveform *udata, std::vector< int64_t > &edges)
 
static void FindFallingEdges (SparseDigitalWaveform *sdata, UniformDigitalWaveform *udata, std::vector< int64_t > &edges)
 
static void FindPeaks (SparseAnalogWaveform *sdata, UniformAnalogWaveform *udata, float peak_threshold, std::vector< int64_t > &peak_indices)
 
static void FindZeroCrossings (SparseAnalogWaveform *sdata, UniformAnalogWaveform *udata, float threshold, std::vector< int64_t > &edges)
 
static void FindZeroCrossings (SparseDigitalWaveform *sdata, UniformDigitalWaveform *udata, std::vector< int64_t > &edges)
 
static void ClearAnalysisCache ()
 
static void DoAddDecoderClass (const std::string &name, CreateProcType proc)
 
static void EnumProtocols (std::vector< std::string > &names)
 
static FilterCreateFilter (const std::string &protocol, const std::string &color="#ffffff")
 

Public Attributes

size_t a
 
size_t float voltage
 
float fa = cap->m_samples[a]
 
float fb = cap->m_samples[a+1]
 
bool ag = (fa > voltage)
 
bool bg = (fb > voltage)
 
float slope = (fb - fa)
 
float delta = voltage - fa
 
return delta slope
 
float & vmin
 
float float & vmax
 
 vmin = FLT_MAX
 
 vmax = FLT_MIN
 
R * clock
 
R SparseWaveform< S > & samples
 
size_t len = clock->size()
 
size_t dlen = data->size()
 
size_t ndata = 0
 
WaveformBaseclock
 
WaveformBase SparseWaveform< T > & samples
 
auto udata = dynamic_cast<UniformWaveform<T>*>(data)
 
auto sdata = dynamic_cast<SparseWaveform<T>*>(data)
 
auto uclock = dynamic_cast<UniformDigitalWaveform*>(clock)
 
auto sclock = dynamic_cast<SparseDigitalWaveform*>(clock)
 
 uclock
 
 samples
 
else sclock
 
else samples
 
else uclock
 
AssertTypeIsSparseWaveform & samples
 
R SparseAnalogWaveformsamples
 
- Public Attributes inherited from InstrumentChannel
std::string m_displaycolor
 Display color (HTML hex notation with optional alpha channel: #RRGGBB or ##RRGGBBAA)
 
enum InstrumentChannel::VisibilityMode m_visibilityMode
 

Protected Types

typedef std::map< std::string, CreateProcType > CreateMapType
 

Protected Member Functions

bool VerifyAllInputsOK (bool allowEmpty=false)
 Returns true if every input to the filter is non-NULL (and, optionally has a non-empty waveform present)
 
bool VerifyInputOK (size_t i, bool allowEmpty=false)
 Returns true if a given input to the filter is non-NULL (and, optionally has a non-empty waveform present)
 
bool VerifyAllInputsOKAndUniformAnalog ()
 Returns true if every input to the filter is non-NULL and has a non-empty, uniformly sampled analog waveform present.
 
bool VerifyAllInputsOKAndSparseAnalog ()
 Returns true if every input to the filter is non-NULL and has a non-empty, sparsely sampled analog waveform present.
 
bool VerifyAllInputsOKAndSparseDigital ()
 Returns true if every input to the filter is non-NULL and has a non-empty, sparsely sampled digital waveform present.
 
bool VerifyAllInputsOKAndSparseOrUniformDigital ()
 Returns true if every input to the filter is non-NULL and has a non-empty, digital waveform present.
 
UniformAnalogWaveformSetupEmptyUniformAnalogOutputWaveform (WaveformBase *din, size_t stream, bool clear=true)
 Sets up an analog output waveform and copies basic metadata from the input. More...
 
SparseAnalogWaveformSetupEmptySparseAnalogOutputWaveform (WaveformBase *din, size_t stream, bool clear=true)
 Sets up an analog output waveform and copies basic metadata from the input. More...
 
UniformDigitalWaveformSetupEmptyUniformDigitalOutputWaveform (WaveformBase *din, size_t stream)
 Sets up an digital output waveform and copies basic metadata from the input. More...
 
SparseDigitalWaveformSetupEmptySparseDigitalOutputWaveform (WaveformBase *din, size_t stream)
 Sets up an digital output waveform and copies basic metadata from the input. More...
 
SparseAnalogWaveformSetupSparseOutputWaveform (SparseWaveformBase *din, size_t stream, size_t skipstart, size_t skipend)
 Sets up an analog output waveform and copies timebase configuration from the input. More...
 
SparseDigitalWaveformSetupSparseDigitalOutputWaveform (SparseWaveformBase *din, size_t stream, size_t skipstart, size_t skipend)
 Sets up a digital output waveform and copies timebase configuration from the input. More...
 
- Protected Member Functions inherited from OscilloscopeChannel
void SharedCtorInit (Unit unit)
 
virtual void ClearStreams ()
 Clears out any existing streams. More...
 
virtual size_t AddStream (Unit yunit, const std::string &name, Stream::StreamType stype, uint8_t flags=0)
 Adds a new data stream to the channel. More...
 
- Protected Member Functions inherited from FlowGraphNode
virtual void OnInputChanged (size_t i)
 Called when a new input is connected to the node. More...
 
WaveformBaseGetInputWaveform (size_t i)
 Gets the waveform attached to the specified input. More...
 
SparseAnalogWaveformGetSparseAnalogInputWaveform (size_t i)
 Gets the analog waveform attached to the specified input.
 
UniformAnalogWaveformGetUniformAnalogInputWaveform (size_t i)
 Gets the analog waveform attached to the specified input.
 
SparseDigitalWaveformGetSparseDigitalInputWaveform (size_t i)
 Gets the digital waveform attached to the specified input.
 
UniformDigitalWaveformGetUniformDigitalInputWaveform (size_t i)
 Gets the digital waveform attached to the specified input.
 
SparseDigitalBusWaveformGetSparseDigitalBusInputWaveform (size_t i)
 Gets the digital bus waveform attached to the specified input.
 
void CreateInput (const std::string &name)
 Creates and names an input signal.
 
std::string GetInputDisplayName (size_t i)
 Gets the display name for one of our inputs. More...
 

Static Protected Member Functions

static void FillDurationsGeneric (SparseWaveformBase &wfm)
 Computes durations of samples based on offsets, assuming the capture is gapless. More...
 

Protected Attributes

std::vector< float > m_ranges
 Y axis range of each output stream.
 
std::vector< float > m_offsets
 Y axis offset of each output stream.
 
Category m_category
 Category this filter should be displayed under.
 
bool m_usingDefault
 If true, we're using an auto-generated name.
 
sigc::signal< void()> m_outputsChangedSignal
 Signal emitted when the set of output streams changes.
 
unsigned int m_instanceNum
 Instance number (for auto naming) More...
 
- Protected Attributes inherited from OscilloscopeChannel
size_t m_refcount
 Number of references (channel is disabled when last ref is released)
 
- Protected Attributes inherited from InstrumentChannel
Instrumentm_instrument
 The instrument we're part of (may be null in the case of filters etc)
 
std::string m_hwname
 Hardware name of the channel. More...
 
std::string m_displayname
 Display name (user defined, defaults to m_hwname). More...
 
size_t m_index
 Zero based index of the channel within the instrument.
 
Unit m_xAxisUnit
 Unit of measurement for our horizontal axis (common to all streams)
 
std::vector< Streamm_streams
 Configuration data for each of our output streams.
 
- Protected Attributes inherited from FlowGraphNode
std::vector< std::string > m_signalNames
 Names of signals we take as input.
 
std::vector< StreamDescriptorm_inputs
 The channel (if any) connected to each of our inputs.
 
ParameterMapType m_parameters
 
sigc::signal< void()> m_parametersChangedSignal
 Signal emitted when the set of parameters changes.
 
sigc::signal< void()> m_inputsChangedSignal
 Signal emitted when the set of inputs changes.
 

Static Protected Attributes

static CreateMapType m_createprocs
 
static std::set< Filter * > m_filters
 
static std::map< std::string, unsigned int > m_instanceCount
 
static std::mutex m_cacheMutex
 
static std::map< std::pair< WaveformBase *, float >, std::vector< int64_t > > m_zeroCrossingCache
 

Detailed Description

Abstract base class for all filter graph blocks which are not physical instrument channels.

Member Enumeration Documentation

◆ Category

Category the filter should be displayed under in the GUI.

Add new categories to the end of this list before CAT_COUNT to maintain ABI compatibility with existing plugins TODO: we should make this a bitmask or list of string tags or something

Member Function Documentation

◆ __attribute__() [1/10]

template<class T >
Filter::__attribute__ ( (noinline)  )

Interpolates the actual time of a threshold crossing between two samples.

Simple linear interpolation for now (TODO sinc)

Returns
Interpolated crossing time. 0=a, 1=a+1, fractional values are in between.

TODO: validate that this works correctly for sparsely sampled waveforms?

◆ __attribute__() [2/10]

template<class T >
Filter::__attribute__ ( (noinline)  )
inline

Makes a histogram from a waveform with the specified number of bins.

Any values outside the range are clamped (put in bin 0 or bins-1 as appropriate).

Parameters
lowLow endpoint of the histogram (volts)
highHigh endpoint of the histogram (volts)
binsNumber of histogram bins

◆ __attribute__() [3/10]

template<class T >
Filter::__attribute__ ( (noinline)  )
inline

Makes a histogram from a waveform with the specified number of bins.

Any values outside the range are discarded.

Parameters
lowLow endpoint of the histogram (volts)
highHigh endpoint of the histogram (volts)
binsNumber of histogram bins

◆ __attribute__() [4/10]

template<class T , class R , class S >
Filter::__attribute__ ( (noinline)  )

Samples a waveform on all edges of a clock.

The sampling rate of the data and clock signals need not be equal or uniform.

The sampled waveform is sparse and has a time scale in femtoseconds, regardless of the incoming waveform's time scale and sampling uniformity.

Parameters
dataThe data signal to sample. Can be be sparse or uniform of any type.
clockThe clock signal to use. Must be sparse or uniform digital.
samplesOutput waveform. Must be sparse and same data type as data.

◆ __attribute__() [5/10]

template<class T >
Filter::__attribute__ ( (noinline)  )

Samples a waveform on all edges of a clock.

The sampling rate of the data and clock signals need not be equal or uniform.

The sampled waveform is sparse and has a time scale in femtoseconds, regardless of the incoming waveform's time scale and sampling uniformity.

Parameters
dataThe data signal to sample. Can be be sparse or uniform of any type.
clockThe clock signal to use. Must be sparse or uniform digital.
samplesOutput waveform. Must be sparse and same data type as data.

◆ __attribute__() [6/10]

template<class T >
Filter::__attribute__ ( (noinline)  )

Samples an analog waveform on all edges of a clock, interpolating linearly to get sub-sample accuracy.

The sampling rate of the data and clock signals need not be equal or uniform.

The sampled waveform is sparse and has a time scale in femtoseconds, regardless of the incoming waveform's time scale and sampling uniformity.

Parameters
dataThe data signal to sample. Can be be sparse or uniform of any type.
clockThe clock signal to use. Must be sparse or uniform digital.
samplesOutput waveform. Must be sparse and same data type as data.

◆ __attribute__() [7/10]

template<class T , class R >
Filter::__attribute__ ( (noinline)  )

Samples an analog waveform on all edges of a clock, interpolating linearly to get sub-sample accuracy.

The sampling rate of the data and clock signals need not be equal or uniform.

The sampled waveform has a time scale in femtoseconds regardless of the incoming waveform's time scale.

Parameters
dataThe data signal to sample
clockThe clock signal to use
samplesOutput waveform

◆ __attribute__() [8/10]

template<class T , class R , class S >
Filter::__attribute__ ( (noinline)  )

Samples a waveform on the falling edges of a clock.

The sampling rate of the data and clock signals need not be equal or uniform.

The sampled waveform is sparse and has a time scale in femtoseconds, regardless of the incoming waveform's time scale and sampling uniformity.

Parameters
dataThe data signal to sample. Can be be sparse or uniform of any type.
clockThe clock signal to use. Must be sparse or uniform digital.
samplesOutput waveform. Must be sparse and same data type as data.

◆ __attribute__() [9/10]

template<class T , class R , class S >
Filter::__attribute__ ( (noinline)  )

Samples a waveform on the rising edges of a clock.

The sampling rate of the data and clock signals need not be equal or uniform.

The sampled waveform is sparse and has a time scale in femtoseconds, regardless of the incoming waveform's time scale and sampling uniformity.

Parameters
dataThe data signal to sample. Can be be sparse or uniform of any type.
clockThe clock signal to use. Must be sparse or uniform digital.
samplesOutput waveform. Must be sparse and same data type as data.

◆ __attribute__() [10/10]

template<class T >
Filter::__attribute__ ( (noinline)  )

Samples a waveform on rising edges of a clock.

The sampling rate of the data and clock signals need not be equal or uniform.

The sampled waveform is sparse and has a time scale in femtoseconds, regardless of the incoming waveform's time scale and sampling uniformity.

Parameters
dataThe data signal to sample. Can be be sparse or uniform of any type.
clockThe clock signal to use. Must be sparse or uniform digital.
samplesOutput waveform. Must be sparse and same data type as data.

◆ AddDigitalStream()

void Filter::AddDigitalStream ( const std::string &  name)
inline

Helper method for constructors that adds a new STREAM_TYPE_DIGITAL output stream.

Parameters
nameName of the stream

◆ AddProtocolStream()

void Filter::AddProtocolStream ( const std::string &  name)
inline

Helper method for constructors that adds a new STREAM_TYPE_PROTOCOL output stream.

Parameters
nameName of the stream

◆ AddRef()

void Filter::AddRef ( )
overridevirtual

Reimplemented from OscilloscopeChannel.

◆ AddStream()

size_t Filter::AddStream ( Unit  yunit,
const std::string &  name,
Stream::StreamType  stype,
uint8_t  flags = 0 
)
overridevirtual

Adds a new data stream to the channel.

Returns
Index of the new stream

Reimplemented from InstrumentChannel.

◆ AdvanceToTimestamp() [1/2]

void Filter::AdvanceToTimestamp ( SparseWaveformBase wfm,
size_t &  i,
size_t  len,
int64_t  timestamp 
)
static

Advance the waveform to a given timestamp.

Works in timescale units

◆ AdvanceToTimestamp() [2/2]

void Filter::AdvanceToTimestamp ( UniformWaveformBase wfm,
size_t &  i,
size_t  len,
int64_t  timestamp 
)
static

Advance the waveform to a given timestamp.

Works in timescale units

◆ AdvanceToTimestampScaled() [1/2]

void Filter::AdvanceToTimestampScaled ( SparseWaveformBase wfm,
size_t &  i,
size_t  len,
int64_t  timestamp 
)
static

Advance the waveform to a given timestamp.

Works in native X axis units

◆ AdvanceToTimestampScaled() [2/2]

void Filter::AdvanceToTimestampScaled ( UniformWaveformBase wfm,
size_t &  i,
size_t  len,
int64_t  timestamp 
)
static

Advance the waveform to a given timestamp.

Works in native X axis units

◆ ClearStreams()

void Filter::ClearStreams ( )
overridevirtual

Clears out any existing streams.

Reimplemented from InstrumentChannel.

◆ ClearSweeps()

void Filter::ClearSweeps ( )
virtual

Clears any integrated data from past triggers (e.g. eye patterns).

Most decoders shouldn't have to do anything for this.

Reimplemented in AverageFilter, ConstellationFilter, EnvelopeFilter, ExponentialMovingAverageFilter, EyePattern, HistogramFilter, MaximumFilter, MinimumFilter, PeakHoldFilter, RISFilter, TrendFilter, Waterfall, and XYSweepFilter.

◆ FillDurationsGeneric()

void Filter::FillDurationsGeneric ( SparseWaveformBase wfm)
staticprotected

Computes durations of samples based on offsets, assuming the capture is gapless.

The last sample has a duration of 1 unit.

◆ GetNextEventTimestamp() [1/2]

int64_t Filter::GetNextEventTimestamp ( SparseWaveformBase wfm,
size_t  i,
size_t  len,
int64_t  timestamp 
)
static

Gets the timestamp of the next event (if any) on a waveform.

Works in timescale units

◆ GetNextEventTimestamp() [2/2]

int64_t Filter::GetNextEventTimestamp ( UniformWaveformBase wfm,
size_t  i,
size_t  len,
int64_t  timestamp 
)
static

Gets the timestamp of the next event (if any) on a waveform.

Works in timescale units

◆ GetNextEventTimestampScaled() [1/2]

int64_t Filter::GetNextEventTimestampScaled ( SparseWaveformBase wfm,
size_t  i,
size_t  len,
int64_t  timestamp 
)
static

Gets the timestamp of the next event (if any) on a waveform.

Works in native X axis units

◆ GetNextEventTimestampScaled() [2/2]

int64_t Filter::GetNextEventTimestampScaled ( UniformWaveformBase wfm,
size_t  i,
size_t  len,
int64_t  timestamp 
)
static

Gets the timestamp of the next event (if any) on a waveform.

Works in native X axis units

◆ GetOffset()

float Filter::GetOffset ( size_t  stream)
overridevirtual

Reimplemented from OscilloscopeChannel.

◆ GetVoltageRange()

float Filter::GetVoltageRange ( size_t  stream)
overridevirtual

Reimplemented from OscilloscopeChannel.

◆ HideFromList()

void Filter::HideFromList ( )
inline

Removes this filter from the global list.

This is typically used for background filters used in GUI code to query stream names etc, but not actually used in the real filter graph.

◆ InterpolateTime() [1/2]

float Filter::InterpolateTime ( SparseAnalogWaveform p,
SparseAnalogWaveform n,
size_t  a,
float  voltage 
)
static

Interpolates the actual time of a differential threshold crossing between two samples.

Simple linear interpolation for now (TODO sinc)

Returns
Interpolated crossing time. 0=a, 1=a+1, fractional values are in between.

◆ InterpolateTime() [2/2]

float Filter::InterpolateTime ( UniformAnalogWaveform p,
UniformAnalogWaveform n,
size_t  a,
float  voltage 
)
static

Interpolates the actual time of a differential threshold crossing between two samples.

Simple linear interpolation for now (TODO sinc)

Returns
Interpolated crossing time. 0=a, 1=a+1, fractional values are in between.

◆ InterpolateValue() [1/2]

float Filter::InterpolateValue ( SparseAnalogWaveform cap,
size_t  index,
float  frac_ticks 
)
static

Interpolates the actual value of a point between two samples.

Parameters
capWaveform to work with
indexStarting position
frac_ticksFractional position of the sample. Note that this is in timebase ticks, so if some samples are >1 tick apart it's possible for this value to be outside [0, 1].

◆ InterpolateValue() [2/2]

float Filter::InterpolateValue ( UniformAnalogWaveform cap,
size_t  index,
float  frac_ticks 
)
static

Interpolates the actual value of a point between two samples.

Parameters
capWaveform to work with
indexStarting position
frac_ticksFractional position of the sample. Note that this is in timebase ticks, so if some samples are >1 tick apart it's possible for this value to be outside [0, 1].

◆ LoadInputs()

void Filter::LoadInputs ( const YAML::Node &  node,
IDTable table 
)
overridevirtual

Reimplemented from FlowGraphNode.

◆ LoadParameters()

void Filter::LoadParameters ( const YAML::Node &  node,
IDTable table 
)
overridevirtual

Load configuration from a save file.

Reimplemented from FlowGraphNode.

Reimplemented in IBISDriverFilter, and ScalarStairstepFilter.

◆ MakeHistogram()

static std::vector< size_t > Filter::MakeHistogram ( SparseAnalogWaveform s,
UniformAnalogWaveform u,
float  low,
float  high,
size_t  bins 
)
inlinestatic

Makes a histogram from a waveform with the specified number of bins.

Any values outside the range are clamped (put in bin 0 or bins-1 as appropriate).

Parameters
lowLow endpoint of the histogram (volts)
highHigh endpoint of the histogram (volts)
binsNumber of histogram bins

◆ NeedsConfig()

bool Filter::NeedsConfig ( )
virtual

Determines if we need to display the configuration / setup dialog.

The default implementation returns true if we have more than one input or any parameters, and false otherwise.

Reimplemented in SParameterSourceFilter, and ImportFilter.

◆ Refresh() [1/2]

void Filter::Refresh ( )
overridevirtual

Evaluates a filter graph node.

This version does not support using Vulkan acceleration and should be considered deprecated. It will be removed in the indefinite future once all filters have been converted to the new API.

Reimplemented from FlowGraphNode.

Reimplemented in ImportFilter, ACCoupleFilter, ACRMSMeasurement, ADL5205Decoder, AreaMeasurement, AutocorrelationFilter, BandwidthMeasurement, BaseMeasurement, BurstWidthMeasurement, CANBitmaskFilter, CANDecoder, ClipFilter, ClockRecoveryFilter, CurrentShuntFilter, DCDMeasurement, DDJMeasurement, DDR1Decoder, DDR3Decoder, DeskewFilter, DownconvertFilter, DownsampleFilter, DPAuxChannelDecoder, DPhyDataDecoder, DPhyEscapeModeDecoder, DPhyHSClockRecoveryFilter, DPhySymbolDecoder, DramClockFilter, DramRefreshActivateMeasurement, DramRowColumnLatencyMeasurement, DSIFrameDecoder, DSIPacketDecoder, DutyCycleMeasurement, DVIDecoder, EmphasisFilter, EmphasisRemovalFilter, EnvelopeFilter, ESPIDecoder, Ethernet1000BaseXDecoder, Ethernet100BaseTXDecoder, Ethernet10BaseTDecoder, Ethernet10GBaseRDecoder, Ethernet64b66bDecoder, EthernetAutonegotiationDecoder, EthernetAutonegotiationPageDecoder, EthernetBaseXAutonegotiationDecoder, EthernetGMIIDecoder, EthernetRGMIIDecoder, EthernetRMIIDecoder, EthernetSGMIIDecoder, ExportFilter, EyeBitRateMeasurement, EyeHeightMeasurement, EyeJitterMeasurement, EyePeriodMeasurement, EyeWidthMeasurement, FallMeasurement, FrequencyMeasurement, FSKDecoder, FullWidthHalfMax, GlitchRemovalFilter, GroupDelayFilter, HistogramFilter, HorizontalBathtub, HyperRAMDecoder, I2CDecoder, I2CEepromDecoder, I2CRegisterDecoder, IBISDriverFilter, IBM8b10bDecoder, InvertFilter, IPv4Decoder, IQSquelchFilter, ISIMeasurement, J1939AnalogDecoder, J1939BitmaskDecoder, J1939PDUDecoder, J1939SourceMatchFilter, J1939TransportDecoder, JitterFilter, JtagDecoder, MagnitudeFilter, MDIODecoder, MemoryFilter, MilStd1553Decoder, MovingAverageFilter, MultiplyFilter, NCOFilter, NoiseFilter, OneWireDecoder, OvershootMeasurement, PAM4DemodulatorFilter, ParallelBus, PCIe128b130bDecoder, PCIeDataLinkDecoder, PCIeGen2LogicalDecoder, PCIeGen3LogicalDecoder, PCIeLinkTrainingDecoder, PCIeTransportDecoder, PeakHoldFilter, PeriodMeasurement, PhaseMeasurement, PhaseNonlinearityFilter, PkPkMeasurement, PRBSCheckerFilter, PRBSGeneratorFilter, PulseWidthMeasurement, QSGMIIDecoder, QSPIDecoder, QuadratureDecoder, ReferencePlaneExtensionFilter, RiseMeasurement, RjBUjFilter, RMSMeasurement, SawtoothGeneratorFilter, SDCmdDecoder, SDDataDecoder, SetupHoldMeasurement, SNRFilter, SParameterCascadeFilter, SParameterDeEmbedFilter, SPIDecoder, SPIFlashDecoder, SquelchFilter, StepGeneratorFilter, SWDDecoder, SWDMemAPDecoder, TachometerFilter, TappedDelayLineFilter, TCPDecoder, TDRFilter, ThresholdFilter, TIEMeasurement, TimeOutsideLevelMeasurement, TMDSDecoder, ToneGeneratorFilter, TopMeasurement, TouchstoneImportFilter, TwoPortShuntThroughFilter, UartClockRecoveryFilter, UARTDecoder, UndershootMeasurement, UnwrappedPhaseFilter, USB2ActivityDecoder, USB2PacketDecoder, USB2PCSDecoder, USB2PMADecoder, VectorFrequencyFilter, VectorPhaseFilter, VerticalBathtub, VICPDecoder, WaveformGenerationFilter, WindowedAutocorrelationFilter, and WindowFilter.

◆ Refresh() [2/2]

virtual void Filter::Refresh ( vk::raii::CommandBuffer &  cmdBuf,
std::shared_ptr< QueueHandle queue 
)
overridevirtual

Reimplemented from FlowGraphNode.

◆ Release()

void Filter::Release ( )
overridevirtual

Reimplemented from OscilloscopeChannel.

◆ SerializeConfiguration()

YAML::Node Filter::SerializeConfiguration ( IDTable table)
overridevirtual

Serializes this trigger's configuration to a YAML string.

Returns
YAML block with this trigger's configuration

Reimplemented from FlowGraphNode.

◆ SetDefaultName()

void Filter::SetDefaultName ( )
virtual

Sets the name of a filter based on its inputs.

This method may be overridden in derived classes for specialized applications, but there is no need to do so in typical filters.

Reimplemented in ImportFilter, CandumpImportFilter, EnhancedResolutionFilter, FIRFilter, HistogramFilter, InvertFilter, PcapngImportFilter, PRBSCheckerFilter, PRBSGeneratorFilter, RiseMeasurement, SetupHoldMeasurement, TDRFilter, and TouchstoneImportFilter.

◆ SetOffset()

void Filter::SetOffset ( float  offset,
size_t  stream 
)
overridevirtual

Reimplemented from OscilloscopeChannel.

◆ SetupEmptySparseAnalogOutputWaveform()

SparseAnalogWaveform * Filter::SetupEmptySparseAnalogOutputWaveform ( WaveformBase din,
size_t  stream,
bool  clear = true 
)
protected

Sets up an analog output waveform and copies basic metadata from the input.

A new output waveform is created if necessary, but when possible the existing one is reused.

Parameters
dinInput waveform
streamStream index
clearTrue to clear an existing waveform, false to leave it as-is
Returns
The ready-to-use output waveform

◆ SetupEmptySparseDigitalOutputWaveform()

SparseDigitalWaveform * Filter::SetupEmptySparseDigitalOutputWaveform ( WaveformBase din,
size_t  stream 
)
protected

Sets up an digital output waveform and copies basic metadata from the input.

A new output waveform is created if necessary, but when possible the existing one is reused.

Parameters
dinInput waveform
streamStream index
Returns
The ready-to-use output waveform

◆ SetupEmptyUniformAnalogOutputWaveform()

UniformAnalogWaveform * Filter::SetupEmptyUniformAnalogOutputWaveform ( WaveformBase din,
size_t  stream,
bool  clear = true 
)
protected

Sets up an analog output waveform and copies basic metadata from the input.

A new output waveform is created if necessary, but when possible the existing one is reused.

Parameters
dinInput waveform
streamStream index
clearTrue to clear an existing waveform, false to leave it as-is
Returns
The ready-to-use output waveform

◆ SetupEmptyUniformDigitalOutputWaveform()

UniformDigitalWaveform * Filter::SetupEmptyUniformDigitalOutputWaveform ( WaveformBase din,
size_t  stream 
)
protected

Sets up an digital output waveform and copies basic metadata from the input.

A new output waveform is created if necessary, but when possible the existing one is reused.

Parameters
dinInput waveform
streamStream index
Returns
The ready-to-use output waveform

◆ SetupSparseDigitalOutputWaveform()

SparseDigitalWaveform * Filter::SetupSparseDigitalOutputWaveform ( SparseWaveformBase din,
size_t  stream,
size_t  skipstart,
size_t  skipend 
)
protected

Sets up a digital output waveform and copies timebase configuration from the input.

A new output waveform is created if necessary, but when possible the existing one is reused. Timestamps are copied from the input to the output.

Parameters
dinInput waveform
streamStream index
skipstartNumber of input samples to discard from the beginning of the waveform
skipendNumber of input samples to discard from the end of the waveform
Returns
The ready-to-use output waveform

◆ SetupSparseOutputWaveform()

SparseAnalogWaveform * Filter::SetupSparseOutputWaveform ( SparseWaveformBase din,
size_t  stream,
size_t  skipstart,
size_t  skipend 
)
protected

Sets up an analog output waveform and copies timebase configuration from the input.

A new output waveform is created if necessary, but when possible the existing one is reused. Timestamps are copied from the input to the output.

Parameters
dinInput waveform
streamStream index
skipstartNumber of input samples to discard from the beginning of the waveform
skipendNumber of input samples to discard from the end of the waveform
Returns
The ready-to-use output waveform

◆ SetVoltageRange()

void Filter::SetVoltageRange ( float  range,
size_t  stream 
)
overridevirtual

Reimplemented from OscilloscopeChannel.

◆ ShouldPersistWaveform()

bool Filter::ShouldPersistWaveform ( )
overridevirtual

Determine whether the channel's waveform(s) should be persisted to a session file.

Reimplemented from InstrumentChannel.

Reimplemented in MemoryFilter, and TrendFilter.

◆ UseDefaultName()

void Filter::UseDefaultName ( bool  use)
inline

Specifies whether we're using an auto-generated name or not.

Parameters
useTrue to use the autogenerated name, false if we are customizing

Member Data Documentation

◆ m_instanceNum

unsigned int Filter::m_instanceNum
protected

Instance number (for auto naming)

Starts at 0 for the first filter of a given class type created, then increments

◆ samples [1/3]

else Filter::samples
Initial value:
{
AssertTypeIsDigitalWaveform(clock)

◆ samples [2/3]

WaveformBase SparseWaveform<T>& Filter::samples
Initial value:
{
data->PrepareForCpuAccess()

◆ samples [3/3]

R SparseAnalogWaveform& Filter::samples
Initial value:
{
AssertTypeIsAnalogWaveform(data)

◆ vmax

float float& Filter::vmax
Initial value:
{
AssertTypeIsAnalogWaveform(cap)

◆ voltage

size_t float Filter::voltage
Initial value:
{
AssertTypeIsAnalogWaveform(cap)

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