|
ngscopeclient v0.2.2
|
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, CTLEFilter, ClipFilter, ClockRecoveryFilter, ConstantFilter, ConstellationFilter, CouplerDeEmbedFilter, CurrentShuntFilter, DCDMeasurement, DDJMeasurement, DPhyDataDecoder, DPhyHSClockRecoveryFilter, DPhySymbolDecoder, DeEmbedFilter, DeskewFilter, DigitalConstantFilter, DigitalToAnalogFilter, DivideFilter, DownconvertFilter, DownsampleFilter, DramClockFilter, DramRefreshActivateMeasurement, DramRowColumnLatencyMeasurement, DutyCycleMeasurement, EmphasisFilter, EmphasisRemovalFilter, EnvelopeFilter, Ethernet100BaseT1LinkTrainingDecoder, Ethernet64b66bDecoder, EthernetAutonegotiationDecoder, EthernetClause73AutonegotiationDecoder, ExponentialMovingAverageFilter, ExportFilter, EyeBitRateMeasurement, EyeHeightMeasurement, EyeJitterMeasurement, EyePattern, EyePeriodMeasurement, EyeWidthMeasurement, FIRFilter, 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, PointSampleFilter, 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.

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... | |
| enum | FIRFilterType { FILTER_TYPE_LOWPASS , FILTER_TYPE_HIGHPASS , FILTER_TYPE_BANDPASS , FILTER_TYPE_NOTCH } |
| 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 class | ExecutionCapabilities { None = 0 , CommandBufferAppend = 1 , CommandBufferTailCall = 2 , VulkanOnly = 4 , DynamicShader = 8 } |
| typedef std::map< std::string, FilterParameter > | ParameterMapType |
| 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. | |
| virtual void | ClearStreams () override |
| Clears out any existing streams. | |
| 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. | |
| void | AddProtocolStream (const std::string &name) |
| Helper method for constructors that adds a new STREAM_TYPE_PROTOCOL output stream. | |
| void | AddDigitalStream (const std::string &name) |
| Helper method for constructors that adds a new STREAM_TYPE_DIGITAL output stream. | |
| virtual void | SetDefaultName () |
| Sets the name of a filter based on its inputs. | |
| void | UseDefaultName (bool use) |
| Specifies whether we're using an auto-generated name or not. | |
| bool | IsUsingDefaultName () |
| Return true if we're using an autogenerated name, false if customized. | |
| virtual void | AddRef () override |
| virtual void | Release () override |
| Category | GetCategory () |
| Returns the category for displaying this filter in the browser. | |
| 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). | |
| 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. | |
| virtual void | LoadParameters (const YAML::Node &node, IDTable &table) override |
| Load configuration from a save file. | |
| 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. | |
| template<class T > | |
| __attribute__ ((noinline)) static float InterpolateTime(T *cap | |
| Interpolates the actual time of a threshold crossing between two samples. | |
| 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 void GetMinMaxVoltage(vk | |
| Gets the min and max voltage of a waveform on the GPU. | |
| 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 void GetBaseAndTopVoltage(vk | |
| Gets the most probable "0" and "1" level for a digital 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. | |
| template<class T > | |
| __attribute__ ((noinline)) static void MakeHistogram(vk | |
| Makes a histogram from a waveform with the specified number of bins. | |
| template<class T > | |
| __attribute__ ((noinline)) static std | |
| Makes a histogram from a waveform with the specified number of bins. | |
| template<class T , class R , class S > | |
| __attribute__ ((noinline)) static void SampleOnAnyEdges(T *data | |
| Samples a waveform on all edges of a clock. | |
| class S | __attribute__ ((noinline)) static void SampleOnRisingEdges(T *data |
| AssertSampleTypesAreSame (data, &samples) | |
| samples | clear () |
| samples | SetGpuAccessHint (AcceleratorBuffer< S >::HINT_NEVER) |
| samples | Reserve (1 *1024 *1024) |
| 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. | |
| 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. | |
| AssertSampleTypesAreSame (data, &samples) | |
| samples | clear () |
| samples | SetGpuAccessHint (AcceleratorBuffer< S >::HINT_NEVER) |
| samples | Reserve (1 *1024 *1024) |
| 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. | |
| AssertTypeIsDigitalWaveform (clock) | |
| samples | clear () |
| samples | SetGpuAccessHint (AcceleratorBuffer< float >::HINT_NEVER) |
| samples | Reserve (1 *1024 *1024) |
| 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. | |
| 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) | |
| Oscilloscope * | GetScope () |
| size_t | GetRefCount () |
| virtual void | SetDisplayName (std::string name) override |
| Sets the human-readable nickname for this channel, as displayed in the GUI. | |
| virtual std::string | GetDisplayName () override |
| Gets the human-readable nickname for this channel, as displayed in the GUI. | |
| bool | IsEnabled () |
| void | Enable () |
| void | Disable () |
| 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 bool | IsInverted (size_t stream) |
| virtual bool | IsHighRateOffsetCapable () |
| Check if this channel is able to handle high rate (e.g. every mouse movement) offset changes. | |
| 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. | |
| virtual DownloadState | GetDownloadState () override |
| Returns the current download state of this channel. | |
| virtual float | GetDownloadProgress () override |
| returns the current completion of the download (on the range [0, 1]), if not DOWNLOAD_UNKNOWN | |
| virtual double | GetDownloadStartTime () override |
| returns the start time of a download, if we are DOWNLOAD_IN_PROGRESS; undefined, otherwise | |
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) | |
| const std::string & | GetHwname () const |
| Gets the hardware name of the channel (m_hwname) | |
| size_t | GetIndex () const |
| Gets the (zero based) index of the channel. | |
| Instrument * | GetInstrument () const |
| 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. | |
| virtual PhysicalConnector | GetPhysicalConnector () |
| void | SetData (WaveformBase *pNew, size_t stream) |
| Sets the waveform data for a given stream, replacing any previous waveform. | |
| 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. | |
| virtual void | SetYAxisUnits (const Unit &rhs, size_t stream) |
| Changes the X axis unit for a specified stream. | |
| 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) | |
| WaveformBase * | GetData (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. | |
| uint64_t | GetDigitalScalarValue (size_t stream) |
| Gets the value of a scalar data stream. | |
| uint64_t | GetDigitalWidth (size_t stream) |
| Gets the width of a digital data stream. | |
| void | SetDigitalWidth (size_t stream, uint64_t width) |
| Set the width of a digital data stream. | |
| void | SetDigitalScalarValue (size_t stream, uint64_t value) |
| Sets the value of a scalar data stream. | |
| WaveformBase * | Detach (size_t stream) |
| Detach the capture data from this channel. | |
| virtual void | Refresh (vk::raii::CommandBuffer &cmdBuf, std::shared_ptr< QueueHandle > queue) override |
Public Member Functions inherited from FlowGraphNode | |
| void | DetachInputs () |
| Disconnects all inputs from the node without releasing them. | |
| size_t | GetInputCount () |
| Get the number of input ports. | |
| 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. | |
| void | SetInput (const std::string &name, StreamDescriptor stream, bool force=false) |
| virtual bool | ValidateChannel (size_t i, StreamDescriptor stream) |
| Check if a stream is allowed to be connected to the given input. | |
| bool | HasInput (StreamDescriptor desc) |
| Checks if the given stream is connected to at least one of our inputs. | |
| StreamDescriptor | GetInput (size_t i) |
| Gets the descriptor for one of our inputs. | |
| std::shared_ptr< InputConstraint > | GetInputConstraints (size_t i) |
| Get the constraints on one of our inputs. | |
| FilterParameter & | GetParameter (std::string s) |
| bool | HasParameter (std::string s) |
| Checks if we have a parameter with a given name. | |
| 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. | |
| bool | IsDownstreamOf (std::set< FlowGraphNode * > nodes) |
| Determines if this node is downstream of any of the specified other nodes. | |
| virtual uint32_t | GetExecutionCapabilitiesMask () |
| Returns a bitmask of ExecutionCapabilities fields. | |
| bool | HasMessages () const |
| Checks if this graph has any messages. | |
| const std::vector< FlowGraphNodeMessage > & | GetMessages () const |
| Walking through any messages. | |
| const FlowGraphNodeMessage * | GetMostSevereMessage () const |
| void | AddSink (size_t stream, FlowGraphNode *node) |
| void | RemoveSink (size_t stream, FlowGraphNode *node) |
| const std::set< FlowGraphNode * > & | GetSinks (size_t stream) |
| sigc::signal< void()> | signal_parametersChanged () |
| sigc::signal< void()> | signal_inputsChanged () |
Static Public Member Functions | |
| static const 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. | |
| 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. | |
| 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. | |
| static void | AdvanceToTimestamp (UniformWaveformBase *wfm, size_t &i, size_t len, int64_t timestamp) |
| Advance the waveform to a given timestamp. | |
| 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. | |
| 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. | |
| static void | AdvanceToTimestampScaled (SparseWaveformBase *wfm, size_t &i, size_t len, int64_t timestamp) |
| Advance the waveform to a given timestamp. | |
| static void | AdvanceToTimestampScaled (UniformWaveformBase *wfm, size_t &i, size_t len, int64_t timestamp) |
| Advance the waveform to a given timestamp. | |
| 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. | |
| static float | InterpolateTime (SparseAnalogWaveform *p, SparseAnalogWaveform *n, size_t a, float voltage) |
| Interpolates the actual time of a differential threshold crossing between two samples. | |
| 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. | |
| static float | InterpolateValue (UniformAnalogWaveform *cap, size_t index, float frac_ticks) |
| Interpolates the actual value of a point between two samples. | |
| 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 void | GetBaseAndTopVoltage (vk::raii::CommandBuffer &cmdBuf, std::shared_ptr< QueueHandle > queue, ComputePipeline &minmaxPipeline, std::shared_ptr< ComputePipeline > &histogramPipeline, AcceleratorBuffer< float > &scratchMin, AcceleratorBuffer< float > &scratchMax, AcceleratorBuffer< uint64_t > &hist, SparseAnalogWaveform *swfm, UniformAnalogWaveform *uwfm, float &base, float &top) |
| Gets the base and top voltage of a waveform which may be sparse or uniform. | |
| 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. | |
| 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) |
| static void | FindZeroCrossings (UniformAnalogWaveform *data, float threshold, std::vector< int64_t > &edges) |
| 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 | CalculateFIRCoefficients (float fa, float fb, float stopbandAtten, FIRFilterType type, AcceleratorBuffer< float > &coefficients) |
| Calculates FIR coefficients. | |
| static float | Bessel (float x) |
| 0th order Bessel function | |
| static void | DoAddDecoderClass (const std::string &name, CreateProcType proc) |
| static void | EnumProtocols (std::vector< std::string > &names) |
| static Filter * | CreateFilter (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 |
| R SparseWaveform< S > bool | cpuOnly |
| class S R * | clock |
| class S R SparseWaveform< S > & | samples |
| AssertTypeIsSparseWaveform & | samples |
| size_t | len = clock->size() |
| size_t | dlen = data->size() |
| size_t | ndata = 0 |
| WaveformBase * | clock |
| 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 |
| R SparseAnalogWaveform & | samples |
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. | |
| UniformAnalogWaveform * | SetupEmptyUniformAnalogOutputWaveform (WaveformBase *din, size_t stream, bool clear=true) |
| Sets up an analog output waveform and copies basic metadata from the input. | |
| SparseAnalogWaveform * | SetupEmptySparseAnalogOutputWaveform (WaveformBase *din, size_t stream, bool clear=true) |
| Sets up an analog output waveform and copies basic metadata from the input. | |
| UniformDigitalWaveform * | SetupEmptyUniformDigitalOutputWaveform (WaveformBase *din, size_t stream) |
| Sets up an digital output waveform and copies basic metadata from the input. | |
| SparseDigitalWaveform * | SetupEmptySparseDigitalOutputWaveform (WaveformBase *din, size_t stream) |
| Sets up an digital output waveform and copies basic metadata from the input. | |
| SparseAnalogWaveform * | SetupSparseOutputWaveform (SparseWaveformBase *din, size_t stream, size_t skipstart, size_t skipend) |
| Sets up an analog output waveform and copies timebase configuration from the input. | |
| SparseDigitalWaveform * | SetupSparseDigitalOutputWaveform (SparseWaveformBase *din, size_t stream, size_t skipstart, size_t skipend) |
| Sets up a digital output waveform and copies timebase configuration from the input. | |
| template<class T > | |
| T * | SetupEmptyWaveform (WaveformBase *din, size_t stream, bool clear=true) |
| Sets up an empty output waveform and copies basic metadata from the input. | |
Protected Member Functions inherited from OscilloscopeChannel | |
| void | SharedCtorInit (Unit unit) |
Protected Member Functions inherited from FlowGraphNode | |
| virtual void | OnInputChanged (size_t i) |
| Called when a new input is connected to the node. | |
| WaveformBase * | GetInputWaveform (size_t i) |
| Gets the waveform attached to the specified input. | |
| SparseAnalogWaveform * | GetSparseAnalogInputWaveform (size_t i) |
| Gets the analog waveform attached to the specified input. | |
| UniformAnalogWaveform * | GetUniformAnalogInputWaveform (size_t i) |
| Gets the analog waveform attached to the specified input. | |
| SparseDigitalWaveform * | GetSparseDigitalInputWaveform (size_t i) |
| Gets the digital waveform attached to the specified input. | |
| UniformDigitalWaveform * | GetUniformDigitalInputWaveform (size_t i) |
| Gets the digital waveform attached to the specified input. | |
| virtual void | CreateInput (const std::string &name) |
| Gets the digital bus waveform attached to the specified input. | |
| template<class T , class... Args> | |
| void | CreateInput (const std::string &name, Args &&... args) |
| std::string | GetInputDisplayName (size_t i) |
| Gets the display name for one of our inputs. | |
| void | ClearMessages () |
| Remove any messages left over from the last graph refresh. | |
| void | AddMessage (const FlowGraphNodeMessage &msg) |
| Attach a new message to the node. | |
| void | AddMessage (Severity severity, const std::string &title, const std::string &message) |
| Attach a new message to the node. | |
| void | AddErrorMessage (const std::string &err) |
| Add a new error message. | |
| void | AddErrorMessage (const std::string &title, const std::string &err) |
| Add a new error message with a title. | |
Static Protected Member Functions | |
| static void | FillDurationsGeneric (SparseWaveformBase &wfm) |
| Computes durations of samples based on offsets, assuming the capture is gapless. | |
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) | |
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 | |
| Instrument * | m_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. | |
| std::string | m_displayname |
| Display name (user defined, defaults to m_hwname). | |
| 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< Stream > | m_streams |
| Configuration data for each of our output streams. | |
Protected Attributes inherited from FlowGraphNode | |
| std::vector< std::shared_ptr< InputDescriptor > > | m_inputs |
| Input ports. | |
| std::vector< std::set< FlowGraphNode * > > | m_sinks |
| The nodes (if any) that each of our streams drives. | |
| 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. | |
| std::vector< FlowGraphNodeMessage > | m_messages |
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 |
Abstract base class for all filter graph blocks which are not physical instrument channels.
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
Interpolates the actual time of a threshold crossing between two samples.
Simple linear interpolation for now (TODO sinc)
TODO: validate that this works correctly for sparsely sampled waveforms?
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).
| low | Low endpoint of the histogram (volts) |
| high | High endpoint of the histogram (volts) |
| bins | Number of histogram bins |
Makes a histogram from a waveform with the specified number of bins.
Any values outside the range are discarded.
| low | Low endpoint of the histogram (volts) |
| high | High endpoint of the histogram (volts) |
| bins | Number of histogram bins |
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).
Requires GPU side int64 support
| low | Low endpoint of the histogram (volts) |
| high | High endpoint of the histogram (volts) |
| bins | Number of histogram bins |
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.
| data | The data signal to sample. Can be be sparse or uniform of any type. |
| clock | The clock signal to use. Must be sparse or uniform digital. |
| samples | Output waveform. Must be sparse and same data type as data. |
| cpuOnly | true to mark the output waveform as a CPU-side temporary buffer that will never be used on the GPU |
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.
| data | The data signal to sample. Can be be sparse or uniform of any type. |
| clock | The clock signal to use. Must be sparse or uniform digital. |
| samples | Output waveform. Must be sparse and same data type as data. |
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.
| data | The data signal to sample |
| clock | The clock signal to use |
| samples | Output waveform |
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.
| data | The data signal to sample. Can be be sparse or uniform of any type. |
| clock | The clock signal to use. Must be sparse or uniform digital. |
| samples | Output waveform. Must be sparse and same data type as data. |
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.
| data | The data signal to sample. Can be be sparse or uniform of any type. |
| clock | The clock signal to use. Must be sparse or uniform digital. |
| samples | Output waveform. Must be sparse and same data type as data. |
Helper method for constructors that adds a new STREAM_TYPE_DIGITAL output stream.
| name | Name of the stream |
Helper method for constructors that adds a new STREAM_TYPE_PROTOCOL output stream.
| name | Name of the stream |
|
overridevirtual |
Reimplemented from OscilloscopeChannel.
|
overridevirtual |
Adds a new data stream to the channel.
Reimplemented from InstrumentChannel.
|
static |
Advance the waveform to a given timestamp.
Works in timescale units
|
static |
Advance the waveform to a given timestamp.
Works in timescale units
|
static |
Advance the waveform to a given timestamp.
Works in native X axis units
|
static |
Advance the waveform to a given timestamp.
Works in native X axis units
|
static |
Calculates FIR coefficients.
Based on public domain code at https://www.arc.id.au/FilterDesign.html
Cutoff frequencies are specified in fractions of the Nyquist limit (Fsample/2).
| fa | Left side passband (0 for LPF) |
| fb | Right side passband (1 for HPF) |
| stopbandAtten | Stop-band attenuation, in dB |
| type | Type of filter |
| coefficients | Output coefficients |
|
overridevirtual |
Clears out any existing streams.
Reimplemented from InstrumentChannel.
|
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.
|
staticprotected |
Computes durations of samples based on offsets, assuming the capture is gapless.
The last sample has a duration of 1 unit.
|
inlinestatic |
Gets the base and top voltage of a waveform which may be sparse or uniform.
| cmdBuf | Vulkan command buffer (must be idle and not already recording) |
| queue | Vulkan queue |
| minmaxPipeline | Compute pipeline for MinMax shader |
| histogramPipeline | Compute pipeline for Histogram shader (optional, requires shaderInt64 and shaderAtomicInt64) |
| scratchMin | Scratch buffer for minimum calculation |
| scratchMax | Scratch buffer for maximum calculation |
| hist | Output buffer for histogram calculation |
| swfm | Sparse input waveform (either this or uwfm must be non-null) |
| uwfm | Uniform input waveform (either this or uwfm must be non-null) |
| base | Output base value |
| top | Output top value |
|
static |
Gets the timestamp of the next event (if any) on a waveform.
Works in timescale units
|
static |
Gets the timestamp of the next event (if any) on a waveform.
Works in timescale units
|
static |
Gets the timestamp of the next event (if any) on a waveform.
Works in native X axis units
|
static |
Gets the timestamp of the next event (if any) on a waveform.
Works in native X axis units
Reimplemented from OscilloscopeChannel.
Reimplemented from OscilloscopeChannel.
|
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.
|
static |
Interpolates the actual time of a differential threshold crossing between two samples.
Simple linear interpolation for now (TODO sinc)
|
static |
Interpolates the actual time of a differential threshold crossing between two samples.
Simple linear interpolation for now (TODO sinc)
|
static |
Interpolates the actual value of a point between two samples.
| cap | Waveform to work with |
| index | Starting position |
| frac_ticks | Fractional 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]. |
|
static |
Interpolates the actual value of a point between two samples.
| cap | Waveform to work with |
| index | Starting position |
| frac_ticks | Fractional 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]. |
Reimplemented from FlowGraphNode.
Load configuration from a save file.
Reimplemented from FlowGraphNode.
Reimplemented in PausableFilter, IBISDriverFilter, and ScalarStairstepFilter.
|
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).
| low | Low endpoint of the histogram (volts) |
| high | High endpoint of the histogram (volts) |
| bins | Number of histogram bins |
|
overridevirtual |
Reimplemented from OscilloscopeChannel.
|
overridevirtual |
Serializes this trigger's configuration to a YAML string.
Reimplemented from FlowGraphNode.
|
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.
Reimplemented from OscilloscopeChannel.
|
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.
| din | Input waveform |
| stream | Stream index |
| clear | True to clear an existing waveform, false to leave it as-is |
|
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.
| din | Input waveform |
| stream | Stream index |
|
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.
| din | Input waveform |
| stream | Stream index |
| clear | True to clear an existing waveform, false to leave it as-is |
|
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.
| din | Input waveform |
| stream | Stream index |
|
inlineprotected |
Sets up an empty 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.
| din | Input waveform |
| stream | Stream index |
| clear | True to clear an existing waveform, false to leave it as-is |
|
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.
| din | Input waveform |
| stream | Stream index |
| skipstart | Number of input samples to discard from the beginning of the waveform |
| skipend | Number of input samples to discard from the end of the waveform |
|
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.
| din | Input waveform |
| stream | Stream index |
| skipstart | Number of input samples to discard from the beginning of the waveform |
| skipend | Number of input samples to discard from the end of the waveform |
Reimplemented from OscilloscopeChannel.
|
overridevirtual |
Determine whether the channel's waveform(s) should be persisted to a session file.
Reimplemented from InstrumentChannel.
Reimplemented in MemoryFilter, and TrendFilter.
Specifies whether we're using an auto-generated name or not.
| use | True to use the autogenerated name, false if we are customizing |
Instance number (for auto naming)
Starts at 0 for the first filter of a given class type created, then increments
| else Filter::samples |
| class S R SparseWaveform<S>& Filter::samples |
| WaveformBase SparseWaveform<T>& Filter::samples |
| R SparseAnalogWaveform& Filter::samples |