Commit 926ac526f557ad1126fb0de54c2eded59af1a180
1 parent
66350331
Small bugfix and documentation update
Showing
26 changed files
with
276 additions
and
220 deletions
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
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 | ... | ... |