OpenHantek
scopesettings.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 
3 #pragma once
4 
5 #include <QCoreApplication>
6 #include <QPointF>
7 
9 #include "hantekdso/enums.h"
11 #include "viewconstants.h"
12 #include <vector>
13 
14 
18  QPointF pos[ 2 ] = { { -1.0, -1.0 }, { 1.0, 1.0 } };
19 };
20 
24  double frequencybase = 1e3;
26 
27  int recordLength = 0;
28  double timebase = 1e-3;
29  double maxTimebase = 1;
30 #ifdef Q_PROCESSOR_ARM
31  // RPi: Not more often than every 10 ms
32  double acquireInterval = 0.010;
33 #else
34  // other PC: Not more often than every 1 ms
35  double acquireInterval = 0.001;
36 #endif
37  double samplerate = 1e6;
38  int dotsOnScreen = 0;
39  double calfreq = 1e3;
40 };
41 
46  double position = 0.5;
48  int source = 0;
49  int smooth = 0;
50 };
51 
54  QString name;
55  bool used = false;
56  bool visible = false;
58 };
59 
62  double offset = 0.0;
63  double magnitude = 20.0;
64 };
65 
68  double spectrumReference = 0.0;
69  bool calculateDummyLoad = false;
70  unsigned dummyLoad = 50;
71  QString dBsuffixStrings[ 3 ] = { QCoreApplication::translate( "DsoSettingsScopeAnalysis", "V" ),
72  QCoreApplication::translate( "DsoSettingsScopeAnalysis", "u" ),
73  QCoreApplication::translate( "DsoSettingsScopeAnalysis", "m" ) };
74  int dBsuffixIndex = 0; // dBV is default
75  QString dBsuffix() { // use current index
77  };
78  QString dBsuffix( int index ) {
79  if ( index >= 0 && index < 3 ) // valid suffix index
80  return dBsuffixStrings[ index ]; // show this value
81  else
82  return QString();
83  };
84  bool calculateTHD = false;
85  bool showNoteValue = false;
86 };
87 
91  double offset = 0.0;
92  double trigger = 0.0;
93  unsigned gainStepIndex = 6;
94  unsigned couplingOrMathIndex = 0;
95  bool inverted = false;
96  double probeAttn = 1.0;
97 };
98 
101  std::vector< double > gainSteps = { 2e-2, 5e-2, 1e-1, 2e-1,
102  5e-1, 1e0, 2e0, 5e0 };
103  std::vector< DsoSettingsScopeSpectrum > spectrum;
104  std::vector< DsoSettingsScopeVoltage > voltage;
108 
109  int verboseLevel = 0;
110  int toolTipVisible = 1; // show hints for beginners, can be disabled in settings dialog
111  bool histogram = false;
112  bool hasACcoupling = false;
113  bool hasACmodification = false;
114  bool liveCalibrationActive = false;
115 
116  double gain( unsigned channel ) const { return gainSteps[ voltage[ channel ].gainStepIndex ] * voltage[ channel ].probeAttn; }
117 
118  bool anyUsed( ChannelID channel ) const { return voltage[ channel ].used || spectrum[ channel ].used; }
119 
120  Dso::Coupling coupling( ChannelID channel, const Dso::ControlSpecification *deviceSpecification ) const {
121  return deviceSpecification->couplings[ voltage[ channel ].couplingOrMathIndex ];
122  }
123  // Channels, including math channels
124  ChannelID countChannels() const { return ChannelID( voltage.size() ); }
125 
126  double getMarker( int marker ) const {
127  double x = qBound( MARGIN_LEFT, marker < 2 ? horizontal.cursor.pos[ marker ].x() : 0.0, MARGIN_RIGHT );
128  return x;
129  }
130 
131  void setMarker( unsigned int marker, double value ) {
132  if ( marker < 2 )
133  horizontal.cursor.pos[ marker ].setX( value );
134  }
135 };
Definition: scopesettings.h:17
std::vector< DsoSettingsScopeSpectrum > spectrum
Spectrum analysis settings.
Definition: scopesettings.h:103
DsoSettingsScopeAnalysis analysis
Settings for the analysis.
Definition: scopesettings.h:107
Slope
The slope that causes a trigger.
Definition: enums.h:45
enum DsoSettingsScopeCursor::CursorShape shape
unsigned couplingOrMathIndex
Different index: coupling for real- and mode for math-channels.
Definition: scopesettings.h:94
CursorShape
Definition: scopesettings.h:17
Holds the settings for the spectrum analysis.
Definition: scopesettings.h:61
int source
Channel that is used as trigger source.
Definition: scopesettings.h:48
bool inverted
true if the channel is inverted (mirrored on cross-axis)
Definition: scopesettings.h:95
QPointF pos[2]
Position in div.
Definition: scopesettings.h:18
bool showNoteValue
Definition: scopesettings.h:85
double gain(unsigned channel) const
Definition: scopesettings.h:116
double trigger
Trigger level in V.
Definition: scopesettings.h:92
bool hasACcoupling
Definition: scopesettings.h:112
Coupling
The coupling modes for the channels.
Definition: enums.h:27
bool anyUsed(ChannelID channel) const
Definition: scopesettings.h:118
double maxTimebase
Allow very slow timebases 0.1 ... 10.0 s/div.
Definition: scopesettings.h:29
std::vector< double > gainSteps
The selectable voltage gain steps in V/div.
Definition: scopesettings.h:101
double offset
Vertical offset in divs.
Definition: scopesettings.h:91
bool liveCalibrationActive
Definition: scopesettings.h:114
int dBsuffixIndex
Definition: scopesettings.h:74
QString dBsuffix(int index)
Definition: scopesettings.h:78
int dotsOnScreen
Definition: scopesettings.h:38
double frequencybase
Frequencybase in Hz/div.
Definition: scopesettings.h:24
unsigned dummyLoad
Dummy load in Ohms.
Definition: scopesettings.h:70
#define MARGIN_LEFT
Definition: viewconstants.h:9
ChannelID countChannels() const
Definition: scopesettings.h:124
Holds the settings for the trigger. TODO Use ControlSettingsTrigger.
Definition: scopesettings.h:44
QString dBsuffixStrings[3]
Definition: scopesettings.h:71
#define MARGIN_RIGHT
Definition: viewconstants.h:10
void setMarker(unsigned int marker, double value)
Definition: scopesettings.h:131
int smooth
Don&#39;t trigger on glitches.
Definition: scopesettings.h:49
double calfreq
The frequency of the calibration output.
Definition: scopesettings.h:39
TriggerMode
The different triggering modes.
Definition: enums.h:35
GraphFormat
The possible viewing formats for the graphs on the scope.
Definition: enums.h:18
The standard mode.
Definition: enums.h:19
double probeAttn
attenuation of probe
Definition: scopesettings.h:96
double acquireInterval
Minimal time between captured frames.
Definition: scopesettings.h:35
std::vector< Coupling > couplings
Definition: controlspecification.h:64
double offset
Vertical offset in divs.
Definition: scopesettings.h:62
DsoSettingsScopeCursor cursor
Definition: scopesettings.h:57
bool hasACmodification
Definition: scopesettings.h:113
bool calculateDummyLoad
Definition: scopesettings.h:69
Dso::TriggerMode mode
Automatic, normal or single trigger.
Definition: scopesettings.h:45
Dso::GraphFormat format
Graph drawing mode of the scope.
Definition: scopesettings.h:23
Definition: scopesettings.h:17
Dso::Coupling coupling(ChannelID channel, const Dso::ControlSpecification *deviceSpecification) const
Definition: scopesettings.h:120
DsoSettingsScopeHorizontal horizontal
Settings for the horizontal axis.
Definition: scopesettings.h:105
double position
Horizontal position for pretrigger (middle of screen)
Definition: scopesettings.h:46
double getMarker(int marker) const
Definition: scopesettings.h:126
Holds the cursor parameters.
Definition: scopesettings.h:16
DsoSettingsScopeTrigger trigger
Settings for the trigger.
Definition: scopesettings.h:106
Stores the specifications of the currently connected device.
Definition: controlspecification.h:42
Holds the settings for the horizontal axis.
Definition: scopesettings.h:22
int toolTipVisible
Definition: scopesettings.h:110
Holds the settings for the power and frequency analysis.
Definition: scopesettings.h:67
From lower to higher voltage.
bool used
true if the channel is used (either visible or input for math etc.)
Definition: scopesettings.h:55
bool histogram
Definition: scopesettings.h:111
int recordLength
Sample count.
Definition: scopesettings.h:27
int verboseLevel
Definition: scopesettings.h:109
unsigned ChannelID
Definition: types.h:6
double timebase
Timebase in s/div.
Definition: scopesettings.h:28
Dso::Slope slope
Rising or falling edge causes trigger.
Definition: scopesettings.h:47
bool calculateTHD
Definition: scopesettings.h:84
Automatic without trigger event.
double samplerate
The samplerate of the oscilloscope in S.
Definition: scopesettings.h:37
unsigned gainStepIndex
The vertical resolution in V/div (default = 1.0)
Definition: scopesettings.h:93
Holds the settings for the oscilloscope.
Definition: scopesettings.h:100
DsoSettingsScopeCursor cursor
Definition: scopesettings.h:25
Definition: scopesettings.h:17
std::vector< DsoSettingsScopeVoltage > voltage
Settings for the normal graphs.
Definition: scopesettings.h:104
Definition: scopesettings.h:17
bool visible
true if the channel is turned on
Definition: scopesettings.h:56
QString name
Name of this channel.
Definition: scopesettings.h:54
Holds the settings for the normal voltage graphs. TODO Use ControlSettingsVoltage.
Definition: scopesettings.h:90
double spectrumReference
Reference level for spectrum in dBV.
Definition: scopesettings.h:68
QString dBsuffix()
Definition: scopesettings.h:75
Base for DsoSettingsScopeSpectrum and DsoSettingsScopeVoltage.
Definition: scopesettings.h:53
double magnitude
The vertical resolution in dB/div.
Definition: scopesettings.h:63