ngscopeclient 0.1-dev+51fbda87c
AntikernelLabsTriggerCrossbar.h
Go to the documentation of this file.
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
37#ifndef AntikernelLabsTriggerCrossbar_h
38#define AntikernelLabsTriggerCrossbar_h
39
46 : public virtual SCPIBERT
47 , public virtual SCPIDevice
48 , public virtual SwitchMatrix
49 , public virtual SCPIOscilloscope
50{
51public:
54
55 virtual void PostCtorInit() override;
56
57 virtual bool AcquireData() override;
58
59 //Device information
60 virtual unsigned int GetInstrumentTypes() const override;
61 virtual uint32_t GetInstrumentTypesForChannel(size_t i) const override;
62
63 virtual void SetChannelDisplayName(size_t i, std::string name) override;
64
65 //TX pattern generator configuration
66 virtual Pattern GetTxPattern(size_t i) override;
67 virtual void SetTxPattern(size_t i, Pattern pattern) override;
68 virtual std::vector<Pattern> GetAvailableTxPatterns(size_t i) override;
69 virtual bool IsCustomPatternPerChannel() override;
70 virtual size_t GetCustomPatternLength() override;
71 virtual void SetGlobalCustomPattern(uint64_t pattern) override;
72 virtual uint64_t GetGlobalCustomPattern() override;
73
74 //TX driver configuration
75 virtual bool GetTxInvert(size_t i) override;
76 virtual void SetTxInvert(size_t i, bool invert) override;
77 virtual std::vector<float> GetAvailableTxDriveStrengths(size_t i) override;
78 virtual float GetTxDriveStrength(size_t i) override;
79 virtual void SetTxDriveStrength(size_t i, float drive) override;
80 virtual void SetTxEnable(size_t i, bool enable) override;
81 virtual bool GetTxEnable(size_t i) override;
82 virtual float GetTxPreCursor(size_t i) override;
83 virtual void SetTxPreCursor(size_t i, float precursor) override;
84 virtual float GetTxPostCursor(size_t i) override;
85 virtual void SetTxPostCursor(size_t i, float postcursor) override;
86
87 //RX input buffer configuration
88 virtual bool GetRxInvert(size_t i) override;
89 virtual void SetRxInvert(size_t i, bool invert) override;
90 virtual bool HasRxCTLE() override;
91 virtual std::vector<float> GetRxCTLEGainSteps() override;
92 virtual size_t GetRxCTLEGainStep(size_t i) override;
93 virtual void SetRxCTLEGainStep(size_t i, size_t step) override;
94
95 //RX pattern checker configuration
96 virtual Pattern GetRxPattern(size_t i) override;
97 virtual void SetRxPattern(size_t i, Pattern pattern) override;
98 virtual std::vector<Pattern> GetAvailableRxPatterns(size_t i) override;
99
100 //RX data readout
101 virtual bool GetRxCdrLockState(size_t i) override;
102 virtual void MeasureHBathtub(size_t i) override;
103 virtual void MeasureEye(size_t i) override;
104 virtual void SetBERIntegrationLength(int64_t uis) override;
105 virtual int64_t GetBERIntegrationLength() override;
106 virtual void SetBERSamplingPoint(size_t i, int64_t dx, float dy) override;
107 virtual void GetBERSamplingPoint(size_t i, int64_t& dx, float& dy) override;
108 virtual bool HasConfigurableScanDepth() override;
109 virtual std::vector<int64_t> GetScanDepths(size_t i) override;
110 virtual int64_t GetScanDepth(size_t i) override;
111 virtual void SetScanDepth(size_t i, int64_t depth) override;
112 virtual int64_t GetExpectedBathtubCaptureTime(size_t i) override;
113 virtual int64_t GetExpectedEyeCaptureTime(size_t i) override;
114 virtual bool IsEyeScanInProgress(size_t i) override;
115 virtual float GetScanProgress(size_t i) override;
116 virtual bool IsHBathtubScanInProgress(size_t i) override;
117
118 //Reference clock output
119 virtual size_t GetRefclkOutMux() override;
120 virtual void SetRefclkOutMux(size_t i) override;
121 virtual std::vector<std::string> GetRefclkOutMuxNames() override;
122 virtual int64_t GetRefclkOutFrequency() override;
123 virtual int64_t GetRefclkInFrequency() override;
124
125 //Timebase
126 virtual bool IsDataRatePerChannel() override;
127 virtual int64_t GetDataRate(size_t i) override;
128 virtual void SetDataRate(size_t i, int64_t rate) override;
129 virtual std::vector<int64_t> GetAvailableDataRates() override;
130 virtual void SetUseExternalRefclk(bool external) override;
131 virtual bool GetUseExternalRefclk() override;
132 virtual bool HasRefclkIn() override;
133 virtual bool HasRefclkOut() override;
134
135 //Switch matrix
136 virtual void SetMuxPath(size_t dstchan, size_t srcchan) override;
137 virtual void SetMuxPathOpen(size_t dstchan) override;
138 virtual bool MuxHasConfigurableDrive(size_t dstchan) override;
139 virtual float GetMuxOutputDrive(size_t dstchan) override;
140 virtual void SetMuxOutputDrive(size_t dstchan, float v) override;
141 virtual bool MuxHasConfigurableThreshold(size_t dstchan) override;
142 virtual float GetMuxInputThreshold(size_t dstchan) override;
143 virtual void SetMuxInputThreshold(size_t dstchan, float v) override;
144
145 //Oscilloscope/LA
146 virtual bool IsChannelEnabled(size_t i) override;
147 virtual void EnableChannel(size_t i) override;
148 virtual void DisableChannel(size_t i) override;
149 virtual OscilloscopeChannel::CouplingType GetChannelCoupling(size_t i) override;
150 virtual void SetChannelCoupling(size_t i, OscilloscopeChannel::CouplingType type) override;
151 virtual std::vector<OscilloscopeChannel::CouplingType> GetAvailableCouplings(size_t i) override;
152 virtual double GetChannelAttenuation(size_t i) override;
153 virtual void SetChannelAttenuation(size_t i, double atten) override;
154 virtual unsigned int GetChannelBandwidthLimit(size_t i) override;
155 virtual void SetChannelBandwidthLimit(size_t i, unsigned int limit_mhz) override;
156 virtual OscilloscopeChannel* GetExternalTrigger() override;
157 virtual float GetChannelVoltageRange(size_t i, size_t stream) override;
158 virtual void SetChannelVoltageRange(size_t i, size_t stream, float range) override;
159 virtual float GetChannelOffset(size_t i, size_t stream) override;
160 virtual void SetChannelOffset(size_t i, size_t stream, float offset) override;
161 virtual Oscilloscope::TriggerMode PollTrigger() override;
162 virtual void PushTrigger() override;
163 virtual void PullTrigger() override;
164 virtual void Start() override;
165 virtual void StartSingleTrigger() override;
166 virtual void Stop() override;
167 virtual void ForceTrigger() override;
168 virtual bool IsTriggerArmed() override;
169 virtual std::vector<uint64_t> GetSampleRatesNonInterleaved() override;
170 virtual std::vector<uint64_t> GetSampleRatesInterleaved() override;
171 virtual uint64_t GetSampleRate() override;
172 virtual bool IsInterleaving() override;
173 virtual bool SetInterleaving(bool combine) override;
174 virtual bool CanInterleave() override;
175 virtual std::set< InterleaveConflict > GetInterleaveConflicts() override;
176 virtual std::vector<uint64_t> GetSampleDepthsNonInterleaved() override;
177 virtual std::vector<uint64_t> GetSampleDepthsInterleaved() override;
178 virtual uint64_t GetSampleDepth() override;
179 virtual void SetSampleDepth(uint64_t depth) override;
180 virtual void SetSampleRate(uint64_t rate) override;
181 virtual void SetTriggerOffset(int64_t offset) override;
182 virtual int64_t GetTriggerOffset() override;
183
184protected:
185
186 size_t m_triggerInChannelBase;
187 size_t m_triggerBidirChannelBase;
188 size_t m_triggerOutChannelBase;
189 size_t m_txChannelBase;
190 size_t m_rxChannelBase;
191
197 ssize_t GetScanHalfWidth(size_t i)
198 { return 16 << m_rxClkDiv[i - m_rxChannelBase]; }
199
200 //Cached settings for trigger channels
201 float m_trigDrive[12];
202 float m_trigThreshold[12];
203
204 //Cached settings for bert channels
205 Pattern m_txPattern[2];
206 //Pattern m_rxPattern[2];
207 bool m_txInvert[2];
208 bool m_rxInvert[2];
209 float m_txDrive[2];
210 bool m_txEnable[2];
211 float m_txPreCursor[2];
212 float m_txPostCursor[2];
213 int64_t m_scanDepth[2];
214 /*
215 bool m_rxLock[4];
216 uint64_t m_txCustomPattern;
217 size_t m_rxCtleGainSteps[4];
218 int64_t m_integrationLength;
219 int64_t m_sampleX[4];
220 float m_sampleY[4];
221 */
222 uint64_t m_txDataRate[2];
223 uint64_t m_rxDataRate[2];
224 int64_t m_rxClkDiv[2];
225
232
233 std::atomic<bool> m_bathtubScanInProgress;
234 std::atomic<bool> m_eyeScanInProgress;
235 std::atomic<size_t> m_activeScanChannel;
236 std::atomic<float> m_activeScanProgress;
237
238 //Logic analyzer config
239 bool m_laChannelEnabled[2];
240 size_t m_maxLogicDepth;
241 bool m_triggerArmed;
242 bool m_triggerOneShot;
243 int64_t m_triggerOffsetSamples;
244
245public:
246 static std::string GetDriverNameInternal();
247 BERT_INITPROC(AntikernelLabsTriggerCrossbar)
248};
249
250#endif
An AKL-TXB1 trigger crossbar.
Definition: AntikernelLabsTriggerCrossbar.h:50
virtual void SetTxPreCursor(size_t i, float precursor) override
Set the pre-cursor equalizer tap for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:747
virtual unsigned int GetInstrumentTypes() const override
Returns a bitfield describing the set of instrument types that this instrument supports.
Definition: AntikernelLabsTriggerCrossbar.cpp:467
virtual void SetMuxOutputDrive(size_t dstchan, float v) override
Sets the drive level of an output channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:419
virtual size_t GetRefclkOutMux() override
Gets the currently selected reference clock output mux setting.
Definition: AntikernelLabsTriggerCrossbar.cpp:783
virtual void SetMuxPath(size_t dstchan, size_t srcchan) override
Sets the mux selector for an output channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:367
virtual bool HasConfigurableScanDepth() override
Determines whether this instrument has configurable integration depth for eye / bathtub scans.
Definition: AntikernelLabsTriggerCrossbar.cpp:964
virtual bool CanInterleave() override
Returns true if we have no interleave conflicts, false if we have conflicts.
Definition: AntikernelLabsTriggerCrossbar.cpp:1398
virtual std::vector< int64_t > GetAvailableDataRates() override
Gets the list of available data rates, in symbols/sec.
Definition: AntikernelLabsTriggerCrossbar.cpp:909
virtual void SetBERIntegrationLength(int64_t uis) override
Set the integration period for BER measurements.
Definition: AntikernelLabsTriggerCrossbar.cpp:946
virtual bool HasRefclkIn() override
Returns true if this instrument has a reference clock input port.
Definition: AntikernelLabsTriggerCrossbar.cpp:773
virtual uint64_t GetSampleRate() override
Gets the current sampling rate (in Hz) of this scope.
Definition: AntikernelLabsTriggerCrossbar.cpp:1502
virtual void SetTxPattern(size_t i, Pattern pattern) override
Sets the transmit pattern for the selected channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:616
virtual bool MuxHasConfigurableThreshold(size_t dstchan) override
Checks if an input channel has configurable voltage level.
Definition: AntikernelLabsTriggerCrossbar.cpp:438
virtual void SetChannelDisplayName(size_t i, std::string name) override
Sets the hardware display name for a channel. This is an arbitrary user-selected string.
Definition: AntikernelLabsTriggerCrossbar.cpp:485
virtual void StartSingleTrigger() override
Arms the trigger for a single acquistion.
Definition: AntikernelLabsTriggerCrossbar.cpp:1473
virtual void SetRxPattern(size_t i, Pattern pattern) override
Sets the receive pattern for the selected channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:500
virtual bool GetRxCdrLockState(size_t i) override
Gets the RX CDR lock state (true=lock, false=unlock)
Definition: AntikernelLabsTriggerCrossbar.cpp:958
virtual std::vector< float > GetAvailableTxDriveStrengths(size_t i) override
Gets the list of available drive strengths (in volts) for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:685
virtual void SetRxInvert(size_t i, bool invert) override
Sets the receive invert flag for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:547
virtual void PushTrigger() override
Pushes changes made to m_trigger to the instrument.
Definition: AntikernelLabsTriggerCrossbar.cpp:1461
virtual int64_t GetTriggerOffset() override
Gets the trigger offset.
Definition: AntikernelLabsTriggerCrossbar.cpp:1535
virtual float GetMuxOutputDrive(size_t dstchan) override
Gets the drive level of an output channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:405
virtual void SetRxCTLEGainStep(size_t i, size_t step) override
Sets the RX CTLE gain index.
Definition: AntikernelLabsTriggerCrossbar.cpp:589
virtual int64_t GetExpectedBathtubCaptureTime(size_t i) override
Returns the expected time, in femtoseconds, to complete a bathtub scan with the current settings.
Definition: AntikernelLabsTriggerCrossbar.cpp:996
virtual void SetScanDepth(size_t i, int64_t depth) override
Set the configured scan depth for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:985
virtual void Stop() override
Stops triggering.
Definition: AntikernelLabsTriggerCrossbar.cpp:1490
virtual OscilloscopeChannel::CouplingType GetChannelCoupling(size_t i) override
Gets the coupling used for an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1315
virtual bool GetRxInvert(size_t i) override
Gets the transmit invert flag for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:541
virtual std::vector< Pattern > GetAvailableRxPatterns(size_t i) override
Gets the list of available receive patterns for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:528
ssize_t GetScanHalfWidth(size_t i)
Returns the number of points on either side of the center for a full eye/bathtub scan.
Definition: AntikernelLabsTriggerCrossbar.h:197
virtual void SetRefclkOutMux(size_t i) override
Sets the reference clock output mux.
Definition: AntikernelLabsTriggerCrossbar.cpp:788
virtual void Start() override
Starts the instrument in continuous trigger mode.
Definition: AntikernelLabsTriggerCrossbar.cpp:1466
virtual unsigned int GetChannelBandwidthLimit(size_t i) override
Gets the bandwidth limit for an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1343
virtual void SetChannelBandwidthLimit(size_t i, unsigned int limit_mhz) override
Sets the bandwidth limit for an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1348
virtual std::vector< Pattern > GetAvailableTxPatterns(size_t i) override
Gets the list of available transmit patterns for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:598
virtual bool HasRefclkOut() override
Returns true if this instrument has a reference clock output port.
Definition: AntikernelLabsTriggerCrossbar.cpp:778
virtual float GetScanProgress(size_t i) override
Gets the estimated completion status (0-1) of the current scan.
Definition: AntikernelLabsTriggerCrossbar.cpp:938
virtual float GetMuxInputThreshold(size_t dstchan) override
Gets the threshold level of an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:443
virtual void GetBERSamplingPoint(size_t i, int64_t &dx, float &dy) override
Get the sampling point for BER measurements.
Definition: AntikernelLabsTriggerCrossbar.cpp:840
virtual uint64_t GetSampleDepth() override
Gets the current sample depth of this scope.
Definition: AntikernelLabsTriggerCrossbar.cpp:1514
bool m_loadInProgress
True if in a constructor or similar initialization path (getting hardware state)
Definition: AntikernelLabsTriggerCrossbar.h:231
virtual float GetTxPostCursor(size_t i) override
Get the post-cursor equalizer tap for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:756
virtual void DisableChannel(size_t i) override
Turn a channel off, given the index.
Definition: AntikernelLabsTriggerCrossbar.cpp:1431
virtual void SetUseExternalRefclk(bool external) override
Sets the reference clock source (internal or external)
Definition: AntikernelLabsTriggerCrossbar.cpp:808
virtual Pattern GetTxPattern(size_t i) override
Gets the currently selected transmit pattern for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:611
virtual void SetChannelOffset(size_t i, size_t stream, float offset) override
Sets the offset for a given channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1376
virtual void SetTxInvert(size_t i, bool invert) override
Sets the transmit invert flag for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:675
virtual uint32_t GetInstrumentTypesForChannel(size_t i) const override
Returns a bitfield describing the set of instrument types that a given channel supports.
Definition: AntikernelLabsTriggerCrossbar.cpp:472
virtual bool AcquireData() override
Pull data from the instrument.
Definition: AntikernelLabsTriggerCrossbar.cpp:1214
virtual bool IsHBathtubScanInProgress(size_t i) override
Returns true if a horizontal bathtub scan is in progress.
Definition: AntikernelLabsTriggerCrossbar.cpp:933
virtual std::vector< OscilloscopeChannel::CouplingType > GetAvailableCouplings(size_t i) override
Gets the set of legal coupling values for an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1326
virtual void SetTxEnable(size_t i, bool enable) override
Sets the transmit enable flag for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:727
virtual void SetGlobalCustomPattern(uint64_t pattern) override
Sets the global custom pattern (only valid if IsCustomPatternPerChannel returns false)
Definition: AntikernelLabsTriggerCrossbar.cpp:658
virtual std::vector< uint64_t > GetSampleDepthsInterleaved() override
Get the legal memory depths for this scope in combined-channels mode.
Definition: AntikernelLabsTriggerCrossbar.cpp:1409
virtual std::vector< std::string > GetRefclkOutMuxNames() override
Gets the list of available reference clock mux settings.
Definition: AntikernelLabsTriggerCrossbar.cpp:792
virtual void SetTxDriveStrength(size_t i, float drive) override
Set the drive strength for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:712
virtual void SetMuxInputThreshold(size_t dstchan, float v) override
Sets the threshold level of an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:450
virtual void SetDataRate(size_t i, int64_t rate) override
Sets the data rate (in symbols/sec)
Definition: AntikernelLabsTriggerCrossbar.cpp:864
virtual double GetChannelAttenuation(size_t i) override
Gets the probe attenuation for an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1334
virtual Oscilloscope::TriggerMode PollTrigger() override
Checks the curent trigger status.
Definition: AntikernelLabsTriggerCrossbar.cpp:1438
virtual void MeasureEye(size_t i) override
Acquires an eye pattern.
Definition: AntikernelLabsTriggerCrossbar.cpp:1097
virtual std::vector< uint64_t > GetSampleDepthsNonInterleaved() override
Get the legal memory depths for this scope in all-channels mode.
Definition: AntikernelLabsTriggerCrossbar.cpp:1507
virtual void SetTriggerOffset(int64_t offset) override
Sets the trigger offset.
Definition: AntikernelLabsTriggerCrossbar.cpp:1527
virtual int64_t GetScanDepth(size_t i) override
Get the configured scan depth for a channel, in UIs per sample/pixel.
Definition: AntikernelLabsTriggerCrossbar.cpp:978
virtual bool IsDataRatePerChannel() override
Determines whether the TX/RX clock is a per-instrument or per-channel setting.
Definition: AntikernelLabsTriggerCrossbar.cpp:848
virtual void SetTxPostCursor(size_t i, float postcursor) override
Set the post-cursor equalizer tap for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:761
virtual bool MuxHasConfigurableDrive(size_t dstchan) override
Checks if an output channel has configurable voltage level.
Definition: AntikernelLabsTriggerCrossbar.cpp:390
virtual std::vector< int64_t > GetScanDepths(size_t i) override
Returns the list of integration depths for eye / bathtub scans.
Definition: AntikernelLabsTriggerCrossbar.cpp:969
virtual bool IsTriggerArmed() override
Checks if the trigger is currently armed.
Definition: AntikernelLabsTriggerCrossbar.cpp:1480
virtual bool IsCustomPatternPerChannel() override
Determines whether custom patterns are settable per channel, or shared by the whole device.
Definition: AntikernelLabsTriggerCrossbar.cpp:648
virtual size_t GetCustomPatternLength() override
Returns the number of bits in a custom pattern (may change with line rate)
Definition: AntikernelLabsTriggerCrossbar.cpp:653
virtual int64_t GetDataRate(size_t i) override
Gets the currently selected line rate (in symbols/sec)
Definition: AntikernelLabsTriggerCrossbar.cpp:853
AntikernelLabsTriggerCrossbar(SCPITransport *transport)
Initialize the driver.
Definition: AntikernelLabsTriggerCrossbar.cpp:55
virtual Pattern GetRxPattern(size_t i) override
Gets the currently selected receive pattern for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:494
virtual bool IsChannelEnabled(size_t i) override
Checks if a channel is enabled in hardware.
Definition: AntikernelLabsTriggerCrossbar.cpp:1417
virtual bool HasRxCTLE() override
Determines whether the input buffer has a continuous-time linear equalizer.
Definition: AntikernelLabsTriggerCrossbar.cpp:557
virtual std::vector< uint64_t > GetSampleRatesNonInterleaved() override
Get the legal sampling rates (in Hz) for this scope in all-channels mode.
Definition: AntikernelLabsTriggerCrossbar.cpp:1495
virtual size_t GetRxCTLEGainStep(size_t i) override
Gets the currently selected RX CTLE gain index.
Definition: AntikernelLabsTriggerCrossbar.cpp:583
virtual void SetMuxPathOpen(size_t dstchan) override
Removes a mux path for an output channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:382
virtual std::vector< uint64_t > GetSampleRatesInterleaved() override
Get the legal sampling rates (in Hz) for this scope in combined-channels mode.
Definition: AntikernelLabsTriggerCrossbar.cpp:1383
virtual bool GetTxInvert(size_t i) override
Gets the transmit invert flag for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:670
virtual OscilloscopeChannel * GetExternalTrigger() override
Returns the external trigger input channel, if we have one.
Definition: AntikernelLabsTriggerCrossbar.cpp:1354
virtual void SetSampleRate(uint64_t rate) override
Sets the sample rate of the scope, in Hz.
Definition: AntikernelLabsTriggerCrossbar.cpp:1523
virtual int64_t GetRefclkInFrequency() override
Gets the refclk in frequency, in Hz, required to generate the currently selected data rate.
Definition: AntikernelLabsTriggerCrossbar.cpp:803
virtual float GetChannelOffset(size_t i, size_t stream) override
Gets the offset, in volts, for a given channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1371
virtual void ForceTrigger() override
Forces a single acquisition as soon as possible.
Definition: AntikernelLabsTriggerCrossbar.cpp:1485
virtual float GetChannelVoltageRange(size_t i, size_t stream) override
Gets the range of the current channel configuration.
Definition: AntikernelLabsTriggerCrossbar.cpp:1359
virtual void PostCtorInit() override
Does any initialization that can't happen during the constructor.
Definition: AntikernelLabsTriggerCrossbar.cpp:81
virtual int64_t GetExpectedEyeCaptureTime(size_t i) override
Returns the expected time, in femtoseconds, to complete an eye scan with the current settings.
Definition: AntikernelLabsTriggerCrossbar.cpp:1005
static std::string GetDriverNameInternal()
Returns the constant driver name "akl.crossbar".
Definition: AntikernelLabsTriggerCrossbar.cpp:462
virtual int64_t GetRefclkOutFrequency() override
Gets the currently selected refclk out frequency, in Hz.
Definition: AntikernelLabsTriggerCrossbar.cpp:798
virtual void SetChannelVoltageRange(size_t i, size_t stream, float range) override
Sets the range of the current channel configuration.
Definition: AntikernelLabsTriggerCrossbar.cpp:1364
virtual void SetSampleDepth(uint64_t depth) override
Sets the sample depth of the scope.
Definition: AntikernelLabsTriggerCrossbar.cpp:1519
virtual void SetChannelCoupling(size_t i, OscilloscopeChannel::CouplingType type) override
Sets the coupling used for an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1320
virtual bool GetTxEnable(size_t i) override
Gets the transmit enable flag for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:737
virtual float GetTxDriveStrength(size_t i) override
Get the drive strength for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:707
virtual void EnableChannel(size_t i) override
Turn a channel on, given the index.
Definition: AntikernelLabsTriggerCrossbar.cpp:1424
virtual float GetTxPreCursor(size_t i) override
Get the pre-cursor equalizer tap for a channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:742
virtual int64_t GetBERIntegrationLength() override
Get the integration period for BER measurements.
Definition: AntikernelLabsTriggerCrossbar.cpp:952
virtual bool IsInterleaving() override
Checks if the scope is currently combining channels.
Definition: AntikernelLabsTriggerCrossbar.cpp:1388
virtual bool GetUseExternalRefclk() override
Sets the reference clock source.
Definition: AntikernelLabsTriggerCrossbar.cpp:812
virtual bool IsEyeScanInProgress(size_t i) override
Returns true if an eye scan is in progress.
Definition: AntikernelLabsTriggerCrossbar.cpp:928
virtual void SetBERSamplingPoint(size_t i, int64_t dx, float dy) override
Set the sampling point for BER measurements.
Definition: AntikernelLabsTriggerCrossbar.cpp:820
virtual uint64_t GetGlobalCustomPattern() override
Gets the global custom pattern (only valid if IsCustomPatternPerChannel returns false)
Definition: AntikernelLabsTriggerCrossbar.cpp:662
virtual void PullTrigger() override
Updates m_trigger with any changes made from the instrument side.
Definition: AntikernelLabsTriggerCrossbar.cpp:1449
virtual void SetChannelAttenuation(size_t i, double atten) override
Sets the probe attenuation used for an input channel.
Definition: AntikernelLabsTriggerCrossbar.cpp:1339
virtual void MeasureHBathtub(size_t i) override
Acquires a bathtub curve.
Definition: AntikernelLabsTriggerCrossbar.cpp:1011
virtual bool SetInterleaving(bool combine) override
Configures the scope to combine channels.
Definition: AntikernelLabsTriggerCrossbar.cpp:1393
virtual std::vector< float > GetRxCTLEGainSteps() override
Get the list of available RX CTLE gain values (in dB)
Definition: AntikernelLabsTriggerCrossbar.cpp:562
Pattern
Set of patterns we can generate or accept.
Definition: BERT.h:54
A single channel on an oscilloscope.
Definition: OscilloscopeChannel.h:49
TriggerMode
Definition: Oscilloscope.h:411
An SCPI-based BERT.
Definition: SCPIBERT.h:38
An SCPI-based device.
Definition: SCPIDevice.h:37
An SCPI-based oscilloscope.
Definition: SCPIOscilloscope.h:38
Abstraction of a transport layer for moving SCPI data between endpoints.
Definition: SCPITransport.h:47
Base class for switch matrixes.
Definition: SwitchMatrix.h:47