Commit 926ac526f557ad1126fb0de54c2eded59af1a180

Authored by oliverhaag
1 parent 66350331

Small bugfix and documentation update

openhantek/ChangeLog
... ... @@ -23,4 +23,8 @@
23 23 * DsoControl class could control non-Hantek DSOs too
24 24 * Added reference level and minimum magnitude for spectrum analysis to settings
25 25 * Made lower timebases available
26   -* Spectrum and math graphs can be shown without enabling the voltage graph too
27 26 \ No newline at end of file
  27 +* Spectrum and math graphs can be shown without enabling the voltage graph too
  28 +
  29 +2010-08-06 Oliver Haag <oliver.haag@gmail.com>
  30 +* Bugfix: Mode shown below scope instead of coupling for the math channel
  31 +* Documentation updated
28 32 \ No newline at end of file
... ...
openhantek/mainpage.dox
... ... @@ -3,7 +3,7 @@
3 3 \mainpage OpenHantek Developer Documentation
4 4  
5 5 \section sec_introduction Introduction
6   -OpenHantek is a free software for Hantek (Voltcraft/Darkwire/Protek/Acetech) USB DSOs based on HantekDSO. The UI is written in C++/Qt 4 and uses OpenGL to draw the graphs.
  6 +OpenHantek is a free software for %Hantek (Voltcraft/Darkwire/Protek/Acetech) USB DSOs based on HantekDSO. The UI is written in C++/Qt 4 and uses OpenGL to draw the graphs.
7 7  
8 8 \section sec_compiling Compiling from source
9 9 \subsection ssec_dependencies Dependencies
... ...
openhantek/src/colorbox.h
... ... @@ -51,7 +51,7 @@ class ColorBox : public QPushButton {
51 51 QColor color;
52 52  
53 53 signals:
54   - void colorChanged(QColor color);
  54 + void colorChanged(QColor color); ///< The color has been changed
55 55 };
56 56  
57 57  
... ...
openhantek/src/configdialog.h
... ... @@ -41,9 +41,9 @@
41 41 #define CONFIG_FILE "HKEY_CURRENT_USER\\Software\\paranoiacs.net\\OpenHantek"
42 42 #endif*/
43 43  
44   -#define CONFIG_LIST_WIDTH 128
45   -#define CONFIG_LIST_ITEMHEIGHT 80
46   -#define CONFIG_LIST_ICONSIZE 48
  44 +#define CONFIG_LIST_WIDTH 128 ///< The width of the page selection widget
  45 +#define CONFIG_LIST_ITEMHEIGHT 80 ///< The height of one item in the page selection widget
  46 +#define CONFIG_LIST_ICONSIZE 48 ///< The icon size in the page selection widget
47 47  
48 48  
49 49 class DsoConfigAnalysisPage;
... ...
openhantek/src/constants.h
... ... @@ -45,16 +45,6 @@ namespace Dso {
45 45 };
46 46  
47 47 //////////////////////////////////////////////////////////////////////////////
48   - /// \enum ChannelType constants.h
49   - /// \brief All channels that can be displayed.
50   - /// \todo Get rid of this enum, get the channel count from the oscilloscope
51   - /*enum ChannelType {
52   - CHANNELTYPE_CH, ///< First real channel
53   - CHANNELTYPE_MATH = PHYS_CHANNEL_COUNT, ///< The math channel
54   - CHANNEL_COUNT ///< The total number of channels
55   - };*/
56   -
57   - //////////////////////////////////////////////////////////////////////////////
58 48 /// \enum GraphFormat constants.h
59 49 /// \brief The possible viewing formats for the graphs on the scope.
60 50 enum GraphFormat {
... ...
openhantek/src/dataanalyzer.cpp
... ... @@ -40,7 +40,7 @@
40 40 ////////////////////////////////////////////////////////////////////////////////
41 41 // class HorizontalDock
42 42 /// \brief Initializes the buffers and other variables.
43   -/// \param settings The target settings object.
  43 +/// \param settings The settings that should be used.
44 44 /// \param parent The parent widget.
45 45 DataAnalyzer::DataAnalyzer(DsoSettings *settings, QObject *parent) : QThread(parent) {
46 46 this->settings = settings;
... ... @@ -359,6 +359,11 @@ void DataAnalyzer::run() {
359 359 this->analyzedDataMutex->unlock();
360 360 }
361 361  
  362 +/// \brief Starts the analyzing of new input data.
  363 +/// \param data The data arrays with the input data.
  364 +/// \param size The sizes of the data arrays.
  365 +/// \param samplerate The samplerate for all input data.
  366 +/// \param mutex The mutex for all input data.
362 367 void DataAnalyzer::analyze(const QList<double *> *data, const QList<unsigned int> *size, double samplerate, QMutex *mutex) {
363 368 // Previous analysis still running, drop the new data
364 369 if(this->isRunning())
... ...
openhantek/src/dataanalyzer.h
... ... @@ -43,31 +43,33 @@ class QMutex;
43 43 /// \struct SampleValues dataanalyzer.h
44 44 /// \brief Struct for a array of sample values.
45 45 struct SampleValues {
46   - double *sample;
47   - unsigned int count;
48   - double interval;
  46 + double *sample; ///< Pointer to the array holding the sampling data
  47 + unsigned int count; ///< Number of sample values
  48 + double interval; ///< The interval between two sample values
49 49 };
50 50  
51 51 ////////////////////////////////////////////////////////////////////////////////
52 52 /// \struct SampleData dataanalyzer.h
53 53 /// \brief Struct for the sample value arrays.
54 54 struct SampleData {
55   - SampleValues voltage, spectrum;
  55 + SampleValues voltage; ///< The time-domain voltage levels (V)
  56 + SampleValues spectrum; ///< The frequency-domain power levels (dB)
56 57 };
57 58  
58 59 ////////////////////////////////////////////////////////////////////////////////
59 60 /// \struct AnalyzedData dataanalyzer.h
60 61 /// \brief Struct for the analyzed data.
61 62 struct AnalyzedData {
62   - SampleData samples;
63   - double frequency, amplitude;
  63 + SampleData samples; ///< Voltage and spectrum values
  64 + double frequency; ///< The frequency of the signal
  65 + double amplitude; ///< The amplitude of the signal
64 66 };
65 67  
66 68 ////////////////////////////////////////////////////////////////////////////////
67 69 /// \class DataAnalyzer dataanalyzer.h
68 70 /// \brief Analyzes the data from the dso.
69   -/// Converts the levels into volts, calculates the spectrum and saves offsets
70   -/// and the time-/frequencysteps between two values.
  71 +/// Calculates the spectrum and various data about the signal and saves the
  72 +/// time-/frequencysteps between two values.
71 73 class DataAnalyzer : public QThread {
72 74 Q_OBJECT
73 75  
... ... @@ -80,21 +82,20 @@ class DataAnalyzer : public QThread {
80 82  
81 83 protected:
82 84 void run();
83   -
84   - private:
85   - DsoSettings *settings;
86 85  
87   - QList<AnalyzedData *> analyzedData;
88   - QMutex *analyzedDataMutex;
  86 + DsoSettings *settings; ///< The settings provided by the parent class
  87 +
  88 + QList<AnalyzedData *> analyzedData; ///< The analyzed data for each channel
  89 + QMutex *analyzedDataMutex; ///< A mutex for the analyzed data of all channels
89 90  
90   - unsigned int lastBufferSize;
91   - Dso::WindowFunction lastWindow;
92   - double *window;
  91 + unsigned int lastBufferSize; ///< The buffer size of the previously analyzed data
  92 + Dso::WindowFunction lastWindow; ///< The previously used dft window function
  93 + double *window; ///< The array for the dft window factors
93 94  
94   - QList<double *> waitingData;
95   - QList<unsigned int> waitingDataSize;
96   - double waitingDataSamplerate;
97   - QMutex *waitingDataMutex;
  95 + QList<double *> waitingData; ///< Pointer to input data from device
  96 + QList<unsigned int> waitingDataSize; ///< Number of input data samples
  97 + double waitingDataSamplerate; ///< The samplerate of the input data
  98 + QMutex *waitingDataMutex; ///< A mutex for the input data
98 99  
99 100 public slots:
100 101 void analyze(const QList<double *> *data, const QList<unsigned int> *size, double samplerate, QMutex *mutex);
... ...
openhantek/src/dockwindows.cpp
... ... @@ -174,6 +174,7 @@ void HorizontalDock::formatSelected(int index) {
174 174 // class TriggerDock
175 175 /// \brief Initializes the trigger settings docking window.
176 176 /// \param settings The target settings object.
  177 +/// \param specialTriggers The names of the special trigger sources.
177 178 /// \param parent The parent widget.
178 179 /// \param flags Flags for the window manager.
179 180 TriggerDock::TriggerDock(DsoSettings *settings, const QStringList *specialTriggers, QWidget *parent, Qt::WindowFlags flags) : QDockWidget(tr("Trigger"), parent, flags) {
... ...
openhantek/src/dockwindows.h
... ... @@ -58,15 +58,22 @@ class HorizontalDock : public QDockWidget {
58 58 protected:
59 59 void closeEvent(QCloseEvent *event);
60 60  
61   - QGridLayout *dockLayout;
62   - QWidget *dockWidget;
63   - QLabel *timebaseLabel, *frequencybaseLabel, *formatLabel;
64   - QComboBox *timebaseComboBox, *frequencybaseComboBox, *formatComboBox;
65   -
66   - DsoSettings *settings;
67   -
68   - QList<double> frequencybaseSteps, timebaseSteps;
69   - QStringList frequencybaseStrings, timebaseStrings, formatStrings;
  61 + QGridLayout *dockLayout; ///< The main layout for the dock window
  62 + QWidget *dockWidget; ///< The main widget for the dock window
  63 + QLabel *timebaseLabel; ///< The label for the timebase combobox
  64 + QLabel *frequencybaseLabel; ///< The label for the frequencybase combobox
  65 + QLabel *formatLabel; ///< The label for the format combobox
  66 + QComboBox *timebaseComboBox; ///< Selects the timebase for voltage graphs
  67 + QComboBox *frequencybaseComboBox; ///< Selects the frequencybase for spectrum graphs
  68 + QComboBox *formatComboBox; ///< Selects the way the sampled data is interpreted and shown
  69 +
  70 + DsoSettings *settings; ///< The settings provided by the parent class
  71 +
  72 + QList<double> frequencybaseSteps; ///< The selectable steps for the frequencybase
  73 + QList<double> timebaseSteps; ///< The selectable steps for the timebase
  74 + QStringList frequencybaseStrings; ///< String representations for the frequencybase steps
  75 + QStringList timebaseStrings; ///< String representations for the timebase steps
  76 + QStringList formatStrings; ///< Strings for the formats
70 77  
71 78 protected slots:
72 79 void frequencybaseSelected(int index);
... ... @@ -74,9 +81,9 @@ class HorizontalDock : public QDockWidget {
74 81 void formatSelected(int index);
75 82  
76 83 signals:
77   - void frequencybaseChanged(double frequencybase);
78   - void timebaseChanged(double timebase);
79   - void formatChanged(Dso::GraphFormat format);
  84 + void frequencybaseChanged(double frequencybase); ///< The frequencybase has been changed
  85 + void timebaseChanged(double timebase); ///< The timebase has been changed
  86 + void formatChanged(Dso::GraphFormat format); ///< The viewing format has been changed
80 87 };
81 88  
82 89  
... ... @@ -98,14 +105,21 @@ class TriggerDock : public QDockWidget {
98 105 protected:
99 106 void closeEvent(QCloseEvent *event);
100 107  
101   - QGridLayout *dockLayout;
102   - QWidget *dockWidget;
103   - QLabel *modeLabel, *sweepLabel, *sourceLabel, *slopeLabel;
104   - QComboBox *modeComboBox, *sweepComboBox, *sourceComboBox, *slopeComboBox;
  108 + QGridLayout *dockLayout; ///< The main layout for the dock window
  109 + QWidget *dockWidget; ///< The main widget for the dock window
  110 + QLabel *modeLabel; ///< The label for the trigger mode combobox
  111 + QLabel *sourceLabel; ///< The label for the trigger source combobox
  112 + QLabel *slopeLabel; ///< The label for the trigger slope combobox
  113 + QComboBox *modeComboBox; ///< Select the triggering mode
  114 + QComboBox *sourceComboBox; ///< Select the source for triggering
  115 + QComboBox *slopeComboBox; ///< Select the slope that causes triggering
105 116  
106   - DsoSettings *settings;
  117 + DsoSettings *settings; ///< The settings provided by the parent class
107 118  
108   - QStringList modeStrings, sourceStandardStrings, sourceSpecialStrings, slopeStrings;
  119 + QStringList modeStrings; ///< Strings for the trigger modes
  120 + QStringList sourceStandardStrings; ///< Strings for the standard trigger sources
  121 + QStringList sourceSpecialStrings; ///< Strings for the special trigger sources
  122 + QStringList slopeStrings; ///< Strings for the trigger slopes
109 123  
110 124 protected slots:
111 125 void modeSelected(int index);
... ... @@ -113,9 +127,9 @@ class TriggerDock : public QDockWidget {
113 127 void sourceSelected(int index);
114 128  
115 129 signals:
116   - void modeChanged(Dso::TriggerMode);
117   - void sourceChanged(bool special, unsigned int id);
118   - void slopeChanged(Dso::Slope);
  130 + void modeChanged(Dso::TriggerMode); ///< The trigger mode has been changed
  131 + void sourceChanged(bool special, unsigned int id); ///< The trigger source has been changed
  132 + void slopeChanged(Dso::Slope); ///< The trigger slope has been changed
119 133 };
120 134  
121 135  
... ... @@ -139,17 +153,18 @@ class VoltageDock : public QDockWidget {
139 153 protected:
140 154 void closeEvent(QCloseEvent *event);
141 155  
142   - QGridLayout *dockLayout;
143   - QWidget *dockWidget;
144   - QList<QCheckBox *> usedCheckBox;
145   - QList<QComboBox *> gainComboBox, miscComboBox;
  156 + QGridLayout *dockLayout; ///< The main layout for the dock window
  157 + QWidget *dockWidget; ///< The main widget for the dock window
  158 + QList<QCheckBox *> usedCheckBox; ///< Enable/disable a specific channel
  159 + QList<QComboBox *> gainComboBox; ///< Select the vertical gain for the channels
  160 + QList<QComboBox *> miscComboBox; ///< Select coupling for real and mode for math channels
146 161  
147   - DsoSettings *settings;
  162 + DsoSettings *settings; ///< The settings provided by the parent class
148 163  
149   - QStringList couplingStrings;
150   - QStringList modeStrings;
151   - QList<double> gainSteps;
152   - QStringList gainStrings;
  164 + QStringList couplingStrings; ///< The strings for the couplings
  165 + QStringList modeStrings; ///< The strings for the math mode
  166 + QList<double> gainSteps; ///< The selectable gain steps
  167 + QStringList gainStrings; ///< String representations for the gain steps
153 168  
154 169 protected slots:
155 170 void gainSelected(int index);
... ... @@ -157,10 +172,10 @@ class VoltageDock : public QDockWidget {
157 172 void usedSwitched(bool checked);
158 173  
159 174 signals:
160   - void couplingChanged(unsigned int channel, Dso::Coupling coupling);
161   - void gainChanged(unsigned int channel, double gain);
162   - void modeChanged(Dso::MathMode mode);
163   - void usedChanged(unsigned int channel, bool used);
  175 + void couplingChanged(unsigned int channel, Dso::Coupling coupling); ///< A coupling has been selected
  176 + void gainChanged(unsigned int channel, double gain); ///< A gain has been selected
  177 + void modeChanged(Dso::MathMode mode); ///< The mode for the math channels has been changed
  178 + void usedChanged(unsigned int channel, bool used); ///< A channel has been enabled/disabled
164 179 };
165 180  
166 181  
... ... @@ -182,23 +197,23 @@ class SpectrumDock : public QDockWidget {
182 197 protected:
183 198 void closeEvent(QCloseEvent *event);
184 199  
185   - QGridLayout *dockLayout;
186   - QWidget *dockWidget;
187   - QList<QCheckBox *> usedCheckBox;
188   - QList<QComboBox *> magnitudeComboBox;
  200 + QGridLayout *dockLayout; ///< The main layout for the dock window
  201 + QWidget *dockWidget; ///< The main widget for the dock window
  202 + QList<QCheckBox *> usedCheckBox; ///< Enable/disable spectrum for a channel
  203 + QList<QComboBox *> magnitudeComboBox; ///< Select the vertical magnitude for the spectrums
189 204  
190   - DsoSettings *settings;
  205 + DsoSettings *settings; ///< The settings provided by the parent class
191 206  
192   - QList<double> magnitudeSteps;
193   - QStringList magnitudeStrings;
  207 + QList<double> magnitudeSteps; ///< The selectable magnitude steps
  208 + QStringList magnitudeStrings; ///< String representations for the magnitude steps
194 209  
195 210 public slots:
196 211 void magnitudeSelected(int index);
197 212 void usedSwitched(bool checked);
198 213  
199 214 signals:
200   - void magnitudeChanged(unsigned int channel, double magnitude);
201   - void usedChanged(unsigned int channel, bool used);
  215 + void magnitudeChanged(unsigned int channel, double magnitude); ///< A magnitude has been selected
  216 + void usedChanged(unsigned int channel, bool used); ///< A spectrum has been enabled/disabled
202 217 };
203 218  
204 219  
... ...
openhantek/src/dsocontrol.h
... ... @@ -49,7 +49,7 @@ class DsoControl : public QThread {
49 49 virtual void startSampling();
50 50 virtual void stopSampling();
51 51  
52   - virtual unsigned int getChannelCount() = 0;
  52 + virtual unsigned int getChannelCount() = 0; ///< Get the number of channels for this oscilloscope
53 53  
54 54 const QStringList *getSpecialTriggerSources();
55 55  
... ... @@ -60,28 +60,28 @@ class DsoControl : public QThread {
60 60 QStringList specialTriggerSources; ///< Names of the special trigger sources
61 61  
62 62 signals:
63   - void deviceConnected();
64   - void deviceDisconnected();
65   - void statusMessage(const QString &message, int timeout);
66   - void samplesAvailable(const QList<double *> *data, const QList<unsigned int> *size, double samplerate, QMutex *mutex);
  63 + void deviceConnected(); ///< The oscilloscope device has been disconnected
  64 + void deviceDisconnected(); ///< The oscilloscope device has been connected
  65 + void statusMessage(const QString &message, int timeout); ///< Status message about the oscilloscope
  66 + void samplesAvailable(const QList<double *> *data, const QList<unsigned int> *size, double samplerate, QMutex *mutex); ///< New sample data is available
67 67  
68 68 public slots:
69 69 virtual void connectDevice();
70 70 virtual void disconnectDevice();
71 71  
72   - virtual unsigned long int setSamplerate(unsigned long int samplerate) = 0;
73   - virtual double setBufferSize(unsigned int size) = 0;
  72 + virtual unsigned long int setSamplerate(unsigned long int samplerate) = 0; ///< Set the samplerate that should be met
  73 + virtual double setBufferSize(unsigned int size) = 0; ///< Set the needed buffer size
74 74  
75   - virtual int setTriggerMode(Dso::TriggerMode mode) = 0;
76   - virtual int setTriggerSource(bool special, unsigned int id) = 0;
77   - virtual double setTriggerLevel(unsigned int channel, double level) = 0;
78   - virtual int setTriggerSlope(Dso::Slope slope) = 0;
79   - virtual double setTriggerPosition(double position) = 0;
  75 + virtual int setTriggerMode(Dso::TriggerMode mode) = 0; ///< Set the trigger mode
  76 + virtual int setTriggerSource(bool special, unsigned int id) = 0; ///< Set the trigger source
  77 + virtual double setTriggerLevel(unsigned int channel, double level) = 0; ///< Set the trigger level for a channel
  78 + virtual int setTriggerSlope(Dso::Slope slope) = 0; ///< Set the slope that causes triggering
  79 + virtual double setTriggerPosition(double position) = 0; ///< Set the pretrigger position (0.0 = left, 1.0 = right side)
80 80  
81   - virtual int setChannelUsed(unsigned int channel, bool used) = 0;
82   - virtual int setCoupling(unsigned int channel, Dso::Coupling coupling) = 0;
83   - virtual double setGain(unsigned int channel, double gain) = 0;
84   - virtual double setOffset(unsigned int channel, double offset) = 0;
  81 + virtual int setChannelUsed(unsigned int channel, bool used) = 0; ///< Enable/disable a channel
  82 + virtual int setCoupling(unsigned int channel, Dso::Coupling coupling) = 0; ///< Set the coupling for a channel
  83 + virtual double setGain(unsigned int channel, double gain) = 0; ///< Set the gain for a channel
  84 + virtual double setOffset(unsigned int channel, double offset) = 0; ///< Set the graph offset of a channel
85 85 };
86 86  
87 87  
... ...
openhantek/src/dsowidget.cpp
... ... @@ -42,6 +42,7 @@
42 42 // class DsoWidget
43 43 /// \brief Initializes the components of the oszilloscope-screen.
44 44 /// \param settings The settings object containing the oscilloscope settings.
  45 +/// \param dataAnalyzer The data analyzer that should be used as data source.
45 46 /// \param parent The parent widget.
46 47 /// \param flags Flags for the window manager.
47 48 DsoWidget::DsoWidget(DsoSettings *settings, DataAnalyzer *dataAnalyzer, QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags) {
... ... @@ -167,8 +168,8 @@ DsoWidget::DsoWidget(DsoSettings *settings, DataAnalyzer *dataAnalyzer, QWidget
167 168 tablePalette.setColor(QPalette::WindowText, this->settings->view.color.screen.voltage[channel]);
168 169 this->measurementNameLabel.append(new QLabel(this->settings->scope.voltage[channel].name));
169 170 this->measurementNameLabel[channel]->setPalette(tablePalette);
170   - this->measurementCouplingLabel.append(new QLabel());
171   - this->measurementCouplingLabel[channel]->setPalette(tablePalette);
  171 + this->measurementMiscLabel.append(new QLabel());
  172 + this->measurementMiscLabel[channel]->setPalette(tablePalette);
172 173 this->measurementGainLabel.append(new QLabel());
173 174 this->measurementGainLabel[channel]->setAlignment(Qt::AlignRight);
174 175 this->measurementGainLabel[channel]->setPalette(tablePalette);
... ... @@ -184,12 +185,15 @@ DsoWidget::DsoWidget(DsoSettings *settings, DataAnalyzer *dataAnalyzer, QWidget
184 185 this->measurementFrequencyLabel[channel]->setPalette(palette);
185 186 this->setMeasurementVisible(channel, this->settings->scope.voltage[channel].used);
186 187 this->measurementLayout->addWidget(this->measurementNameLabel[channel], channel, 0);
187   - this->measurementLayout->addWidget(this->measurementCouplingLabel[channel], channel, 1);
  188 + this->measurementLayout->addWidget(this->measurementMiscLabel[channel], channel, 1);
188 189 this->measurementLayout->addWidget(this->measurementGainLabel[channel], channel, 2);
189 190 this->measurementLayout->addWidget(this->measurementMagnitudeLabel[channel], channel, 3);
190 191 this->measurementLayout->addWidget(this->measurementAmplitudeLabel[channel], channel, 4);
191 192 this->measurementLayout->addWidget(this->measurementFrequencyLabel[channel], channel, 5);
192   - this->updateVoltageCoupling(channel);
  193 + if((unsigned int) channel < this->settings->scope.physicalChannels)
  194 + this->updateVoltageCoupling(channel);
  195 + else
  196 + this->updateMathMode();
193 197 this->updateVoltageDetails(channel);
194 198 this->updateSpectrumDetails(channel);
195 199 }
... ... @@ -256,7 +260,7 @@ void DsoWidget::adaptTriggerLevelSlider(unsigned int channel) {
256 260 /// \brief Show/Hide a line of the measurement table.
257 261 void DsoWidget::setMeasurementVisible(unsigned int channel, bool visible) {
258 262 this->measurementNameLabel[channel]->setVisible(visible);
259   - this->measurementCouplingLabel[channel]->setVisible(visible);
  263 + this->measurementMiscLabel[channel]->setVisible(visible);
260 264 this->measurementGainLabel[channel]->setVisible(visible);
261 265 this->measurementMagnitudeLabel[channel]->setVisible(visible);
262 266 this->measurementAmplitudeLabel[channel]->setVisible(visible);
... ... @@ -371,8 +375,6 @@ void DsoWidget::updateTriggerSlope() {
371 375 }
372 376  
373 377 /// \brief Handles sourceChanged signal from the trigger dock.
374   -/// \param special true for a special channel (EXT, ...) as trigger source.
375   -/// \param id The number of the channel, that should be used as trigger.
376 378 void DsoWidget::updateTriggerSource() {
377 379 // Change the colors of the trigger sliders
378 380 if(this->settings->scope.trigger.special || this->settings->scope.trigger.source >= this->settings->scope.physicalChannels)
... ... @@ -386,7 +388,7 @@ void DsoWidget::updateTriggerSource() {
386 388 this->updateTriggerDetails();
387 389 }
388 390  
389   -/// \brief Handles couplingChanged signal from the vertical dock.
  391 +/// \brief Handles couplingChanged signal from the voltage dock.
390 392 /// \param channel The channel whose coupling was changed.
391 393 void DsoWidget::updateVoltageCoupling(unsigned int channel) {
392 394 if(channel >= (unsigned int) this->settings->scope.voltage.count())
... ... @@ -395,19 +397,36 @@ void DsoWidget::updateVoltageCoupling(unsigned int channel) {
395 397 if(this->settings->scope.voltage[channel].used || this->settings->scope.spectrum[channel].used) {
396 398 switch(this->settings->scope.voltage[channel].misc) {
397 399 case Dso::COUPLING_AC:
398   - this->measurementCouplingLabel[channel]->setText(tr("AC"));
  400 + this->measurementMiscLabel[channel]->setText(tr("AC"));
399 401 break;
400 402 case Dso::COUPLING_DC:
401   - this->measurementCouplingLabel[channel]->setText(tr("DC"));
  403 + this->measurementMiscLabel[channel]->setText(tr("DC"));
402 404 break;
403 405 case Dso::COUPLING_GND:
404   - this->measurementCouplingLabel[channel]->setText(tr("GND"));
  406 + this->measurementMiscLabel[channel]->setText(tr("GND"));
405 407 break;
406 408 }
407 409 }
408 410 }
409 411  
410   -/// \brief Handles gainChanged signal from the vertical dock.
  412 +/// \brief Handles modeChanged signal from the voltage dock.
  413 +void DsoWidget::updateMathMode() {
  414 + if(this->settings->scope.voltage[this->settings->scope.physicalChannels].used || this->settings->scope.spectrum[this->settings->scope.physicalChannels].used) {
  415 + switch(this->settings->scope.voltage[this->settings->scope.physicalChannels].misc) {
  416 + case Dso::MATHMODE_1ADD2:
  417 + this->measurementMiscLabel[this->settings->scope.physicalChannels]->setText(tr("CH1 + CH2"));
  418 + break;
  419 + case Dso::MATHMODE_1SUB2:
  420 + this->measurementMiscLabel[this->settings->scope.physicalChannels]->setText(tr("CH1 - CH2"));
  421 + break;
  422 + case Dso::MATHMODE_2SUB1:
  423 + this->measurementMiscLabel[this->settings->scope.physicalChannels]->setText(tr("CH2 - CH1"));
  424 + break;
  425 + }
  426 + }
  427 +}
  428 +
  429 +/// \brief Handles gainChanged signal from the voltage dock.
411 430 /// \param channel The channel whose gain was changed.
412 431 void DsoWidget::updateVoltageGain(unsigned int channel) {
413 432 if(channel >= (unsigned int) this->settings->scope.voltage.count())
... ... @@ -419,7 +438,7 @@ void DsoWidget::updateVoltageGain(unsigned int channel) {
419 438 this->updateVoltageDetails(channel);
420 439 }
421 440  
422   -/// \brief Handles usedChanged signal from the vertical dock.
  441 +/// \brief Handles usedChanged signal from the voltage dock.
423 442 /// \param channel The channel whose used-state was changed.
424 443 /// \param used The new used-state for the channel.
425 444 void DsoWidget::updateVoltageUsed(unsigned int channel, bool used) {
... ... @@ -434,7 +453,6 @@ void DsoWidget::updateVoltageUsed(unsigned int channel, bool used) {
434 453 }
435 454  
436 455 /// \brief Change the buffer size.
437   -/// \param size The size of the buffer.
438 456 void DsoWidget::updateBufferSize() {
439 457 this->settingsBufferLabel->setText(tr("%1 S").arg(this->settings->scope.horizontal.samples));
440 458 }
... ... @@ -531,7 +549,7 @@ void DsoWidget::updateTriggerPosition(int index, double value) {
531 549 }
532 550  
533 551 /// \brief Handles valueChanged signal from the trigger level slider.
534   -/// \param index The index of the slider.
  552 +/// \param channel The index of the slider.
535 553 /// \param value The new trigger level.
536 554 void DsoWidget::updateTriggerLevel(int channel, double value) {
537 555 this->settings->scope.voltage[channel].trigger = value;
... ...
openhantek/src/dsowidget.h
... ... @@ -58,32 +58,40 @@ class DsoWidget : public QWidget {
58 58 void updateTriggerDetails();
59 59 void updateVoltageDetails(unsigned int channel);
60 60  
61   - QGridLayout *mainLayout;
62   - GlGenerator *generator;
63   - GlScope *mainScope, *zoomScope;
64   - LevelSlider *offsetSlider;
65   - LevelSlider *triggerPositionSlider, *triggerLevelSlider;
66   - LevelSlider *markerSlider;
  61 + QGridLayout *mainLayout; ///< The main layout for this widget
  62 + GlGenerator *generator; ///< The generator for the OpenGL vertex arrays
  63 + GlScope *mainScope; ///< The main scope screen
  64 + GlScope *zoomScope; ///< The optional magnified scope screen
  65 + LevelSlider *offsetSlider; ///< The sliders for the graph offsets
  66 + LevelSlider *triggerPositionSlider; ///< The slider for the pretrigger
  67 + LevelSlider *triggerLevelSlider; ///< The sliders for the trigger level
  68 + LevelSlider *markerSlider; ///< The sliders for the markers
67 69  
68   - QHBoxLayout *settingsLayout;
69   - QLabel *settingsTriggerLabel;
70   - QLabel *settingsBufferLabel, *settingsRateLabel;
71   - QLabel *settingsTimebaseLabel, *settingsFrequencybaseLabel;
  70 + QHBoxLayout *settingsLayout; ///< The table for the settings info
  71 + QLabel *settingsTriggerLabel; ///< The trigger details
  72 + QLabel *settingsBufferLabel; ///< The buffer size
  73 + QLabel *settingsRateLabel; ///< The samplerate
  74 + QLabel *settingsTimebaseLabel; ///< The timebase of the main scope
  75 + QLabel *settingsFrequencybaseLabel; ///< The frequencybase of the main scope
72 76  
73   - QHBoxLayout *markerLayout;
74   - QLabel *markerInfoLabel;
75   - QLabel *markerTimeLabel, *markerFrequencyLabel;
76   - QLabel *markerTimebaseLabel, *markerFrequencybaseLabel;
  77 + QHBoxLayout *markerLayout; ///< The table for the marker details
  78 + QLabel *markerInfoLabel; ///< The info about the zoom factor
  79 + QLabel *markerTimeLabel; ///< The time period between the markers
  80 + QLabel *markerFrequencyLabel; ///< The frequency for the time period
  81 + QLabel *markerTimebaseLabel; ///< The timebase for the zoomed scope
  82 + QLabel *markerFrequencybaseLabel; ///< The frequencybase for the zoomed scope
77 83  
78   - QGridLayout *measurementLayout;
79   - QList<QLabel *> measurementNameLabel;
80   - QList<QLabel *> measurementGainLabel, measurementMagnitudeLabel;
81   - QList<QLabel *> measurementCouplingLabel;
82   - QList<QLabel *> measurementAmplitudeLabel, measurementFrequencyLabel;
  84 + QGridLayout *measurementLayout; ///< The table for the signal details
  85 + QList<QLabel *> measurementNameLabel; ///< The name of the channel
  86 + QList<QLabel *> measurementGainLabel; ///< The gain for the voltage (V/div)
  87 + QList<QLabel *> measurementMagnitudeLabel; ///< The magnitude for the spectrum (dB/div)
  88 + QList<QLabel *> measurementMiscLabel; ///< Coupling or math mode
  89 + QList<QLabel *> measurementAmplitudeLabel; ///< Amplitude of the signal (V)
  90 + QList<QLabel *> measurementFrequencyLabel; ///< Frequency of the signal (Hz)
83 91  
84   - DsoSettings *settings;
  92 + DsoSettings *settings; ///< The settings provided by the main window
85 93  
86   - DataAnalyzer *dataAnalyzer;
  94 + DataAnalyzer *dataAnalyzer; ///< The data source provided by the main window
87 95  
88 96 public slots:
89 97 // Horizontal axis
... ... @@ -103,6 +111,7 @@ class DsoWidget : public QWidget {
103 111  
104 112 // Vertical axis
105 113 void updateVoltageCoupling(unsigned int channel);
  114 + void updateMathMode();
106 115 void updateVoltageGain(unsigned int channel);
107 116 void updateVoltageUsed(unsigned int channel, bool used);
108 117  
... ... @@ -128,10 +137,10 @@ class DsoWidget : public QWidget {
128 137  
129 138 signals:
130 139 // Sliders
131   - void offsetChanged(unsigned int channel, double value);
132   - void triggerPositionChanged(double value);
133   - void triggerLevelChanged(unsigned int channel, double value);
134   - void markerChanged(unsigned int marker, double value);
  140 + void offsetChanged(unsigned int channel, double value); ///< A graph offset has been changed
  141 + void triggerPositionChanged(double value); ///< The pretrigger has been changed
  142 + void triggerLevelChanged(unsigned int channel, double value); ///< A trigger level has been changed
  143 + void markerChanged(unsigned int marker, double value); ///< A marker position has been changed
135 144 };
136 145  
137 146  
... ...
openhantek/src/glgenerator.cpp
... ... @@ -55,7 +55,7 @@ unsigned long int GlArray::getSize() {
55 55 /// \brief Set the size of the array.
56 56 /// Previous array contents are lost.
57 57 /// \param size New number of array elements.
58   -void GlArray::setSize(unsigned long size) {
  58 +void GlArray::setSize(unsigned long int size) {
59 59 if(this->size == size)
60 60 return;
61 61  
... ...
openhantek/src/glgenerator.h
... ... @@ -58,10 +58,10 @@ class GlArray {
58 58 unsigned long int getSize();
59 59 void setSize(unsigned long int size);
60 60  
61   - GLfloat *data;
  61 + GLfloat *data; ///< Pointer to the array
62 62  
63 63 protected:
64   - unsigned long int size;
  64 + unsigned long int size; ///< The array size (Number of GLfloat values)
65 65 };
66 66  
67 67 ////////////////////////////////////////////////////////////////////////////////
... ... @@ -94,7 +94,7 @@ class GlGenerator : public QObject {
94 94 void generateGraphs();
95 95  
96 96 signals:
97   - void graphsGenerated();
  97 + void graphsGenerated(); ///< The graphs are ready to be drawn
98 98 };
99 99  
100 100  
... ...
openhantek/src/glscope.cpp
... ... @@ -39,6 +39,7 @@
39 39 ////////////////////////////////////////////////////////////////////////////////
40 40 // class GlScope
41 41 /// \brief Initializes the scope widget.
  42 +/// \param settings The settings that should be used.
42 43 /// \param parent The parent widget.
43 44 GlScope::GlScope(DsoSettings *settings, QWidget *parent) : QGLWidget(parent) {
44 45 this->settings = settings;
... ...
openhantek/src/hantek/control.cpp
... ... @@ -454,7 +454,7 @@ namespace Hantek {
454 454  
455 455 /// \brief Enables/disables filtering of the given channel.
456 456 /// \param channel The channel that should be set.
457   - /// \param filtered true if the channel should be filtered.
  457 + /// \param used true if the channel should be sampled.
458 458 /// \return 0 on success, -1 on invalid channel.
459 459 int Control::setChannelUsed(unsigned int channel, bool used) {
460 460 if(channel >= HANTEK_CHANNELS)
... ... @@ -495,6 +495,7 @@ namespace Hantek {
495 495 }
496 496  
497 497 /// \brief Sets the gain for the given channel.
  498 + /// \param channel The channel that should be set.
498 499 /// \param gain The gain that should be met (V/div).
499 500 /// \return The gain that has been set, -1.0 on invalid channel.
500 501 double Control::setGain(unsigned int channel, double gain) {
... ... @@ -636,7 +637,7 @@ namespace Hantek {
636 637 }
637 638  
638 639 /// \brief Set the trigger position.
639   - /// \param level The new trigger position (0.0 - 1.0).
  640 + /// \param position The new trigger position (0.0 - 1.0).
640 641 /// \return The trigger position that has been set.
641 642 double Control::setTriggerPosition(double position) {
642 643 // Calculate the position value (Varying start point, measured in samples)
... ...
openhantek/src/hantek/control.h
... ... @@ -54,7 +54,7 @@ namespace Hantek {
54 54  
55 55 //////////////////////////////////////////////////////////////////////////////
56 56 /// \class Control hantek/control.h
57   - /// \brief The DsoControl abstraction layer for Hantek USB DSOs.
  57 + /// \brief The DsoControl abstraction layer for %Hantek USB DSOs.
58 58 class Control : public DsoControl {
59 59 Q_OBJECT
60 60  
... ... @@ -71,7 +71,7 @@ namespace Hantek {
71 71 int getCaptureState();
72 72 int getSamples();
73 73  
74   - Device *device;
  74 + Device *device; ///< The USB device for the oscilloscope
75 75  
76 76 Helper::DataArray<unsigned char> *command[COMMAND_COUNT]; ///< Pointers to commands, ready to be transmitted
77 77 bool commandPending[COMMAND_COUNT]; ///< true, when the command should be executed
... ... @@ -83,16 +83,16 @@ namespace Hantek {
83 83 unsigned short channelLevels[HANTEK_CHANNELS][GAIN_COUNT][OFFSET_COUNT];
84 84  
85 85 // Various cached settings
86   - Samplerate samplerate;
87   - Gain gain[HANTEK_CHANNELS];
88   - double offset[HANTEK_CHANNELS];
89   - double offsetReal[HANTEK_CHANNELS];
90   - double triggerLevel[HANTEK_CHANNELS];
91   - unsigned int bufferSize;
92   - unsigned int triggerPoint;
93   - Dso::TriggerMode triggerMode;
94   - bool triggerSpecial;
95   - unsigned int triggerSource;
  86 + Samplerate samplerate; ///< The samplerate id
  87 + Gain gain[HANTEK_CHANNELS]; ///< The gain id
  88 + double offset[HANTEK_CHANNELS]; ///< The current screen offset for each channel
  89 + double offsetReal[HANTEK_CHANNELS]; ///< The real offset for each channel (Due to quantization)
  90 + double triggerLevel[HANTEK_CHANNELS]; ///< The trigger level for each channel in V
  91 + unsigned int bufferSize; ///< The buffer size in samples
  92 + unsigned int triggerPoint; ///< The trigger point value
  93 + Dso::TriggerMode triggerMode; ///< The trigger mode
  94 + bool triggerSpecial; ///< true, if the trigger source is special
  95 + unsigned int triggerSource; ///< The trigger source
96 96  
97 97 QList<double *> samples; ///< Sample data arrays
98 98 QList<unsigned int> samplesSize; ///< Number of samples data array
... ...
openhantek/src/hantek/device.h
... ... @@ -84,7 +84,7 @@ namespace Hantek {
84 84 QStringList modelStrings; ///< The name as QString for each #Model
85 85  
86 86 // Command buffers
87   - ControlBeginCommand *beginCommandControl;
  87 + ControlBeginCommand *beginCommandControl; ///< Buffer for the CONTROL_BEGINCOMMAND control command
88 88  
89 89 // Libusb specific variables
90 90 #if LIBUSB_VERSION != 0
... ... @@ -99,8 +99,8 @@ namespace Hantek {
99 99 int inPacketLength; ///< Packet length for the IN endpoint
100 100  
101 101 signals:
102   - void connected();
103   - void disconnected();
  102 + void connected(); ///< The device has been connected and initialized
  103 + void disconnected(); ///< The device has been disconnected
104 104  
105 105 public slots:
106 106  
... ...
openhantek/src/hantek/types.cpp
... ... @@ -101,17 +101,21 @@ namespace Hantek {
101 101 }
102 102  
103 103 /// \brief Sets the data bytes to the specified values.
104   - /// \param tsr1Byte The Tsr1 value.
105   - /// \param tsr2Byte The Tsr2 value.
106   - /// \param timebase The new timebase value.
107   - /// \param triggerPosition The new horizontal trigger position.
108   - CommandSetTriggerAndSamplerate::CommandSetTriggerAndSamplerate(unsigned short int samplerate, unsigned long int triggerPosition, unsigned char triggerSource, unsigned char sampleSize, unsigned char timebaseFast, unsigned char selectedChannel, bool fastRate, unsigned char triggerSlope) : Helper::DataArray<unsigned char>(12) {
  104 + /// \param samplerate The samplerate value.
  105 + /// \param triggerPosition The trigger position value.
  106 + /// \param triggerSource The trigger source id (Tsr1).
  107 + /// \param sampleSize The buffer size id (Tsr1).
  108 + /// \param samplerateFast The samplerateFast value (Tsr1).
  109 + /// \param usedChannel The enabled channels (Tsr2).
  110 + /// \param fastRate The fastRate state (Tsr2).
  111 + /// \param triggerSlope The triggerSlope value (Tsr2).
  112 + CommandSetTriggerAndSamplerate::CommandSetTriggerAndSamplerate(unsigned short int samplerate, unsigned long int triggerPosition, unsigned char triggerSource, unsigned char sampleSize, unsigned char samplerateFast, unsigned char usedChannel, bool fastRate, unsigned char triggerSlope) : Helper::DataArray<unsigned char>(12) {
109 113 this->init();
110 114  
111 115 this->setTriggerSource(triggerSource);
112 116 this->setSampleSize(sampleSize);
113   - this->setSamplerateFast(timebaseFast);
114   - this->setUsedChannel(selectedChannel);
  117 + this->setSamplerateFast(samplerateFast);
  118 + this->setUsedChannel(usedChannel);
115 119 this->setFastRate(fastRate);
116 120 this->setTriggerSlope(triggerSlope);
117 121 this->setSamplerate(samplerate);
... ... @@ -154,16 +158,16 @@ namespace Hantek {
154 158 ((Tsr1Bits *) &(this->array[2]))->samplerateFast = value;
155 159 }
156 160  
157   - /// \brief Get the selectedChannel value in Tsr2Bits.
158   - /// \return The selectedChannel value.
  161 + /// \brief Get the usedChannel value in Tsr2Bits.
  162 + /// \return The usedChannel value.
159 163 unsigned char CommandSetTriggerAndSamplerate::getUsedChannel() {
160   - return ((Tsr2Bits *) &(this->array[3]))->selectedChannel;
  164 + return ((Tsr2Bits *) &(this->array[3]))->usedChannel;
161 165 }
162 166  
163   - /// \brief Set the selectedChannel in Tsr2Bits to the given value.
164   - /// \param value The new selectedChannel value.
  167 + /// \brief Set the usedChannel in Tsr2Bits to the given value.
  168 + /// \param value The new usedChannel value.
165 169 void CommandSetTriggerAndSamplerate::setUsedChannel(unsigned char value) {
166   - ((Tsr2Bits *) &(this->array[3]))->selectedChannel = value;
  170 + ((Tsr2Bits *) &(this->array[3]))->usedChannel = value;
167 171 }
168 172  
169 173 /// \brief Get the fastRate state in Tsr2Bits.
... ... @@ -197,7 +201,7 @@ namespace Hantek {
197 201 }
198 202  
199 203 /// \brief Set the Samplerate to the given value.
200   - /// \param timebase The new samplerate value.
  204 + /// \param samplerate The new samplerate value.
201 205 void CommandSetTriggerAndSamplerate::setSamplerate(unsigned short int samplerate) {
202 206 this->array[4] = (unsigned char) samplerate;
203 207 this->array[5] = (unsigned char) (samplerate >> 8);
... ... @@ -325,7 +329,7 @@ namespace Hantek {
325 329 void CommandSetGain::init() {
326 330 this->array[0] = COMMAND_SETGAIN;
327 331 this->array[1] = 0x0f;
328   - ((GainBits *) &(this->array[2]))->constant = 3;
  332 + ((GainBits *) &(this->array[2]))->reserved = 3;
329 333 }
330 334  
331 335  
... ... @@ -421,7 +425,7 @@ namespace Hantek {
421 425 /// \brief Sets the offsets to the given values.
422 426 /// \param channel1 The offset for channel 1.
423 427 /// \param channel2 The offset for channel 2.
424   - /// \param ext The offset for ext. trigger.
  428 + /// \param trigger The offset for ext. trigger.
425 429 ControlSetOffset::ControlSetOffset(unsigned short int channel1, unsigned short int channel2, unsigned short int trigger) : Helper::DataArray<unsigned char>(17) {
426 430 this->setChannel(0, channel1);
427 431 this->setChannel(1, channel2);
... ... @@ -538,7 +542,7 @@ namespace Hantek {
538 542  
539 543 /// \brief Set the coupling relay for the given channel.
540 544 /// \param channel The channel that should be set.
541   - /// \param below true, if the coupling of the channel should be DC.
  545 + /// \param dc true, if the coupling of the channel should be DC.
542 546 void ControlSetRelays::setCoupling(unsigned int channel, bool dc) {
543 547 if(channel == 0)
544 548 this->array[3] = dc ? 0xfd : 0x02;
... ... @@ -553,7 +557,7 @@ namespace Hantek {
553 557 }
554 558  
555 559 /// \brief Set the external trigger relay.
556   - /// \param below true, if the trigger should be external (EXT-Connector).
  560 + /// \param ext true, if the trigger should be external (EXT-Connector).
557 561 void ControlSetRelays::setTrigger(bool ext) {
558 562 this->array[7] = ext ? 0xfe : 0x01;
559 563 }
... ...
openhantek/src/hantek/types.h
... ... @@ -44,7 +44,7 @@
44 44  
45 45 ////////////////////////////////////////////////////////////////////////////////
46 46 /// \namespace Hantek hantek/types.h
47   -/// \brief All Hantek DSO device specific things.
  47 +/// \brief All %Hantek DSO device specific things.
48 48 namespace Hantek {
49 49 //////////////////////////////////////////////////////////////////////////////
50 50 /// \enum CommandCode hantek/types.h
... ... @@ -401,8 +401,8 @@ namespace Hantek {
401 401 /// \enum LevelOffset hantek/types.h
402 402 /// \brief The array indicies for the CalibrationData.
403 403 enum LevelOffset {
404   - OFFSET_START,
405   - OFFSET_END,
  404 + OFFSET_START, ///< The channel level at the bottom of the scope
  405 + OFFSET_END, ///< The channel level at the top of the scope
406 406 OFFSET_COUNT
407 407 };
408 408  
... ... @@ -410,70 +410,70 @@ namespace Hantek {
410 410 /// \struct FilterBits hantek/types.h
411 411 /// \brief The bits for COMMAND_SETFILTER.
412 412 struct FilterBits {
413   - unsigned char channel1:1;
414   - unsigned char channel2:1;
415   - unsigned char trigger:1;
416   - unsigned char reserved:5;
  413 + unsigned char channel1:1; ///< Set to true when channel 1 isn't used
  414 + unsigned char channel2:1; ///< Set to true when channel 2 isn't used
  415 + unsigned char trigger:1; ///< Set to true when trigger isn't used
  416 + unsigned char reserved:5; ///< Unused bits
417 417 };
418 418  
419 419 //////////////////////////////////////////////////////////////////////////////
420 420 /// \union FilterByte hantek/types.h
421 421 /// \brief Allows to read the FilterBits as unsigned char.
422 422 union FilterByte {
423   - FilterBits bits;
424   - unsigned char byte;
  423 + FilterBits bits; ///< Bitfield representation
  424 + unsigned char byte; ///< Full byte as unsigned char
425 425 };
426 426  
427 427 //////////////////////////////////////////////////////////////////////////////
428 428 /// \struct GainBits hantek/types.h
429   - /// \brief The gain bits for COMMAND_SETVOLTAGEANDCOUPLING.
  429 + /// \brief The gain bits for COMMAND_SETGAIN.
430 430 struct GainBits {
431   - unsigned char channel1:2;
432   - unsigned char channel2:2;
433   - unsigned char constant:4;
  431 + unsigned char channel1:2; ///< Gain for CH1, 0 = 1e* V, 1 = 2e*, 2 = 5e*
  432 + unsigned char channel2:2; ///< Gain for CH1, 0 = 1e* V, 1 = 2e*, 2 = 5e*
  433 + unsigned char reserved:4; ///< Unused bits
434 434 };
435 435  
436 436 //////////////////////////////////////////////////////////////////////////////
437 437 /// \union GainByte hantek/types.h
438 438 /// \brief Allows to read the GainBits as unsigned char.
439 439 union GainByte {
440   - GainBits bits;
441   - unsigned char byte;
  440 + GainBits bits; ///< Bitfield representation
  441 + unsigned char byte; ///< Full byte as unsigned char
442 442 };
443 443  
444 444 //////////////////////////////////////////////////////////////////////////////
445 445 /// \struct Tsr1Bits hantek/types.h
446 446 /// \brief Trigger and samplerate bits (Byte 1).
447 447 struct Tsr1Bits {
448   - unsigned char triggerSource:2;
449   - unsigned char sampleSize:3;
450   - unsigned char samplerateFast:3;
  448 + unsigned char triggerSource:2; ///< The trigger source, see Hantek::TriggerSource
  449 + unsigned char sampleSize:3; ///< Buffer size, 1 = 10240 S, 2 = 32768 S
  450 + unsigned char samplerateFast:3; ///< samplerate id for fast sampling rates
451 451 };
452 452  
453 453 //////////////////////////////////////////////////////////////////////////////
454 454 /// \union Tsr1Byte hantek/types.h
455 455 /// \brief Allows to read the Tsr1Bits as unsigned char.
456 456 union Tsr1Byte {
457   - Tsr1Bits bits;
458   - unsigned char byte;
  457 + Tsr1Bits bits; ///< Bitfield representation.
  458 + unsigned char byte; ///< Full byte as unsigned char.
459 459 };
460 460  
461 461 //////////////////////////////////////////////////////////////////////////////
462 462 /// \struct Tsr2Bits hantek/types.h
463 463 /// \brief Trigger and samplerate bits (Byte 2).
464 464 struct Tsr2Bits {
465   - unsigned char selectedChannel:2;
466   - unsigned char fastRate:1;
467   - unsigned char triggerSlope:1;
468   - unsigned char reserved:4;
  465 + unsigned char usedChannel:2; ///< Used channels, see Hantek::UsedChannels
  466 + unsigned char fastRate:1; ///< true, if one channels uses all buffers
  467 + unsigned char triggerSlope:1; ///< The trigger slope, see Dso::Slope
  468 + unsigned char reserved:4; ///< Unused bits
469 469 };
470 470  
471 471 //////////////////////////////////////////////////////////////////////////////
472 472 /// \union Tsr2Byte hantek/types.h
473 473 /// \brief Allows to read the Tsr2Bits as unsigned char.
474 474 union Tsr2Byte {
475   - Tsr2Bits bits;
476   - unsigned char byte;
  475 + Tsr2Bits bits; ///< Bitfield representation
  476 + unsigned char byte; ///< Full byte as unsigned char
477 477 };
478 478  
479 479 //////////////////////////////////////////////////////////////////////////////
... ... @@ -499,7 +499,7 @@ namespace Hantek {
499 499 class CommandSetTriggerAndSamplerate : public Helper::DataArray<unsigned char> {
500 500 public:
501 501 CommandSetTriggerAndSamplerate();
502   - CommandSetTriggerAndSamplerate(unsigned short int samplerate, unsigned long int triggerPosition, unsigned char triggerSource = 0, unsigned char sampleSize = 0, unsigned char timebaseFast = 0, unsigned char selectedChannel = 0, bool fastRate = false, unsigned char triggerSlope = 0);
  502 + CommandSetTriggerAndSamplerate(unsigned short int samplerate, unsigned long int triggerPosition, unsigned char triggerSource = 0, unsigned char sampleSize = 0, unsigned char timebaseFast = 0, unsigned char usedChannel = 0, bool fastRate = false, unsigned char triggerSlope = 0);
503 503  
504 504 unsigned char getTriggerSource();
505 505 void setTriggerSource(unsigned char value);
... ...
openhantek/src/helper.h
... ... @@ -57,8 +57,8 @@ namespace Helper {
57 57 unsigned int getSize() const;
58 58  
59 59 protected:
60   - T *array;
61   - unsigned int size;
  60 + T *array; ///< Pointer to the array holding the data
  61 + unsigned int size; ///< Size of the array (Number of variables of type T)
62 62 };
63 63  
64 64 /// \brief Initializes the data array.
... ...
openhantek/src/levelslider.cpp
... ... @@ -218,6 +218,8 @@ double LevelSlider::maximum(int index) const {
218 218 }
219 219  
220 220 /// \brief Set the maximal value of the sliders.
  221 +/// \param index The index of the slider whose limits should be set.
  222 +/// \param minimum The value a slider has at the bottommost/leftmost position.
221 223 /// \param maximum The value a slider has at the topmost/rightmost position.
222 224 /// \return -1 on error, fixValue result on success.
223 225 int LevelSlider::setLimits(int index, double minimum, double maximum) {
... ... @@ -235,6 +237,7 @@ int LevelSlider::setLimits(int index, double minimum, double maximum) {
235 237 }
236 238  
237 239 /// \brief Return the step width of the sliders.
  240 +/// \param index The index of the slider whose step width should be returned.
238 241 /// \return The distance between the selectable slider positions.
239 242 double LevelSlider::step(int index) const {
240 243 if(index < 0 || index >= this->slider.count())
... ... @@ -244,7 +247,8 @@ double LevelSlider::step(int index) const {
244 247 }
245 248  
246 249 /// \brief Set the step width of the sliders.
247   -/// \param maximum The distance between the selectable slider positions.
  250 +/// \param index The index of the slider whose step width should be set.
  251 +/// \param step The distance between the selectable slider positions.
248 252 /// \return The new step width.
249 253 double LevelSlider::setStep(int index, double step) {
250 254 if(index < 0 || index >= this->slider.count())
... ...
openhantek/src/levelslider.h
... ... @@ -37,16 +37,17 @@ class QColor;
37 37 /// \struct LevelSliderParameters levelslider.h
38 38 /// \brief Contains the color, text and value of one slider.
39 39 struct LevelSliderParameters {
40   - QColor color;
41   - QString text;
42   - bool visible;
  40 + QColor color; ///< The color of the slider and font
  41 + QString text; ///< The text beside the slider, a empty string disables text
  42 + bool visible; ///< Visibility of the slider
43 43  
44   - double minimum, maximum;
45   - double step;
46   - double value;
  44 + double minimum; ///< Minimum (left/top) value for the slider
  45 + double maximum; ///< Maximum (right/bottom) value for the slider
  46 + double step; ///< The distance between selectable slider positions
  47 + double value; ///< The current value of the slider
47 48  
48 49 // Needed for moving and drawing
49   - QRect rect;
  50 + QRect rect; ///< The area where the slider is drawn
50 51 };
51 52  
52 53 ////////////////////////////////////////////////////////////////////////////////
... ... @@ -101,15 +102,16 @@ class LevelSlider : public QWidget {
101 102 int calculateWidth();
102 103 int fixValue(int index);
103 104  
104   - QList<LevelSliderParameters *> slider;
105   - int pressedSlider;
106   - int sliderWidth;
  105 + QList<LevelSliderParameters *> slider; ///< The parameters for each slider
  106 + int pressedSlider; ///< The currently pressed (moved) slider
  107 + int sliderWidth; ///< The slider width (dimension orthogonal to the sliding direction)
107 108  
108   - Qt::ArrowType _direction;
109   - int _preMargin, _postMargin;
  109 + Qt::ArrowType _direction; ///< The direction the sliders point to
  110 + int _preMargin; ///< The margin before the minimum slider position
  111 + int _postMargin; ///< The margin after the maximum slider position
110 112  
111 113 signals:
112   - void valueChanged(int index, double value);
  114 + void valueChanged(int index, double value); ///< The value of a slider has changed
113 115 };
114 116  
115 117  
... ...
openhantek/src/openhantek.cpp
... ... @@ -115,6 +115,7 @@ OpenHantekMainWindow::OpenHantekMainWindow(QWidget *parent, Qt::WindowFlags flag
115 115 connect(this->voltageDock, SIGNAL(usedChanged(unsigned int, bool)), this->dsoWidget, SLOT(updateVoltageUsed(unsigned int, bool)));
116 116 connect(this->voltageDock, SIGNAL(couplingChanged(unsigned int, Dso::Coupling)), this->dsoControl, SLOT(setCoupling(unsigned int, Dso::Coupling)));
117 117 connect(this->voltageDock, SIGNAL(couplingChanged(unsigned int, Dso::Coupling)), this->dsoWidget, SLOT(updateVoltageCoupling(unsigned int)));
  118 + connect(this->voltageDock, SIGNAL(modeChanged(Dso::MathMode)), this->dsoWidget, SLOT(updateMathMode()));
118 119 connect(this->voltageDock, SIGNAL(gainChanged(unsigned int, double)), this, SLOT(updateVoltageGain(unsigned int)));
119 120 connect(this->voltageDock, SIGNAL(gainChanged(unsigned int, double)), this->dsoWidget, SLOT(updateVoltageGain(unsigned int)));
120 121 connect(this->dsoWidget, SIGNAL(offsetChanged(unsigned int, double)), this, SLOT(updateOffset(unsigned int)));
... ...
openhantek/src/openhantek.h
... ... @@ -133,7 +133,7 @@ class OpenHantekMainWindow : public QMainWindow {
133 133 void updateVoltageGain(unsigned int channel);
134 134  
135 135 signals:
136   - void settingsChanged();
  136 + void settingsChanged(); ///< The settings have changed (Option dialog, loading...)
137 137 };
138 138  
139 139  
... ...
openhantek/src/settings.h
... ... @@ -104,7 +104,7 @@ struct DsoSettingsScope {
104 104 };
105 105  
106 106 ////////////////////////////////////////////////////////////////////////////////
107   -/// \struct DsoColorValues settings.h
  107 +/// \struct DsoSettingsColorValues settings.h
108 108 /// \brief Holds the color values for the oscilloscope screen.
109 109 struct DsoSettingsColorValues {
110 110 QColor axes; ///< X- and Y-axis and subdiv lines on them
... ...