├── .editorconfig ├── .gitmodules ├── .vscode └── settings.json ├── LICENSE ├── scopeexports ├── CSVExportWizard.cpp ├── CSVExportWizard.h ├── ExportWizard.cpp ├── ExportWizard.h ├── TouchstoneExportWizard.cpp ├── TouchstoneExportWizard.h ├── VCDExportWizard.cpp ├── VCDExportWizard.h ├── scopeexports.cpp └── scopeexports.h ├── scopehal ├── .clang-format ├── AcceleratorBuffer.h ├── ActionProvider.cpp ├── ActionProvider.h ├── AgilentOscilloscope.cpp ├── AgilentOscilloscope.h ├── AlientekPowerSupply.cpp ├── AlientekPowerSupply.h ├── AlignedAllocator.h ├── AntikernelLabsOscilloscope.cpp ├── AntikernelLabsOscilloscope.h ├── AntikernelLabsTriggerCrossbar.cpp ├── AntikernelLabsTriggerCrossbar.h ├── AntikernelLogicAnalyzer.cpp ├── AntikernelLogicAnalyzer.h ├── AseqSpectrometer.cpp ├── AseqSpectrometer.h ├── BERT.cpp ├── BERT.h ├── BERTInputChannel.cpp ├── BERTInputChannel.h ├── BERTInputChannelWithDataCapture.cpp ├── BERTInputChannelWithDataCapture.h ├── BERTOutputChannel.cpp ├── BERTOutputChannel.h ├── Bijection.h ├── BinaryDriver.cpp ├── BinaryDriver.h ├── BufferedSwitchMatrixIOChannel.cpp ├── BufferedSwitchMatrixIOChannel.h ├── BufferedSwitchMatrixInputChannel.cpp ├── BufferedSwitchMatrixInputChannel.h ├── BufferedSwitchMatrixOutputChannel.cpp ├── BufferedSwitchMatrixOutputChannel.h ├── CANChannel.cpp ├── CANChannel.h ├── CDR8B10BTrigger.cpp ├── CDR8B10BTrigger.h ├── CDRNRZPatternTrigger.cpp ├── CDRNRZPatternTrigger.h ├── CDRTrigger.cpp ├── CDRTrigger.h ├── CMakeLists.txt ├── CSVStreamInstrument.cpp ├── CSVStreamInstrument.h ├── CommandLineDriver.cpp ├── CommandLineDriver.h ├── ComplexChannel.h ├── ComputePipeline.cpp ├── ComputePipeline.h ├── ConfigWarningList.h ├── ConstellationWaveform.cpp ├── ConstellationWaveform.h ├── CopperMountainVNA.cpp ├── CopperMountainVNA.h ├── DCAEdgeTrigger.cpp ├── DCAEdgeTrigger.h ├── DSLabsOscilloscope.cpp ├── DSLabsOscilloscope.h ├── DemoOscilloscope.cpp ├── DemoOscilloscope.h ├── DemoPowerSupply.cpp ├── DemoPowerSupply.h ├── DensityFunctionWaveform.cpp ├── DensityFunctionWaveform.h ├── DigilentOscilloscope.cpp ├── DigilentOscilloscope.h ├── DigitalIOChannel.cpp ├── DigitalIOChannel.h ├── DigitalInputChannel.cpp ├── DigitalInputChannel.h ├── DigitalOutputChannel.cpp ├── DigitalOutputChannel.h ├── DropoutTrigger.cpp ├── DropoutTrigger.h ├── EdgeTrigger.cpp ├── EdgeTrigger.h ├── EyeMask.cpp ├── EyeMask.h ├── EyeWaveform.cpp ├── EyeWaveform.h ├── FileSystem.cpp ├── FileSystem.h ├── Filter.cpp ├── Filter.h ├── FilterGraphExecutor.cpp ├── FilterGraphExecutor.h ├── FilterParameter.cpp ├── FilterParameter.h ├── FlowGraphNode.cpp ├── FlowGraphNode.h ├── FlowGraphNode_inlines.h ├── FunctionGenerator.cpp ├── FunctionGenerator.h ├── FunctionGeneratorChannel.cpp ├── FunctionGeneratorChannel.h ├── GWInstekGPDX303SPowerSupply.cpp ├── GWInstekGPDX303SPowerSupply.h ├── GlitchTrigger.cpp ├── GlitchTrigger.h ├── HIDInstrument.cpp ├── HIDInstrument.h ├── HP662xAPowerSupply.cpp ├── HP662xAPowerSupply.h ├── IBISParser.cpp ├── IBISParser.h ├── IDTable.h ├── ImportFilter.cpp ├── ImportFilter.h ├── Instrument.cpp ├── Instrument.h ├── InstrumentChannel.cpp ├── InstrumentChannel.h ├── KeysightDCA.cpp ├── KeysightDCA.h ├── KuaiquPowerSupply.cpp ├── KuaiquPowerSupply.h ├── LeCroyFWPOscilloscope.cpp ├── LeCroyFWPOscilloscope.h ├── LeCroyOscilloscope.cpp ├── LeCroyOscilloscope.h ├── Load.cpp ├── Load.h ├── LoadChannel.cpp ├── LoadChannel.h ├── MockOscilloscope.cpp ├── MockOscilloscope.h ├── ModbusInstrument.cpp ├── ModbusInstrument.h ├── MultiLaneBERT.cpp ├── MultiLaneBERT.h ├── Multimeter.cpp ├── Multimeter.h ├── MultimeterChannel.cpp ├── MultimeterChannel.h ├── NanoVNA.cpp ├── NanoVNA.h ├── NthEdgeBurstTrigger.cpp ├── NthEdgeBurstTrigger.h ├── Oscilloscope.cpp ├── Oscilloscope.h ├── OscilloscopeChannel.cpp ├── OscilloscopeChannel.h ├── OwonXDGFunctionGenerator.cpp ├── OwonXDGFunctionGenerator.h ├── OwonXDMMultimeter.cpp ├── OwonXDMMultimeter.h ├── PacketDecoder.cpp ├── PacketDecoder.h ├── PausableFilter.cpp ├── PausableFilter.h ├── PeakDetectionFilter.cpp ├── PeakDetectionFilter.h ├── PicoOscilloscope.cpp ├── PicoOscilloscope.h ├── PicoVNA.cpp ├── PicoVNA.h ├── PipelineCacheManager.cpp ├── PipelineCacheManager.h ├── PowerSupply.cpp ├── PowerSupply.h ├── PowerSupplyChannel.cpp ├── PowerSupplyChannel.h ├── PulseWidthTrigger.cpp ├── PulseWidthTrigger.h ├── QueueManager.cpp ├── QueueManager.h ├── RFSignalGenerator.cpp ├── RFSignalGenerator.h ├── RFSignalGeneratorChannel.cpp ├── RFSignalGeneratorChannel.h ├── RSRTO6Oscilloscope.cpp ├── RSRTO6Oscilloscope.h ├── RemoteBridgeOscilloscope.cpp ├── RemoteBridgeOscilloscope.h ├── RidenPowerSupply.cpp ├── RidenPowerSupply.h ├── RigolDP8xxPowerSupply.cpp ├── RigolDP8xxPowerSupply.h ├── RigolFunctionGenerator.cpp ├── RigolFunctionGenerator.h ├── RigolOscilloscope.cpp ├── RigolOscilloscope.h ├── RohdeSchwarzHMC8012Multimeter.cpp ├── RohdeSchwarzHMC8012Multimeter.h ├── RohdeSchwarzHMC804xPowerSupply.cpp ├── RohdeSchwarzHMC804xPowerSupply.h ├── RohdeSchwarzOscilloscope.cpp ├── RohdeSchwarzOscilloscope.h ├── RuntTrigger.cpp ├── RuntTrigger.h ├── SCPIBERT.cpp ├── SCPIBERT.h ├── SCPIDevice.cpp ├── SCPIDevice.h ├── SCPIFunctionGenerator.cpp ├── SCPIFunctionGenerator.h ├── SCPIHIDTransport.cpp ├── SCPIHIDTransport.h ├── SCPIInstrument.cpp ├── SCPIInstrument.h ├── SCPILinuxGPIBTransport.cpp ├── SCPILinuxGPIBTransport.h ├── SCPILoad.cpp ├── SCPILoad.h ├── SCPILxiTransport.cpp ├── SCPILxiTransport.h ├── SCPIMiscInstrument.cpp ├── SCPIMiscInstrument.h ├── SCPIMultimeter.cpp ├── SCPIMultimeter.h ├── SCPINullTransport.cpp ├── SCPINullTransport.h ├── SCPIOscilloscope.cpp ├── SCPIOscilloscope.h ├── SCPIPowerSupply.cpp ├── SCPIPowerSupply.h ├── SCPIRFSignalGenerator.cpp ├── SCPIRFSignalGenerator.h ├── SCPISA.cpp ├── SCPISA.h ├── SCPISDR.cpp ├── SCPISDR.h ├── SCPISocketCANTransport.cpp ├── SCPISocketCANTransport.h ├── SCPISocketTransport.cpp ├── SCPISocketTransport.h ├── SCPISpectrometer.cpp ├── SCPISpectrometer.h ├── SCPITMCTransport.cpp ├── SCPITMCTransport.h ├── SCPITransport.cpp ├── SCPITransport.h ├── SCPITwinLanTransport.cpp ├── SCPITwinLanTransport.h ├── SCPIUARTTransport.cpp ├── SCPIUARTTransport.h ├── SCPIVNA.cpp ├── SCPIVNA.h ├── SParameterChannel.h ├── SParameterFilter.cpp ├── SParameterFilter.h ├── SParameterSourceFilter.cpp ├── SParameterSourceFilter.h ├── SParameters.cpp ├── SParameters.h ├── SerialTrigger.cpp ├── SerialTrigger.h ├── SiglentFunctionGenerator.cpp ├── SiglentFunctionGenerator.h ├── SiglentLoad.cpp ├── SiglentLoad.h ├── SiglentPowerSupply.cpp ├── SiglentPowerSupply.h ├── SiglentSCPIOscilloscope.cpp ├── SiglentSCPIOscilloscope.h ├── SiglentVectorSignalGenerator.cpp ├── SiglentVectorSignalGenerator.h ├── SlewRateTrigger.cpp ├── SlewRateTrigger.h ├── SocketCANAnalyzer.cpp ├── SocketCANAnalyzer.h ├── SpectrometerDarkFrameChannel.cpp ├── SpectrometerDarkFrameChannel.h ├── SpectrumChannel.cpp ├── SpectrumChannel.h ├── StandardColors.cpp ├── StandardColors.h ├── Stream.h ├── StreamDescriptor.h ├── StreamDescriptor_inlines.h ├── SwitchMatrix.cpp ├── SwitchMatrix.h ├── TektronixHSIOscilloscope.cpp ├── TektronixHSIOscilloscope.h ├── TektronixOscilloscope.cpp ├── TektronixOscilloscope.h ├── TestWaveformSource.cpp ├── TestWaveformSource.h ├── ThunderScopeOscilloscope.cpp ├── ThunderScopeOscilloscope.h ├── TinySA.cpp ├── TinySA.h ├── TouchstoneParser.cpp ├── TouchstoneParser.h ├── Trigger.cpp ├── Trigger.h ├── TwoLevelTrigger.cpp ├── TwoLevelTrigger.h ├── UHDBridgeSDR.cpp ├── UHDBridgeSDR.h ├── UartTrigger.cpp ├── UartTrigger.h ├── Unit.cpp ├── Unit.h ├── VICPSocketTransport.cpp ├── VICPSocketTransport.h ├── VulkanFFTPlan.cpp ├── VulkanFFTPlan.h ├── VulkanInit.cpp ├── Waveform.cpp ├── Waveform.h ├── WaveformPool.h ├── WindowTrigger.cpp ├── WindowTrigger.h ├── avx_mathfun.cpp ├── avx_mathfun.h ├── base64.cpp ├── base64.h ├── channels │ └── 300mm-s2000m.s2p ├── config.h.in ├── scopehal-pch.h ├── scopehal-version.h.in ├── scopehal.cpp ├── scopehal.h └── shaders │ ├── CMakeLists.txt │ ├── Convert16BitSamples.glsl │ ├── Convert8BitSamples.glsl │ ├── Convert8BitSamplesWithClipDetection.glsl │ ├── DeEmbedFilter.glsl │ └── RectangularWindow.glsl └── scopeprotocols ├── ACCoupleFilter.cpp ├── ACCoupleFilter.h ├── ACRMSMeasurement.cpp ├── ACRMSMeasurement.h ├── ADL5205Decoder.cpp ├── ADL5205Decoder.h ├── AddFilter.cpp ├── AddFilter.h ├── AreaMeasurement.cpp ├── AreaMeasurement.h ├── AutocorrelationFilter.cpp ├── AutocorrelationFilter.h ├── AverageFilter.cpp ├── AverageFilter.h ├── BINImportFilter.cpp ├── BINImportFilter.h ├── BandwidthMeasurement.cpp ├── BandwidthMeasurement.h ├── BaseMeasurement.cpp ├── BaseMeasurement.h ├── BurstWidthMeasurement.cpp ├── BurstWidthMeasurement.h ├── BusHeatmapFilter.cpp ├── BusHeatmapFilter.h ├── CANAnalyzerFilter.cpp ├── CANAnalyzerFilter.h ├── CANBitmaskFilter.cpp ├── CANBitmaskFilter.h ├── CANDecoder.cpp ├── CANDecoder.h ├── CMakeLists.txt ├── CSVExportFilter.cpp ├── CSVExportFilter.h ├── CSVImportFilter.cpp ├── CSVImportFilter.h ├── CTLEFilter.cpp ├── CTLEFilter.h ├── CandumpImportFilter.cpp ├── CandumpImportFilter.h ├── ChannelEmulationFilter.cpp ├── ChannelEmulationFilter.h ├── ClipFilter.cpp ├── ClipFilter.h ├── ClockRecoveryFilter.cpp ├── ClockRecoveryFilter.h ├── ComplexImportFilter.cpp ├── ComplexImportFilter.h ├── ComplexSpectrogramFilter.cpp ├── ComplexSpectrogramFilter.h ├── ConstantFilter.cpp ├── ConstantFilter.h ├── ConstellationFilter.cpp ├── ConstellationFilter.h ├── CouplerDeEmbedFilter.cpp ├── CouplerDeEmbedFilter.h ├── CurrentShuntFilter.cpp ├── CurrentShuntFilter.h ├── DCDMeasurement.cpp ├── DCDMeasurement.h ├── DDJMeasurement.cpp ├── DDJMeasurement.h ├── DDR1Decoder.cpp ├── DDR1Decoder.h ├── DDR3Decoder.cpp ├── DDR3Decoder.h ├── DPAuxChannelDecoder.cpp ├── DPAuxChannelDecoder.h ├── DPhyDataDecoder.cpp ├── DPhyDataDecoder.h ├── DPhyEscapeModeDecoder.cpp ├── DPhyEscapeModeDecoder.h ├── DPhyHSClockRecoveryFilter.cpp ├── DPhyHSClockRecoveryFilter.h ├── DPhySymbolDecoder.cpp ├── DPhySymbolDecoder.h ├── DSIFrameDecoder.cpp ├── DSIFrameDecoder.h ├── DSIPacketDecoder.cpp ├── DSIPacketDecoder.h ├── DVIDecoder.cpp ├── DVIDecoder.h ├── DeEmbedFilter.cpp ├── DeEmbedFilter.h ├── DeskewFilter.cpp ├── DeskewFilter.h ├── DigitalToNRZFilter.cpp ├── DigitalToNRZFilter.h ├── DigitalToPAM4Filter.cpp ├── DigitalToPAM4Filter.h ├── DivideFilter.cpp ├── DivideFilter.h ├── DownconvertFilter.cpp ├── DownconvertFilter.h ├── DownsampleFilter.cpp ├── DownsampleFilter.h ├── DramClockFilter.cpp ├── DramClockFilter.h ├── DramRefreshActivateMeasurement.cpp ├── DramRefreshActivateMeasurement.h ├── DramRowColumnLatencyMeasurement.cpp ├── DramRowColumnLatencyMeasurement.h ├── DutyCycleMeasurement.cpp ├── DutyCycleMeasurement.h ├── ESPIDecoder.cpp ├── ESPIDecoder.h ├── EmphasisFilter.cpp ├── EmphasisFilter.h ├── EmphasisRemovalFilter.cpp ├── EmphasisRemovalFilter.h ├── EnhancedResolutionFilter.cpp ├── EnhancedResolutionFilter.h ├── EnvelopeFilter.cpp ├── EnvelopeFilter.h ├── Ethernet1000BaseXDecoder.cpp ├── Ethernet1000BaseXDecoder.h ├── Ethernet100BaseT1Decoder.cpp ├── Ethernet100BaseT1Decoder.h ├── Ethernet100BaseT1LinkTrainingDecoder.cpp ├── Ethernet100BaseT1LinkTrainingDecoder.h ├── Ethernet100BaseTXDecoder.cpp ├── Ethernet100BaseTXDecoder.h ├── Ethernet10BaseTDecoder.cpp ├── Ethernet10BaseTDecoder.h ├── Ethernet10GBaseRDecoder.cpp ├── Ethernet10GBaseRDecoder.h ├── Ethernet64b66bDecoder.cpp ├── Ethernet64b66bDecoder.h ├── EthernetAutonegotiationDecoder.cpp ├── EthernetAutonegotiationDecoder.h ├── EthernetAutonegotiationPageDecoder.cpp ├── EthernetAutonegotiationPageDecoder.h ├── EthernetBaseXAutonegotiationDecoder.cpp ├── EthernetBaseXAutonegotiationDecoder.h ├── EthernetGMIIDecoder.cpp ├── EthernetGMIIDecoder.h ├── EthernetProtocolDecoder.cpp ├── EthernetProtocolDecoder.h ├── EthernetRGMIIDecoder.cpp ├── EthernetRGMIIDecoder.h ├── EthernetRMIIDecoder.cpp ├── EthernetRMIIDecoder.h ├── EthernetSGMIIDecoder.cpp ├── EthernetSGMIIDecoder.h ├── ExponentialMovingAverageFilter.cpp ├── ExponentialMovingAverageFilter.h ├── ExportFilter.cpp ├── ExportFilter.h ├── EyeBitRateMeasurement.cpp ├── EyeBitRateMeasurement.h ├── EyeHeightMeasurement.cpp ├── EyeHeightMeasurement.h ├── EyeJitterMeasurement.cpp ├── EyeJitterMeasurement.h ├── EyePattern.cpp ├── EyePattern.h ├── EyePeriodMeasurement.cpp ├── EyePeriodMeasurement.h ├── EyeWidthMeasurement.cpp ├── EyeWidthMeasurement.h ├── FFTFilter.cpp ├── FFTFilter.h ├── FIRFilter.cpp ├── FIRFilter.h ├── FSKDecoder.cpp ├── FSKDecoder.h ├── FallMeasurement.cpp ├── FallMeasurement.h ├── FrequencyMeasurement.cpp ├── FrequencyMeasurement.h ├── FullWidthHalfMax.cpp ├── FullWidthHalfMax.h ├── GateFilter.cpp ├── GateFilter.h ├── GlitchRemovalFilter.cpp ├── GlitchRemovalFilter.h ├── GroupDelayFilter.cpp ├── GroupDelayFilter.h ├── HistogramFilter.cpp ├── HistogramFilter.h ├── HorizontalBathtub.cpp ├── HorizontalBathtub.h ├── HyperRAMDecoder.cpp ├── HyperRAMDecoder.h ├── I2CDecoder.cpp ├── I2CDecoder.h ├── I2CEepromDecoder.cpp ├── I2CEepromDecoder.h ├── I2CRegisterDecoder.cpp ├── I2CRegisterDecoder.h ├── IBISDriverFilter.cpp ├── IBISDriverFilter.h ├── IBM8b10bDecoder.cpp ├── IBM8b10bDecoder.h ├── IPv4Decoder.cpp ├── IPv4Decoder.h ├── IQDemuxFilter.cpp ├── IQDemuxFilter.h ├── IQSquelchFilter.cpp ├── IQSquelchFilter.h ├── ISIMeasurement.cpp ├── ISIMeasurement.h ├── InvertFilter.cpp ├── InvertFilter.h ├── J1939AnalogDecoder.cpp ├── J1939AnalogDecoder.h ├── J1939BitmaskDecoder.cpp ├── J1939BitmaskDecoder.h ├── J1939PDUDecoder.cpp ├── J1939PDUDecoder.h ├── J1939SourceMatchFilter.cpp ├── J1939SourceMatchFilter.h ├── J1939TransportDecoder.cpp ├── J1939TransportDecoder.h ├── JitterFilter.cpp ├── JitterFilter.h ├── JitterSpectrumFilter.cpp ├── JitterSpectrumFilter.h ├── JtagDecoder.cpp ├── JtagDecoder.h ├── MDIODecoder.cpp ├── MDIODecoder.h ├── MagnitudeFilter.cpp ├── MagnitudeFilter.h ├── MaximumFilter.cpp ├── MaximumFilter.h ├── MemoryFilter.cpp ├── MemoryFilter.h ├── MilStd1553Decoder.cpp ├── MilStd1553Decoder.h ├── MinimumFilter.cpp ├── MinimumFilter.h ├── MovingAverageFilter.cpp ├── MovingAverageFilter.h ├── MultiplyFilter.cpp ├── MultiplyFilter.h ├── NCOFilter.cpp ├── NCOFilter.h ├── NoiseFilter.cpp ├── NoiseFilter.h ├── OneWireDecoder.cpp ├── OneWireDecoder.h ├── OvershootMeasurement.cpp ├── OvershootMeasurement.h ├── PAM4DemodulatorFilter.cpp ├── PAM4DemodulatorFilter.h ├── PAMEdgeDetectorFilter.cpp ├── PAMEdgeDetectorFilter.h ├── PCIe128b130bDecoder.cpp ├── PCIe128b130bDecoder.h ├── PCIeDataLinkDecoder.cpp ├── PCIeDataLinkDecoder.h ├── PCIeGen2LogicalDecoder.cpp ├── PCIeGen2LogicalDecoder.h ├── PCIeGen3LogicalDecoder.cpp ├── PCIeGen3LogicalDecoder.h ├── PCIeLinkTrainingDecoder.cpp ├── PCIeLinkTrainingDecoder.h ├── PCIeTransportDecoder.cpp ├── PCIeTransportDecoder.h ├── PRBSCheckerFilter.cpp ├── PRBSCheckerFilter.h ├── PRBSGeneratorFilter.cpp ├── PRBSGeneratorFilter.h ├── ParallelBus.cpp ├── ParallelBus.h ├── PcapngExportFilter.cpp ├── PcapngExportFilter.h ├── PcapngImportFilter.cpp ├── PcapngImportFilter.h ├── PeakHoldFilter.cpp ├── PeakHoldFilter.h ├── PeaksFilter.cpp ├── PeaksFilter.h ├── PeriodMeasurement.cpp ├── PeriodMeasurement.h ├── PhaseMeasurement.cpp ├── PhaseMeasurement.h ├── PhaseNonlinearityFilter.cpp ├── PhaseNonlinearityFilter.h ├── PkPkMeasurement.cpp ├── PkPkMeasurement.h ├── PointSampleFilter.cpp ├── PointSampleFilter.h ├── PulseWidthMeasurement.cpp ├── PulseWidthMeasurement.h ├── QSGMIIDecoder.cpp ├── QSGMIIDecoder.h ├── QSPIDecoder.cpp ├── QSPIDecoder.h ├── QuadratureDecoder.cpp ├── QuadratureDecoder.h ├── RGBLEDDecoder.cpp ├── RGBLEDDecoder.h ├── RISFilter.cpp ├── RISFilter.h ├── RMSMeasurement.cpp ├── RMSMeasurement.h ├── ReferencePlaneExtensionFilter.cpp ├── ReferencePlaneExtensionFilter.h ├── RiseMeasurement.cpp ├── RiseMeasurement.h ├── RjBUjFilter.cpp ├── RjBUjFilter.h ├── SDCmdDecoder.cpp ├── SDCmdDecoder.h ├── SDDataDecoder.cpp ├── SDDataDecoder.h ├── SDRAMDecoderBase.cpp ├── SDRAMDecoderBase.h ├── SNRFilter.cpp ├── SNRFilter.h ├── SPIDecoder.cpp ├── SPIDecoder.h ├── SPIFlashDecoder.cpp ├── SPIFlashDecoder.h ├── SParameterCascadeFilter.cpp ├── SParameterCascadeFilter.h ├── SParameterDeEmbedFilter.cpp ├── SParameterDeEmbedFilter.h ├── SWDDecoder.cpp ├── SWDDecoder.h ├── SWDMemAPDecoder.cpp ├── SWDMemAPDecoder.h ├── SawtoothGeneratorFilter.cpp ├── SawtoothGeneratorFilter.h ├── ScalarPulseDelayFilter.cpp ├── ScalarPulseDelayFilter.h ├── ScalarStairstepFilter.cpp ├── ScalarStairstepFilter.h ├── SetupHoldMeasurement.cpp ├── SetupHoldMeasurement.h ├── SpectrogramFilter.cpp ├── SpectrogramFilter.h ├── SquelchFilter.cpp ├── SquelchFilter.h ├── StepGeneratorFilter.cpp ├── StepGeneratorFilter.h ├── SubtractFilter.cpp ├── SubtractFilter.h ├── TCPDecoder.cpp ├── TCPDecoder.h ├── TDRFilter.cpp ├── TDRFilter.h ├── TIEMeasurement.cpp ├── TIEMeasurement.h ├── TMDSDecoder.cpp ├── TMDSDecoder.h ├── TRCImportFilter.cpp ├── TRCImportFilter.h ├── TachometerFilter.cpp ├── TachometerFilter.h ├── TappedDelayLineFilter.cpp ├── TappedDelayLineFilter.h ├── ThermalDiodeFilter.cpp ├── ThermalDiodeFilter.h ├── ThresholdFilter.cpp ├── ThresholdFilter.h ├── TimeOutsideLevelMeasurement.cpp ├── TimeOutsideLevelMeasurement.h ├── ToneGeneratorFilter.cpp ├── ToneGeneratorFilter.h ├── TopMeasurement.cpp ├── TopMeasurement.h ├── TouchstoneExportFilter.cpp ├── TouchstoneExportFilter.h ├── TouchstoneImportFilter.cpp ├── TouchstoneImportFilter.h ├── TrendFilter.cpp ├── TrendFilter.h ├── TwoPortShuntThroughFilter.cpp ├── TwoPortShuntThroughFilter.h ├── UARTDecoder.cpp ├── UARTDecoder.h ├── USB2ActivityDecoder.cpp ├── USB2ActivityDecoder.h ├── USB2PCSDecoder.cpp ├── USB2PCSDecoder.h ├── USB2PMADecoder.cpp ├── USB2PMADecoder.h ├── USB2PacketDecoder.cpp ├── USB2PacketDecoder.h ├── UartClockRecoveryFilter.cpp ├── UartClockRecoveryFilter.h ├── UndershootMeasurement.cpp ├── UndershootMeasurement.h ├── UnwrappedPhaseFilter.cpp ├── UnwrappedPhaseFilter.h ├── UpsampleFilter.cpp ├── UpsampleFilter.h ├── VCDImportFilter.cpp ├── VCDImportFilter.h ├── VICPDecoder.cpp ├── VICPDecoder.h ├── VectorFrequencyFilter.cpp ├── VectorFrequencyFilter.h ├── VectorPhaseFilter.cpp ├── VectorPhaseFilter.h ├── VerticalBathtub.cpp ├── VerticalBathtub.h ├── WAVImportFilter.cpp ├── WAVImportFilter.h ├── WFMImportFilter.cpp ├── WFMImportFilter.h ├── Waterfall.cpp ├── Waterfall.h ├── WaveformGenerationFilter.cpp ├── WaveformGenerationFilter.h ├── WindowFilter.cpp ├── WindowFilter.h ├── WindowedAutocorrelationFilter.cpp ├── WindowedAutocorrelationFilter.h ├── XYSweepFilter.cpp ├── XYSweepFilter.h ├── scopeprotocols.cpp ├── scopeprotocols.h └── shaders ├── AddFilter.glsl ├── BlackmanHarrisWindow.glsl ├── CMakeLists.txt ├── ComplexBlackmanHarrisWindow.glsl ├── ComplexCosineSumWindow.glsl ├── ComplexRectangularWindow.glsl ├── ComplexSpectrogramPostprocess.glsl ├── ComplexToLogMagnitude.glsl ├── ComplexToMagnitude.glsl ├── CosineSumWindow.glsl ├── DeEmbedNormalization.glsl ├── DeEmbedOutOfPlace.glsl ├── FIRFilter.glsl ├── SpectrogramPostprocess.glsl ├── SubtractFilter.glsl ├── SubtractInPlace.glsl ├── SubtractOutOfPlace.glsl ├── UpsampleFilter.glsl └── WaterfallFilter.glsl /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{c,cpp,h,glsl}] 2 | charset = utf-8 3 | indent_style = tab 4 | indent_size = 4 5 | trim_trailing_whitespace = true 6 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "xptools"] 2 | path = xptools 3 | url = ../xptools.git 4 | [submodule "log"] 5 | path = log 6 | url = ../logtools.git 7 | [submodule "VkFFT"] 8 | path = VkFFT 9 | url = ../VkFFT.git 10 | [submodule "canvas_ity"] 11 | path = canvas_ity 12 | url = https://github.com/a-e-k/canvas_ity.git 13 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "mutex": "cpp" 4 | } 5 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2018-2023, Andrew Zonenberg 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /scopeexports/scopeexports.cpp: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeexports * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Scope exporter initialization 34 | */ 35 | 36 | #include "scopeexports.h" 37 | #include "CSVExportWizard.h" 38 | #include "VCDExportWizard.h" 39 | #include "TouchstoneExportWizard.h" 40 | 41 | /** 42 | @brief Static initialization for exporter list 43 | */ 44 | void ScopeExportStaticInit() 45 | { 46 | AddExportWizardClass(CSVExportWizard); 47 | AddExportWizardClass(VCDExportWizard); 48 | AddExportWizardClass(TouchstoneExportWizard); 49 | } 50 | -------------------------------------------------------------------------------- /scopeexports/scopeexports.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeexports * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Main library include file 34 | */ 35 | 36 | #ifndef scopeexports_h 37 | #define scopeexports_h 38 | 39 | #include "../scopehal/scopehal.h" 40 | 41 | #include 42 | 43 | #include "ExportWizard.h" 44 | 45 | void ScopeExportStaticInit(); 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /scopehal/.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | # BasedOnStyle: Google 4 | AccessModifierOffset: -4 5 | AlignAfterOpenBracket: DontAlign 6 | AlignConsecutiveAssignments: false 7 | AlignConsecutiveDeclarations: false 8 | AlignEscapedNewlines: Left 9 | AlignOperands: true 10 | AlignTrailingComments: true 11 | AllowAllParametersOfDeclarationOnNextLine: true 12 | AllowShortBlocksOnASingleLine: false 13 | AllowShortCaseLabelsOnASingleLine: false 14 | AllowShortFunctionsOnASingleLine: InlineOnly 15 | AllowShortIfStatementsOnASingleLine: false 16 | AllowShortLoopsOnASingleLine: false 17 | AlwaysBreakAfterDefinitionReturnType: None 18 | AlwaysBreakAfterReturnType: None 19 | AlwaysBreakBeforeMultilineStrings: true 20 | AlwaysBreakTemplateDeclarations: Yes 21 | BinPackArguments: false 22 | BinPackParameters: false 23 | BraceWrapping: 24 | AfterClass: true 25 | AfterControlStatement: true 26 | AfterEnum: true 27 | AfterFunction: true 28 | AfterNamespace: true 29 | AfterObjCDeclaration: true 30 | AfterStruct: true 31 | AfterUnion: true 32 | AfterExternBlock: true 33 | BeforeCatch: true 34 | BeforeElse: true 35 | IndentBraces: false 36 | SplitEmptyFunction: false 37 | SplitEmptyRecord: false 38 | SplitEmptyNamespace: false 39 | BreakBeforeBinaryOperators: None 40 | BreakBeforeBraces: Allman 41 | BreakBeforeInheritanceComma: false 42 | BreakInheritanceList: BeforeComma 43 | BreakBeforeTernaryOperators: false 44 | BreakConstructorInitializersBeforeComma: false 45 | BreakConstructorInitializers: BeforeComma 46 | BreakAfterJavaFieldAnnotations: false 47 | BreakStringLiterals: true 48 | ColumnLimit: 120 49 | CommentPragmas: '^[^ ]' 50 | CompactNamespaces: false 51 | ConstructorInitializerAllOnOneLineOrOnePerLine: true 52 | ConstructorInitializerIndentWidth: 4 53 | ContinuationIndentWidth: 4 54 | Cpp11BracedListStyle: true 55 | DerivePointerAlignment: false 56 | DisableFormat: false 57 | ExperimentalAutoDetectBinPacking: false 58 | FixNamespaceComments: false 59 | ForEachMacros: 60 | - foreach 61 | - Q_FOREACH 62 | - BOOST_FOREACH 63 | IncludeBlocks: Preserve 64 | IncludeCategories: 65 | - Regex: '^' 66 | Priority: 2 67 | - Regex: '^<.*\.h>' 68 | Priority: 1 69 | - Regex: '^<.*' 70 | Priority: 2 71 | - Regex: '.*' 72 | Priority: 3 73 | IncludeIsMainRegex: '([-_](test|unittest))?$' 74 | IndentCaseLabels: true 75 | IndentWidth: 4 76 | IndentWrappedFunctionNames: true 77 | KeepEmptyLinesAtTheStartOfBlocks: false 78 | MacroBlockBegin: '' 79 | MacroBlockEnd: '' 80 | MaxEmptyLinesToKeep: 1 81 | NamespaceIndentation: Inner 82 | PenaltyBreakAssignment: 2 83 | PenaltyBreakBeforeFirstCallParameter: 1 84 | PenaltyBreakComment: 300 85 | PenaltyBreakFirstLessLess: 120 86 | PenaltyBreakString: 1000 87 | PenaltyBreakTemplateDeclaration: 10 88 | PenaltyExcessCharacter: 1000000 89 | PenaltyReturnTypeOnItsOwnLine: 200 90 | PointerAlignment: Left 91 | RawStringFormats: 92 | - Language: Cpp 93 | Delimiters: 94 | - cc 95 | - CC 96 | - cpp 97 | - Cpp 98 | - CPP 99 | - 'c++' 100 | - 'C++' 101 | CanonicalDelimiter: '' 102 | BasedOnStyle: google 103 | ReflowComments: false 104 | SortIncludes: false 105 | SortUsingDeclarations: false 106 | SpaceAfterCStyleCast: false 107 | SpaceAfterTemplateKeyword: false 108 | SpaceBeforeAssignmentOperators: true 109 | SpaceBeforeCpp11BracedList: false 110 | SpaceBeforeCtorInitializerColon: true 111 | SpaceBeforeInheritanceColon: true 112 | SpaceBeforeParens: Never 113 | SpaceBeforeRangeBasedForLoopColon: true 114 | SpaceInEmptyParentheses: false 115 | SpacesBeforeTrailingComments: 4 116 | SpacesInAngles: false 117 | SpacesInContainerLiterals: true 118 | SpacesInCStyleCastParentheses: false 119 | SpacesInParentheses: false 120 | SpacesInSquareBrackets: false 121 | TabWidth: 4 122 | UseTab: Always -------------------------------------------------------------------------------- /scopehal/ActionProvider.cpp: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopehal * 4 | * * 5 | * Copyright (c) 2012-2024 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Implementation of ActionProvider 34 | */ 35 | 36 | #include "scopehal.h" 37 | #include "ActionProvider.h" 38 | 39 | using namespace std; 40 | 41 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 42 | // Construction / destruction 43 | 44 | ActionProvider::ActionProvider() 45 | { 46 | } 47 | 48 | ActionProvider::~ActionProvider() 49 | { 50 | } 51 | -------------------------------------------------------------------------------- /scopehal/FileSystem.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopehal * 4 | * * 5 | * Copyright (c) 2012-2024 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Katharina B 33 | @brief Common file system utilities 34 | @ingroup core 35 | */ 36 | 37 | #ifndef FileSystem_h 38 | #define FileSystem_h 39 | 40 | #include 41 | #include 42 | 43 | // Find all files/directories matching given pattern 44 | std::vector Glob(const std::string& pathPattern, bool onlyDirectories); 45 | 46 | // Remove given directory and all its contents 47 | void RemoveDirectory(const std::string& basePath); 48 | 49 | #endif // FileSystem_h 50 | -------------------------------------------------------------------------------- /scopehal/SCPIDevice.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopehal v0.1 * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | #ifndef SCPIDevice_h 31 | #define SCPIDevice_h 32 | 33 | /** 34 | @brief An SCPI-based device 35 | */ 36 | class SCPIDevice 37 | { 38 | public: 39 | SCPIDevice(SCPITransport* transport, bool identify = true); 40 | virtual ~SCPIDevice(); 41 | 42 | SCPITransport* GetTransport() const 43 | { return m_transport; } 44 | 45 | protected: 46 | SCPITransport* m_transport; 47 | 48 | //standard *IDN? fields 49 | std::string m_vendor; 50 | std::string m_model; 51 | std::string m_serial; 52 | std::string m_fwVersion; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /scopehal/SCPIOscilloscope.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopehal * 4 | * * 5 | * Copyright (c) 2012-2024 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | #ifndef SCPIOscilloscope_h 31 | #define SCPIOscilloscope_h 32 | 33 | /** 34 | @brief An SCPI-based oscilloscope 35 | */ 36 | class SCPIOscilloscope : public virtual Oscilloscope 37 | , public virtual SCPIInstrument 38 | { 39 | public: 40 | SCPIOscilloscope(); 41 | virtual ~SCPIOscilloscope(); 42 | 43 | virtual std::string IDPing(); 44 | 45 | protected: 46 | bool m_triggerArmed; 47 | bool m_triggerOneShot; 48 | 49 | //Mutexing for thread safety 50 | std::recursive_mutex m_cacheMutex; 51 | }; 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /scopehal/SpectrumChannel.cpp: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopehal v0.1 * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | #include "scopehal.h" 31 | 32 | using namespace std; 33 | 34 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 35 | // Construction / destruction 36 | 37 | SpectrumChannel::SpectrumChannel( 38 | Oscilloscope* scope, 39 | const string& hwname, 40 | const string& color, 41 | size_t index) 42 | : OscilloscopeChannel(scope, hwname, color, Unit(Unit::UNIT_HZ), index) 43 | { 44 | AddStream(Unit(Unit::UNIT_DBM), "data", Stream::STREAM_TYPE_ANALOG); 45 | } 46 | 47 | SpectrumChannel::~SpectrumChannel() 48 | { 49 | } 50 | -------------------------------------------------------------------------------- /scopehal/SpectrumChannel.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopehal v0.1 * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | #ifndef SpectrumChannel_h 31 | #define SpectrumChannel_h 32 | 33 | /** 34 | @brief A frequency domain oscilloscope channel 35 | */ 36 | class SpectrumChannel 37 | : public OscilloscopeChannel 38 | , public PeakDetector 39 | { 40 | public: 41 | SpectrumChannel( 42 | Oscilloscope* scope, 43 | const std::string& hwname, 44 | const std::string& color, 45 | size_t index 46 | ); 47 | virtual ~SpectrumChannel(); 48 | }; 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /scopehal/StandardColors.cpp: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopehal * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | #include "StandardColors.h" 31 | 32 | namespace StandardColors 33 | { 34 | std::string colors[StandardColors::STANDARD_COLOR_COUNT] = 35 | { 36 | "#336699", //COLOR_DATA 37 | "#c000a0", //COLOR_CONTROL 38 | "#ffff00", //COLOR_ADDRESS 39 | "#808080", //COLOR_PREAMBLE 40 | "#00ff00", //COLOR_CHECKSUM_OK 41 | "#ff0000", //COLOR_CHECKSUM_BAD 42 | "#ff0000", //COLOR_ERROR 43 | "#404040" //COLOR_IDLE 44 | }; 45 | } 46 | -------------------------------------------------------------------------------- /scopehal/avx_mathfun.h: -------------------------------------------------------------------------------- 1 | /* 2 | AVX implementation of sin, cos, sincos, exp and log 3 | 4 | Based on "sse_mathfun.h", by Julien Pommier 5 | http://gruntthepeon.free.fr/ssemath/ 6 | 7 | Copyright (C) 2012 Giovanni Garberoglio 8 | Interdisciplinary Laboratory for Computational Science (LISC) 9 | Fondazione Bruno Kessler and University of Trento 10 | via Sommarive, 18 11 | I-38123 Trento (Italy) 12 | 13 | This software is provided 'as-is', without any express or implied 14 | warranty. In no event will the authors be held liable for any damages 15 | arising from the use of this software. 16 | 17 | Permission is granted to anyone to use this software for any purpose, 18 | including commercial applications, and to alter it and redistribute it 19 | freely, subject to the following restrictions: 20 | 21 | 1. The origin of this software must not be misrepresented; you must not 22 | claim that you wrote the original software. If you use this software 23 | in a product, an acknowledgment in the product documentation would be 24 | appreciated but is not required. 25 | 2. Altered source versions must be plainly marked as such, and must not be 26 | misrepresented as being the original software. 27 | 3. This notice may not be removed or altered from any source distribution. 28 | 29 | (this is the zlib license) 30 | 31 | Modified by A. Zonenberg: 32 | * Added convenient nicknames to make these functions fit the Intel intrisic naming schema used by IPP 33 | * Added __attribute__((target("avx2"))) to each function for use in mixed environments 34 | * Added function prototypes 35 | * Removed no-AVX2 functionality since we only use these functions if AVX2 is present 36 | * Fixed _PS256_CONST 37 | * Moved constants inside functions so we can handle compiling without -mavx2 38 | * Moved a bunch of implementation stuff to a source file 39 | */ 40 | 41 | #ifdef __x86_64__ 42 | 43 | #include 44 | 45 | /* yes I know, the top of this file is quite ugly */ 46 | # define ALIGN32_BEG 47 | # define ALIGN32_END __attribute__((aligned(32))) 48 | 49 | /* __m128 is ugly to write */ 50 | typedef __m256 v8sf; // vector of 8 float (avx) 51 | typedef __m256i v8si; // vector of 8 int (avx) 52 | 53 | //Added function prototypes 54 | __attribute__((target("avx2"))) 55 | v8sf _mm256_log_ps(v8sf); 56 | __attribute__((target("avx2"))) 57 | v8sf exp256_ps(v8sf); 58 | __attribute__((target("avx2"))) 59 | v8sf _mm256_sin_ps(v8sf); 60 | __attribute__((target("avx2"))) 61 | v8sf _mm256_cos_ps(v8sf); 62 | __attribute__((target("avx2"))) 63 | void _mm256_sincos_ps(v8sf xx, v8sf*, v8sf*); 64 | 65 | /* declare some AVX constants -- why can't I figure a better way to do that? */ 66 | 67 | #define _PS256_CONST(Name, Val) \ 68 | v8sf _ps256_##Name = { Val, Val, Val, Val, Val, Val, Val, Val } 69 | #define _PI32_CONST256(Name, Val) \ 70 | int _pi32_256_tmp_##Name[8] ALIGN32_END = { Val, Val, Val, Val, Val, Val, Val, Val }; \ 71 | v8si _pi32_256_##Name = *reinterpret_cast(&_pi32_256_tmp_##Name) 72 | #define _PS256_CONST_TYPE(Name, Type, Val) \ 73 | int _pi32_256_tmp_##Name[8] ALIGN32_END = { Val, Val, Val, Val, Val, Val, Val, Val }; \ 74 | v8sf _ps256_##Name = _mm256_load_ps((float*)&_pi32_256_tmp_##Name) 75 | 76 | #endif /* __x86_64__ */ -------------------------------------------------------------------------------- /scopehal/base64.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | cdecoder.c - c source to a base64 decoding algorithm implementation 3 | 4 | This is part of the libb64 project, and has been placed in the public domain. 5 | For details, see http://sourceforge.net/projects/libb64 6 | */ 7 | 8 | #include "base64.h" 9 | 10 | int base64_decode_value(signed char value_in) 11 | { 12 | static const signed char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51}; 13 | static const signed char decoding_size = sizeof(decoding); 14 | value_in -= 43; 15 | if (value_in < 0 || value_in >= decoding_size) return -1; 16 | return decoding[(int)value_in]; 17 | } 18 | 19 | void base64_init_decodestate(base64_decodestate* state_in) 20 | { 21 | state_in->step = step_a; 22 | state_in->plainchar = 0; 23 | } 24 | 25 | int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in) 26 | { 27 | const char* codechar = code_in; 28 | char* plainchar = plaintext_out; 29 | signed char fragment; 30 | 31 | *plainchar = state_in->plainchar; 32 | 33 | switch (state_in->step) 34 | { 35 | while (1) 36 | { 37 | case step_a: 38 | do { 39 | if (codechar == code_in+length_in) 40 | { 41 | state_in->step = step_a; 42 | state_in->plainchar = *plainchar; 43 | return plainchar - plaintext_out; 44 | } 45 | fragment = (signed char)base64_decode_value(*codechar++); 46 | } while (fragment < 0); 47 | *plainchar = (fragment & 0x03f) << 2; 48 | 49 | //fall through 50 | case step_b: 51 | do { 52 | if (codechar == code_in+length_in) 53 | { 54 | state_in->step = step_b; 55 | state_in->plainchar = *plainchar; 56 | return plainchar - plaintext_out; 57 | } 58 | fragment = (signed char)base64_decode_value(*codechar++); 59 | } while (fragment < 0); 60 | *plainchar++ |= (fragment & 0x030) >> 4; 61 | *plainchar = (fragment & 0x00f) << 4; 62 | 63 | //fall through 64 | case step_c: 65 | do { 66 | if (codechar == code_in+length_in) 67 | { 68 | state_in->step = step_c; 69 | state_in->plainchar = *plainchar; 70 | return plainchar - plaintext_out; 71 | } 72 | fragment = (signed char)base64_decode_value(*codechar++); 73 | } while (fragment < 0); 74 | *plainchar++ |= (fragment & 0x03c) >> 2; 75 | *plainchar = (fragment & 0x003) << 6; 76 | 77 | //fall through 78 | case step_d: 79 | do { 80 | if (codechar == code_in+length_in) 81 | { 82 | state_in->step = step_d; 83 | state_in->plainchar = *plainchar; 84 | return plainchar - plaintext_out; 85 | } 86 | fragment = (signed char)base64_decode_value(*codechar++); 87 | } while (fragment < 0); 88 | *plainchar++ |= (fragment & 0x03f); 89 | } 90 | } 91 | /* control should not reach here */ 92 | return plainchar - plaintext_out; 93 | } 94 | -------------------------------------------------------------------------------- /scopehal/base64.h: -------------------------------------------------------------------------------- 1 | /* 2 | cdecode.h - c header for a base64 decoding algorithm 3 | 4 | This is part of the libb64 project, and has been placed in the public domain. 5 | For details, see http://sourceforge.net/projects/libb64 6 | */ 7 | 8 | #ifndef BASE64_CDECODE_H 9 | #define BASE64_CDECODE_H 10 | 11 | typedef enum 12 | { 13 | step_a, step_b, step_c, step_d 14 | } base64_decodestep; 15 | 16 | typedef struct 17 | { 18 | base64_decodestep step; 19 | char plainchar; 20 | } base64_decodestate; 21 | 22 | void base64_init_decodestate(base64_decodestate* state_in); 23 | 24 | int base64_decode_value(signed char value_in); 25 | 26 | int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in); 27 | 28 | #endif /* BASE64_CDECODE_H */ 29 | -------------------------------------------------------------------------------- /scopehal/config.h.in: -------------------------------------------------------------------------------- 1 | //We want each variable defined only if CMake found it so we can #ifdef instead of #if 2 | -------------------------------------------------------------------------------- /scopehal/scopehal-pch.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopehal v0.1 * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Helper header to pull in a few very common libstdc++ files we require 34 | */ 35 | 36 | #ifndef scopehal_pch_h 37 | #define scopehal_pch_h 38 | 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | #include 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /scopehal/scopehal-version.h.in: -------------------------------------------------------------------------------- 1 | #define SCOPEHAL_VERSION "0.1-dev+" "@SCOPEHAL_VERSION@" 2 | -------------------------------------------------------------------------------- /scopehal/shaders/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | function(add_compute_shaders target) 2 | cmake_parse_arguments(PARSE_ARGV 1 arg "" "" "SOURCES") 3 | 4 | set(spvfiles "") 5 | 6 | foreach(source ${arg_SOURCES}) 7 | get_filename_component(base ${source} NAME_WE) 8 | 9 | set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${base}.spv) 10 | set(spvfiles ${spvfiles} ${outfile}) 11 | 12 | add_custom_command( 13 | OUTPUT ${outfile} 14 | DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${source} 15 | COMMENT "Compile shader ${base}" 16 | COMMAND ${Vulkan_GLSLC_EXECUTABLE} --target-env=vulkan1.0 -c ${CMAKE_CURRENT_SOURCE_DIR}/${source} -g -o ${outfile}) 17 | 18 | install(FILES ${outfile} DESTINATION share/ngscopeclient/shaders) 19 | 20 | endforeach() 21 | 22 | add_custom_target(${target} 23 | COMMAND ${CMAKE_COMMAND} -E true 24 | SOURCES ${spvfiles} 25 | ) 26 | 27 | endfunction() 28 | 29 | add_compute_shaders( 30 | halshaders 31 | SOURCES 32 | Convert8BitSamples.glsl 33 | Convert8BitSamplesWithClipDetection.glsl 34 | Convert16BitSamples.glsl 35 | DeEmbedFilter.glsl 36 | RectangularWindow.glsl 37 | ) 38 | 39 | add_dependencies(scopehal halshaders) 40 | -------------------------------------------------------------------------------- /scopeprotocols/ACCoupleFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of ACCoupleFilter 34 | */ 35 | #ifndef ACCoupleFilter_h 36 | #define ACCoupleFilter_h 37 | 38 | class ACCoupleFilter : public Filter 39 | { 40 | public: 41 | ACCoupleFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(ACCoupleFilter) 50 | 51 | protected: 52 | }; 53 | 54 | #endif 55 | -------------------------------------------------------------------------------- /scopeprotocols/ACRMSMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of ACRMSMeasurement 34 | */ 35 | #ifndef ACRMSMeasurement_h 36 | #define ACRMSMeasurement_h 37 | 38 | class ACRMSMeasurement : public Filter 39 | { 40 | public: 41 | ACRMSMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(ACRMSMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/BaseMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of BaseMeasurement 34 | */ 35 | #ifndef BaseMeasurement_h 36 | #define BaseMeasurement_h 37 | 38 | class BaseMeasurement : public Filter 39 | { 40 | public: 41 | BaseMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(BaseMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/CSVImportFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of CSVImportFilter 34 | */ 35 | #ifndef CSVImportFilter_h 36 | #define CSVImportFilter_h 37 | 38 | class CSVImportFilter : public ImportFilter 39 | { 40 | public: 41 | CSVImportFilter(const std::string& color); 42 | 43 | static std::string GetProtocolName(); 44 | 45 | PROTOCOL_DECODER_INITPROC(CSVImportFilter) 46 | 47 | protected: 48 | void OnFileNameChanged(); 49 | 50 | std::string m_xunit; 51 | std::string m_yunit0; 52 | }; 53 | 54 | #endif 55 | -------------------------------------------------------------------------------- /scopeprotocols/ClipFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of ClipFilter 34 | */ 35 | #ifndef ClipFilter_h 36 | #define ClipFilter_h 37 | 38 | class ClipFilter : public Filter 39 | { 40 | public: 41 | ClipFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(ClipFilter) 50 | 51 | protected: 52 | std::string m_clipAboveName; 53 | std::string m_clipLevelName; 54 | }; 55 | 56 | #endif 57 | -------------------------------------------------------------------------------- /scopeprotocols/DCDMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of DCDMeasurement 34 | */ 35 | #ifndef DCDMeasurement_h 36 | #define DCDMeasurement_h 37 | 38 | class DCDMeasurement : public Filter 39 | { 40 | public: 41 | DCDMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(DCDMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/DDR1Decoder.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of DDR1Decoder 34 | */ 35 | 36 | #ifndef DDR1Decoder_h 37 | #define DDR1Decoder_h 38 | 39 | #include "SDRAMDecoderBase.h" 40 | 41 | class DDR1Decoder : public SDRAMDecoderBase 42 | { 43 | public: 44 | DDR1Decoder(const std::string& color); 45 | 46 | virtual void Refresh() override; 47 | 48 | static std::string GetProtocolName(); 49 | 50 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 51 | 52 | PROTOCOL_DECODER_INITPROC(DDR1Decoder) 53 | 54 | protected: 55 | }; 56 | 57 | #endif 58 | -------------------------------------------------------------------------------- /scopeprotocols/DDR3Decoder.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2021 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of DDR3Decoder 34 | */ 35 | 36 | #ifndef DDR3Decoder_h 37 | #define DDR3Decoder_h 38 | 39 | #include "SDRAMDecoderBase.h" 40 | 41 | class DDR3Decoder : public SDRAMDecoderBase 42 | { 43 | public: 44 | DDR3Decoder(const std::string& color); 45 | 46 | virtual void Refresh() override; 47 | 48 | static std::string GetProtocolName(); 49 | 50 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 51 | 52 | PROTOCOL_DECODER_INITPROC(DDR3Decoder) 53 | 54 | protected: 55 | }; 56 | 57 | #endif 58 | -------------------------------------------------------------------------------- /scopeprotocols/DeskewFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of DeskewFilter 34 | */ 35 | #ifndef DeskewFilter_h 36 | #define DeskewFilter_h 37 | 38 | class DeskewFilter : public Filter 39 | { 40 | public: 41 | DeskewFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(DeskewFilter) 50 | 51 | protected: 52 | std::string m_skewname; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /scopeprotocols/DutyCycleMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of DutyCycleMeasurement 34 | */ 35 | #ifndef DutyCycleMeasurement_h 36 | #define DutyCycleMeasurement_h 37 | 38 | class DutyCycleMeasurement : public Filter 39 | { 40 | public: 41 | DutyCycleMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(DutyCycleMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/EnvelopeFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of EnvelopeFilter 34 | */ 35 | #ifndef EnvelopeFilter_h 36 | #define EnvelopeFilter_h 37 | 38 | class EnvelopeFilter : public Filter 39 | { 40 | public: 41 | EnvelopeFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | virtual void ClearSweeps() override; 45 | 46 | static std::string GetProtocolName(); 47 | 48 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 49 | 50 | PROTOCOL_DECODER_INITPROC(EnvelopeFilter) 51 | 52 | protected: 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /scopeprotocols/EthernetGMIIDecoder.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of EthernetGMIIDecoder 34 | */ 35 | #ifndef EthernetGMIIDecoder_h 36 | #define EthernetGMIIDecoder_h 37 | 38 | class EthernetGMIIDecoder : public EthernetProtocolDecoder 39 | { 40 | public: 41 | EthernetGMIIDecoder(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | static std::string GetProtocolName(); 45 | 46 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 47 | 48 | PROTOCOL_DECODER_INITPROC(EthernetGMIIDecoder) 49 | }; 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /scopeprotocols/EthernetRGMIIDecoder.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2021 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of EthernetRGMIIDecoder 34 | */ 35 | #ifndef EthernetRGMIIDecoder_h 36 | #define EthernetRGMIIDecoder_h 37 | 38 | class EthernetRGMIIDecoder : public EthernetProtocolDecoder 39 | { 40 | public: 41 | EthernetRGMIIDecoder(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | static std::string GetProtocolName(); 45 | 46 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 47 | 48 | PROTOCOL_DECODER_INITPROC(EthernetRGMIIDecoder) 49 | }; 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /scopeprotocols/EthernetRMIIDecoder.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of EthernetRMIIDecoder 34 | */ 35 | #ifndef EthernetRMIIDecoder_h 36 | #define EthernetRMIIDecoder_h 37 | 38 | class EthernetRMIIDecoder : public EthernetProtocolDecoder 39 | { 40 | public: 41 | EthernetRMIIDecoder(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | static std::string GetProtocolName(); 45 | 46 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 47 | 48 | PROTOCOL_DECODER_INITPROC(EthernetRMIIDecoder) 49 | }; 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /scopeprotocols/EyeBitRateMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of EyeBitRateMeasurement 34 | */ 35 | #ifndef EyeBitRateMeasurement_h 36 | #define EyeBitRateMeasurement_h 37 | 38 | class EyeBitRateMeasurement : public Filter 39 | { 40 | public: 41 | EyeBitRateMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(EyeBitRateMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/EyePeriodMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of EyePeriodMeasurement 34 | */ 35 | #ifndef EyePeriodMeasurement_h 36 | #define EyePeriodMeasurement_h 37 | 38 | class EyePeriodMeasurement : public Filter 39 | { 40 | public: 41 | EyePeriodMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(EyePeriodMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/FSKDecoder.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of FSKDecoder 34 | */ 35 | #ifndef FSKDecoder_h 36 | #define FSKDecoder_h 37 | 38 | class FSKDecoder : public Filter 39 | { 40 | public: 41 | FSKDecoder(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(FSKDecoder) 50 | 51 | protected: 52 | }; 53 | 54 | #endif 55 | -------------------------------------------------------------------------------- /scopeprotocols/FrequencyMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of FrequencyMeasurement 34 | */ 35 | #ifndef FrequencyMeasurement_h 36 | #define FrequencyMeasurement_h 37 | 38 | class FrequencyMeasurement : public Filter 39 | { 40 | public: 41 | FrequencyMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(FrequencyMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/FullWidthHalfMax.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of FullWidthHalfMax 34 | */ 35 | #ifndef FullWidthHalfMax_h 36 | #define FullWidthHalfMax_h 37 | 38 | class FullWidthHalfMax : public Filter 39 | { 40 | public: 41 | FullWidthHalfMax(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(FullWidthHalfMax) 50 | 51 | protected: 52 | std::string m_peak_threshold; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /scopeprotocols/GroupDelayFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of GroupDelayFilter 34 | */ 35 | #ifndef GroupDelayFilter_h 36 | #define GroupDelayFilter_h 37 | 38 | class GroupDelayFilter : public Filter 39 | { 40 | public: 41 | GroupDelayFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(GroupDelayFilter) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/ISIMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of ISIMeasurement 34 | */ 35 | #ifndef ISIMeasurement_h 36 | #define ISIMeasurement_h 37 | 38 | class ISIMeasurement : public Filter 39 | { 40 | public: 41 | ISIMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(ISIMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/InvertFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of InvertFilter 34 | */ 35 | #ifndef InvertFilter_h 36 | #define InvertFilter_h 37 | 38 | class InvertFilter : public Filter 39 | { 40 | public: 41 | InvertFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | virtual void SetDefaultName() override; 47 | 48 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 49 | 50 | PROTOCOL_DECODER_INITPROC(InvertFilter) 51 | }; 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /scopeprotocols/MagnitudeFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of MagnitudeFilter 34 | */ 35 | #ifndef MagnitudeFilter_h 36 | #define MagnitudeFilter_h 37 | 38 | class MagnitudeFilter : public Filter 39 | { 40 | public: 41 | MagnitudeFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(MagnitudeFilter) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/OvershootMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of OvershootMeasurement 34 | */ 35 | #ifndef OvershootMeasurement_h 36 | #define OvershootMeasurement_h 37 | 38 | class OvershootMeasurement : public Filter 39 | { 40 | public: 41 | OvershootMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(OvershootMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/ParallelBus.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of ParallelBus 34 | */ 35 | #ifndef ParallelBus_h 36 | #define ParallelBus_h 37 | 38 | class ParallelBus : public Filter 39 | { 40 | public: 41 | ParallelBus(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(ParallelBus) 50 | 51 | protected: 52 | std::string m_widthname; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /scopeprotocols/PeriodMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of PeriodMeasurement 34 | */ 35 | #ifndef PeriodMeasurement_h 36 | #define PeriodMeasurement_h 37 | 38 | class PeriodMeasurement : public Filter 39 | { 40 | public: 41 | PeriodMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(PeriodMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/PkPkMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of PkPkMeasurement 34 | */ 35 | #ifndef PkPkMeasurement_h 36 | #define PkPkMeasurement_h 37 | 38 | class PkPkMeasurement : public Filter 39 | { 40 | public: 41 | PkPkMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(PkPkMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/PulseWidthMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of PulseWidthMeasurement 34 | */ 35 | #ifndef PulseWidthMeasurement_h 36 | #define PulseWidthMeasurement_h 37 | 38 | class PulseWidthMeasurement : public Filter 39 | { 40 | public: 41 | PulseWidthMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(PulseWidthMeasurement) 50 | }; 51 | 52 | #endif -------------------------------------------------------------------------------- /scopeprotocols/QSPIDecoder.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2021 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of QSPIDecoder 34 | */ 35 | 36 | #ifndef QSPIDecoder_h 37 | #define QSPIDecoder_h 38 | 39 | #include "SPIDecoder.h" 40 | 41 | class QSPIDecoder : public SPIDecoder 42 | { 43 | public: 44 | QSPIDecoder(const std::string& color); 45 | 46 | virtual void Refresh() override; 47 | 48 | static std::string GetProtocolName(); 49 | 50 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 51 | 52 | PROTOCOL_DECODER_INITPROC(QSPIDecoder) 53 | 54 | protected: 55 | }; 56 | 57 | #endif 58 | -------------------------------------------------------------------------------- /scopeprotocols/RMSMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of RMSMeasurement 34 | */ 35 | #ifndef RMSMeasurement_h 36 | #define RMSMeasurement_h 37 | 38 | class RMSMeasurement : public Filter 39 | { 40 | public: 41 | RMSMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(RMSMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/RjBUjFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of RjBUjFilter 34 | */ 35 | #ifndef RjBUjFilter_h 36 | #define RjBUjFilter_h 37 | 38 | class RjBUjFilter : public Filter 39 | { 40 | public: 41 | RjBUjFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(RjBUjFilter) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/SNRFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2023 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of SNRFilter 34 | */ 35 | #ifndef SNRFilter_h 36 | #define SNRFilter_h 37 | 38 | class SNRFilter : public Filter 39 | { 40 | public: 41 | SNRFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(SNRFilter) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/TachometerFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of TachometerFilter 34 | */ 35 | #ifndef TachometerFilter_h 36 | #define TachometerFilter_h 37 | 38 | class TachometerFilter : public Filter 39 | { 40 | public: 41 | TachometerFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(TachometerFilter) 50 | 51 | protected: 52 | std::string m_ticksname; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /scopeprotocols/TopMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of TopMeasurement 34 | */ 35 | #ifndef TopMeasurement_h 36 | #define TopMeasurement_h 37 | 38 | class TopMeasurement : public Filter 39 | { 40 | public: 41 | TopMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(TopMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/USB2ActivityDecoder.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of USB2ActivityDecoder 34 | */ 35 | #ifndef USB2ActivityDecoder_h 36 | #define USB2ActivityDecoder_h 37 | 38 | class USB2ActivityDecoder : public Filter 39 | { 40 | public: 41 | USB2ActivityDecoder(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(USB2ActivityDecoder) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/UndershootMeasurement.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of UndershootMeasurement 34 | */ 35 | #ifndef UndershootMeasurement_h 36 | #define UndershootMeasurement_h 37 | 38 | class UndershootMeasurement : public Filter 39 | { 40 | public: 41 | UndershootMeasurement(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(UndershootMeasurement) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/UnwrappedPhaseFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of UnwrappedPhaseFilter 34 | */ 35 | #ifndef UnwrappedPhaseFilter_h 36 | #define UnwrappedPhaseFilter_h 37 | 38 | class UnwrappedPhaseFilter : public Filter 39 | { 40 | public: 41 | UnwrappedPhaseFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(UnwrappedPhaseFilter) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/VCDImportFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of VCDImportFilter 34 | */ 35 | #ifndef VCDImportFilter_h 36 | #define VCDImportFilter_h 37 | 38 | class VCDImportFilter : public ImportFilter 39 | { 40 | public: 41 | VCDImportFilter(const std::string& color); 42 | 43 | static std::string GetProtocolName(); 44 | 45 | PROTOCOL_DECODER_INITPROC(VCDImportFilter) 46 | 47 | protected: 48 | void OnFileNameChanged(); 49 | }; 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /scopeprotocols/VectorFrequencyFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of VectorFrequencyFilter 34 | */ 35 | #ifndef VectorFrequencyFilter_h 36 | #define VectorFrequencyFilter_h 37 | 38 | class VectorFrequencyFilter : public Filter 39 | { 40 | public: 41 | VectorFrequencyFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(VectorFrequencyFilter) 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/VectorPhaseFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of VectorPhaseFilter 34 | */ 35 | #ifndef VectorPhaseFilter_h 36 | #define VectorPhaseFilter_h 37 | 38 | class VectorPhaseFilter : public Filter 39 | { 40 | public: 41 | VectorPhaseFilter(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 47 | 48 | PROTOCOL_DECODER_INITPROC(VectorPhaseFilter) 49 | }; 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /scopeprotocols/VerticalBathtub.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of VerticalBathtub 34 | */ 35 | #ifndef VerticalBathtub_h 36 | #define VerticalBathtub_h 37 | 38 | class VerticalBathtub : public Filter 39 | { 40 | public: 41 | VerticalBathtub(const std::string& color); 42 | 43 | virtual void Refresh() override; 44 | 45 | static std::string GetProtocolName(); 46 | 47 | virtual bool ValidateChannel(size_t i, StreamDescriptor stream) override; 48 | 49 | PROTOCOL_DECODER_INITPROC(VerticalBathtub) 50 | 51 | protected: 52 | std::string m_timeName; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /scopeprotocols/WAVImportFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of WAVImportFilter 34 | */ 35 | #ifndef WAVImportFilter_h 36 | #define WAVImportFilter_h 37 | 38 | class WAVImportFilter : public ImportFilter 39 | { 40 | public: 41 | WAVImportFilter(const std::string& color); 42 | 43 | static std::string GetProtocolName(); 44 | 45 | PROTOCOL_DECODER_INITPROC(WAVImportFilter) 46 | 47 | protected: 48 | void OnFileNameChanged(); 49 | void SetupStreams(size_t chans); 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /scopeprotocols/WFMImportFilter.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * * 3 | * libscopeprotocols * 4 | * * 5 | * Copyright (c) 2012-2022 Andrew D. Zonenberg and contributors * 6 | * All rights reserved. * 7 | * * 8 | * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * 9 | * following conditions are met: * 10 | * * 11 | * * Redistributions of source code must retain the above copyright notice, this list of conditions, and the * 12 | * following disclaimer. * 13 | * * 14 | * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the * 15 | * following disclaimer in the documentation and/or other materials provided with the distribution. * 16 | * * 17 | * * Neither the name of the author nor the names of any contributors may be used to endorse or promote products * 18 | * derived from this software without specific prior written permission. * 19 | * * 20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * 22 | * THE AUTHORS BE HELD LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 23 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * 24 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 26 | * POSSIBILITY OF SUCH DAMAGE. * 27 | * * 28 | ***********************************************************************************************************************/ 29 | 30 | /** 31 | @file 32 | @author Andrew D. Zonenberg 33 | @brief Declaration of WFMImportFilter 34 | */ 35 | #ifndef WFMImportFilter_h 36 | #define WFMImportFilter_h 37 | 38 | class WFMImportFilter : public ImportFilter 39 | { 40 | public: 41 | WFMImportFilter(const std::string& color); 42 | 43 | static std::string GetProtocolName(); 44 | 45 | PROTOCOL_DECODER_INITPROC(WFMImportFilter) 46 | 47 | protected: 48 | void OnFileNameChanged(); 49 | }; 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /scopeprotocols/shaders/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | function(add_compute_shaders target) 2 | cmake_parse_arguments(PARSE_ARGV 1 arg "" "" "SOURCES") 3 | 4 | set(spvfiles "") 5 | 6 | foreach(source ${arg_SOURCES}) 7 | get_filename_component(base ${source} NAME_WE) 8 | 9 | set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${base}.spv) 10 | set(spvfiles ${spvfiles} ${outfile}) 11 | 12 | add_custom_command( 13 | OUTPUT ${outfile} 14 | DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${source} 15 | COMMENT "Compile shader ${base}" 16 | COMMAND ${Vulkan_GLSLC_EXECUTABLE} --target-env=vulkan1.0 -c ${CMAKE_CURRENT_SOURCE_DIR}/${source} -g -o ${outfile}) 17 | 18 | install(FILES ${outfile} DESTINATION share/ngscopeclient/shaders) 19 | 20 | endforeach() 21 | 22 | add_custom_target(${target} 23 | COMMAND ${CMAKE_COMMAND} -E true 24 | SOURCES ${spvfiles} 25 | ) 26 | 27 | endfunction() 28 | 29 | add_compute_shaders( 30 | protocolshaders 31 | SOURCES 32 | AddFilter.glsl 33 | BlackmanHarrisWindow.glsl 34 | ComplexBlackmanHarrisWindow.glsl 35 | ComplexCosineSumWindow.glsl 36 | ComplexRectangularWindow.glsl 37 | ComplexSpectrogramPostprocess.glsl 38 | ComplexToLogMagnitude.glsl 39 | ComplexToMagnitude.glsl 40 | CosineSumWindow.glsl 41 | DeEmbedOutOfPlace.glsl 42 | DeEmbedNormalization.glsl 43 | FIRFilter.glsl 44 | SpectrogramPostprocess.glsl 45 | SubtractFilter.glsl 46 | SubtractInPlace.glsl 47 | SubtractOutOfPlace.glsl 48 | UpsampleFilter.glsl 49 | WaterfallFilter.glsl 50 | ) 51 | 52 | add_dependencies(scopeprotocols protocolshaders) 53 | --------------------------------------------------------------------------------