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

Base class for all Waveform specializations. More...

#include <Waveform.h>

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

Public Types

enum  WaveformFlags_t { WAVEFORM_CLIPPING = 1 }
 Flags which may apply to m_flags. More...
 

Public Member Functions

 WaveformBase ()
 Creates an empty waveform.
 
 WaveformBase (const WaveformBase &rhs)
 Creates a waveform, copying metadata from another.
 
virtual void Rename (const std::string &name="")=0
 Assings a human readable name to the waveform for debug purposes. More...
 
virtual void clear ()=0
 Remove all samples from this waveform. More...
 
virtual void Resize (size_t size)=0
 Reallocates buffers so the waveform contains the specified number of samples. More...
 
virtual size_t size () const =0
 Returns the number of samples in this waveform. More...
 
virtual bool empty ()
 Returns true if this waveform contains no samples, false otherwise.
 
virtual std::string GetText (size_t i)
 Returns the text representation of a given protocol sample. More...
 
virtual std::string GetColor (size_t)
 Returns the displayed color (in HTML #rrggbb or #rrggbbaa notation) of a given protocol sample. More...
 
virtual uint32_t GetColorCached (size_t i)
 Returns the packed RGBA32 color of a given protocol sample calculated by CacheColors() More...
 
virtual void PrepareForCpuAccess ()=0
 Indicates that this waveform is going to be used by the CPU in the near future. More...
 
virtual void PrepareForGpuAccess ()=0
 Indicates that this waveform is going to be used by the CPU in the near future. More...
 
virtual void MarkSamplesModifiedFromCpu ()=0
 Indicates that this waveform's sample data has been modified on the CPU and the GPU-side copy is no longer coherent. More...
 
virtual void MarkSamplesModifiedFromGpu ()=0
 Indicates that this waveform's sample data has been modified on the GPU and the CPU-side copy is no longer coherent. More...
 
virtual void MarkModifiedFromCpu ()=0
 Indicates that this waveform's sample data and timestamps have been modified on the CPU and the GPU-side copy is no longer coherent. More...
 
virtual void MarkModifiedFromGpu ()=0
 Indicates that this waveform's sample data and timestamps have been modified on the GPU and the CPU-side copy is no longer coherent. More...
 
virtual void CacheColors ()
 Updates the cache of packed colors to avoid string parsing every frame.
 
virtual void FreeGpuMemory ()=0
 Free GPU-side memory if we are short on VRAM or do not anticipate using this waveform for a while. More...
 
virtual bool HasGpuBuffer ()=0
 Returns true if we have at least one buffer resident on the GPU. More...
 

Public Attributes

int64_t m_timescale
 The time scale, in X axis units (usually femtoseconds) per timestep, used by this channel. More...
 
time_t m_startTimestamp
 Start time of the acquisition, integer part.
 
int64_t m_startFemtoseconds
 Start time of the acquisition, fractional part (femtoseconds since since the UTC second)
 
int64_t m_triggerPhase
 Offset, in X axis units (usually femtoseconds), from the trigger to the sampling clock. More...
 
uint8_t m_flags
 Flags that apply to this waveform. Bitfield containing zero or more WaveformFlags_t values.
 
uint64_t m_revision
 Revision number. More...
 

Protected Attributes

AcceleratorBuffer< uint32_t > m_protocolColors
 Cache of packed RGBA32 data with colors for each protocol decode event. Empty for non-protocol waveforms.
 
uint64_t m_cachedColorRevision
 Revision we last cached colors of.
 

Detailed Description

Base class for all Waveform specializations.

One waveform contains a time-series of sample objects as well as scale information etc. The samples may or may not be at regular intervals depending on whether the source instrument uses RLE compression, whether the data is derived from a math/filter block rather than physical measurements, etc.

The WaveformBase contains all metadata about the waveform, but the actual samples (and timestamps, if sparse) are stored in a derived class member.

Member Enumeration Documentation

◆ WaveformFlags_t

Flags which may apply to m_flags.

Enumerator
WAVEFORM_CLIPPING 

Waveform amplitude exceeded ADC range, values were clipped.

Member Function Documentation

◆ clear()

virtual void WaveformBase::clear ( )
pure virtual

Remove all samples from this waveform.

Implemented in DensityFunctionWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, and SparseWaveform< VICPSymbol >.

◆ FreeGpuMemory()

virtual void WaveformBase::FreeGpuMemory ( )
pure virtual

Free GPU-side memory if we are short on VRAM or do not anticipate using this waveform for a while.

Implemented in ConstellationWaveform, EyeWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, SparseWaveform< VICPSymbol >, SpectrogramWaveform, and WaterfallWaveform.

◆ GetColor()

virtual std::string WaveformBase::GetColor ( size_t  )
inlinevirtual

◆ GetColorCached()

virtual uint32_t WaveformBase::GetColorCached ( size_t  i)
inlinevirtual

Returns the packed RGBA32 color of a given protocol sample calculated by CacheColors()

Not used for non-protocol waveforms.

Parameters
iSample index

◆ GetText()

virtual std::string WaveformBase::GetText ( size_t  i)
inlinevirtual

◆ HasGpuBuffer()

virtual bool WaveformBase::HasGpuBuffer ( )
pure virtual

Returns true if we have at least one buffer resident on the GPU.

Implemented in ConstellationWaveform, EyeWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, SparseWaveform< VICPSymbol >, SpectrogramWaveform, and WaterfallWaveform.

◆ MarkModifiedFromCpu()

virtual void WaveformBase::MarkModifiedFromCpu ( )
pure virtual

Indicates that this waveform's sample data and timestamps have been modified on the CPU and the GPU-side copy is no longer coherent.

Implemented in DensityFunctionWaveform, SparseWaveformBase, and UniformWaveform< S >.

◆ MarkModifiedFromGpu()

virtual void WaveformBase::MarkModifiedFromGpu ( )
pure virtual

Indicates that this waveform's sample data and timestamps have been modified on the GPU and the CPU-side copy is no longer coherent.

Implemented in DensityFunctionWaveform, SparseWaveformBase, and UniformWaveform< S >.

◆ MarkSamplesModifiedFromCpu()

virtual void WaveformBase::MarkSamplesModifiedFromCpu ( )
pure virtual

Indicates that this waveform's sample data has been modified on the CPU and the GPU-side copy is no longer coherent.

Implemented in DensityFunctionWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, and SparseWaveform< VICPSymbol >.

◆ MarkSamplesModifiedFromGpu()

virtual void WaveformBase::MarkSamplesModifiedFromGpu ( )
pure virtual

Indicates that this waveform's sample data has been modified on the GPU and the CPU-side copy is no longer coherent.

Implemented in DensityFunctionWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, and SparseWaveform< VICPSymbol >.

◆ PrepareForCpuAccess()

virtual void WaveformBase::PrepareForCpuAccess ( )
pure virtual

Indicates that this waveform is going to be used by the CPU in the near future.

This ensures the CPU-side copy of the data is coherent with the most recently modified (CPU or GPU side) copy.

Implemented in DensityFunctionWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, and SparseWaveform< VICPSymbol >.

◆ PrepareForGpuAccess()

virtual void WaveformBase::PrepareForGpuAccess ( )
pure virtual

Indicates that this waveform is going to be used by the CPU in the near future.

This ensures the GPU-side copy of the data is coherent with the most recently modified (CPU or GPU side) copy.

Implemented in DensityFunctionWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, and SparseWaveform< VICPSymbol >.

◆ Rename()

virtual void WaveformBase::Rename ( const std::string &  name = "")
pure virtual

Assings a human readable name to the waveform for debug purposes.

This value may be printed in internal log messages, by the Vulkan validation layers, displayed in frame debuggers, etc.

Implemented in DensityFunctionWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, and SparseWaveform< VICPSymbol >.

◆ Resize()

virtual void WaveformBase::Resize ( size_t  size)
pure virtual

Reallocates buffers so the waveform contains the specified number of samples.

If the waveform shrinks, excess memory is freed. If the waveform grows, new samples are uninitialized.

Parameters
sizeNew size of the waveform buffer, in samples

Implemented in UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, SparseWaveform< VICPSymbol >, and DensityFunctionWaveform.

◆ size()

virtual size_t WaveformBase::size ( ) const
pure virtual

Returns the number of samples in this waveform.

Implemented in DensityFunctionWaveform, UniformWaveform< S >, SparseWaveform< S >, SparseWaveform< ADL5205Symbol >, SparseWaveform< char >, SparseWaveform< CANSymbol >, SparseWaveform< DPAuxSymbol >, SparseWaveform< DPhyDataSymbol >, SparseWaveform< DPhyEscapeModeSymbol >, SparseWaveform< DPhySymbol >, SparseWaveform< DSIFrameSymbol >, SparseWaveform< DSISymbol >, SparseWaveform< DVISymbol >, SparseWaveform< ESPISymbol >, SparseWaveform< Ethernet100BaseT1LinkTrainingSymbol >, SparseWaveform< Ethernet64b66bSymbol >, SparseWaveform< EthernetAutonegotiationPageSample >, SparseWaveform< uint16_t >, SparseWaveform< EthernetBaseXAutonegotiationSample >, SparseWaveform< EthernetFrameSegment >, SparseWaveform< HyperRAMSymbol >, SparseWaveform< I2CEepromSymbol >, SparseWaveform< I2CRegisterSymbol >, SparseWaveform< I2CSymbol >, SparseWaveform< IBM8b10bSymbol >, SparseWaveform< IPv4Symbol >, SparseWaveform< J1939PDUSymbol >, SparseWaveform< JtagSymbol >, SparseWaveform< MDIOSymbol >, SparseWaveform< MilStd1553Symbol >, SparseWaveform< OneWireSymbol >, SparseWaveform< PCIe128b130bSymbol >, SparseWaveform< PCIeDataLinkSymbol >, SparseWaveform< PCIeLTSSMSymbol >, SparseWaveform< PCIeLinkTrainingSymbol >, SparseWaveform< PCIeLogicalSymbol >, SparseWaveform< PCIeTransportSymbol >, SparseWaveform< SDCmdSymbol >, SparseWaveform< SDDataSymbol >, SparseWaveform< SDRAMSymbol >, SparseWaveform< SPIFlashSymbol >, SparseWaveform< SPISymbol >, SparseWaveform< SWDMemAPSymbol >, SparseWaveform< SWDSymbol >, SparseWaveform< TCPSymbol >, SparseWaveform< TMDSSymbol >, SparseWaveform< USB2PCSSymbol >, SparseWaveform< USB2PMASymbol >, SparseWaveform< USB2PacketSymbol >, and SparseWaveform< VICPSymbol >.

Member Data Documentation

◆ m_revision

uint64_t WaveformBase::m_revision

Revision number.

This is a monotonically increasing counter that indicates waveform data has changed. Filters may choose to cache pre-processed versions of input data (for example, resampled versions of raw input) as long as the pointer and revision number have not changed.

◆ m_timescale

int64_t WaveformBase::m_timescale

The time scale, in X axis units (usually femtoseconds) per timestep, used by this channel.

This is used as a scaling factor for individual sample time values as well as to compute the maximum zoom value for the time axis.

◆ m_triggerPhase

int64_t WaveformBase::m_triggerPhase

Offset, in X axis units (usually femtoseconds), from the trigger to the sampling clock.

This is most commonly the output of a time-to-digital converter or trigger interpolator and will thus be in the range [0, 1] samples, but this should NOT be assumed to be the case in all waveforms.

LeCroy oscilloscopes, for example, can have negative trigger phases of 150ns or more on digital channels since the digital waveform can start significantly before the analog waveform. Secondary scopes of a multi-scope trigger group may have very large positive or negative trigger phases as a result of trigger path delay calibration or intentional time-shifting of one scope's sampling window relative to that of another.


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