diff --git a/doc/img/ChAnalyzerNG_plugin_ampOffset.png b/doc/img/ChAnalyzerNG_plugin_ampOffset.png
new file mode 100644
index 000000000..e07cd277b
Binary files /dev/null and b/doc/img/ChAnalyzerNG_plugin_ampOffset.png differ
diff --git a/doc/img/ChAnalyzerNG_plugin_ampOffset.xcf b/doc/img/ChAnalyzerNG_plugin_ampOffset.xcf
new file mode 100644
index 000000000..907eb4ac9
Binary files /dev/null and b/doc/img/ChAnalyzerNG_plugin_ampOffset.xcf differ
diff --git a/doc/img/ChAnalyzerNG_plugin_ampScale.png b/doc/img/ChAnalyzerNG_plugin_ampScale.png
new file mode 100644
index 000000000..9e5eafb9f
Binary files /dev/null and b/doc/img/ChAnalyzerNG_plugin_ampScale.png differ
diff --git a/doc/img/ChAnalyzerNG_plugin_ampScale.xcf b/doc/img/ChAnalyzerNG_plugin_ampScale.xcf
new file mode 100644
index 000000000..e89889f4f
Binary files /dev/null and b/doc/img/ChAnalyzerNG_plugin_ampScale.xcf differ
diff --git a/plugins/channelrx/chanalyzer/readme.md b/plugins/channelrx/chanalyzer/readme.md
index e7c994994..954f0e15b 100644
--- a/plugins/channelrx/chanalyzer/readme.md
+++ b/plugins/channelrx/chanalyzer/readme.md
@@ -312,31 +312,74 @@ This is for future use when more than one incoming complex signals can be applie
6. Amplitude adjustment
-This slider lets you adjust the amplitude scale. The full scale value appears on the left of the slider. The unit depends on the projection.
+The amplitude range (vertical scale) can be set to any value from 1e-10 to 9.999e+10. Values are entered as mantissa (6.3 and 6.4) and exponent (6.5) values.
+
+I/Q signal range is +/-1 however values larger than 1 are accomodated for the general usage of the scope in other plugins.
+
+When displayed signal can be negative (+/- scale) the range is -range to +range. When displayed signal is positive (ex: magnitudes) the range is 0 to 2×range.
+
+![Channel Analyzer NG plugin amplitude scale control](../../../doc/img/ChAnalyzerNG_plugin_ampScale.png)
+
+6.1. Amplitude scale reset
+
+Push this button to reset amplitude scale to 1.
+
+6.2. Mantissa display
+
+The amplitude range is M×10E. This displays the M value.
+
+6.3 Mantissa fine control
+
+This slider sets the decimal digits of the mantissa from .000 to .999
+
+6.4 Mantissa coarse control
+
+This dial button sets the integer part of the mantissa from 1 to 9.
+
+6.5 Exponent control
+
+This slider sets the exponent from -10 to +10. The value is displayed at the left of the slider in exponent notation.
+
+6.6 Unit multiplier on vertical scale
+
+This displays the unit multiplier for values on the vertical scale of the display.
+
+ - **p**: pico (×10-12)
+ - **n**: nano (×10-9)
+ - **μ**: micro (×10-6)
+ - **m**: milli (×10-3)
+ - **-**: none (×1)
+ - **k**: kilo (×103)
+ - **M**: mega (×106)
+ - **G**: giga (×109)
7. Offset adjustment
-This pair of sliders let you offset the trace vertically. The offset value from reference appears on the left of the slider. The reference is either:
+The amplitude range can be offset by any value from -5×10-10 to 5×1010.
- - central zero value for Real, Imag, Phi and dPhi projections
- - bottom zero value for MagLin projection
- - bottom -200 dB value for MagDB projection
+I/Q signal range is +/-1 however values larger than 1 are accomodated for the general usage of the scope in other plugins.
-The top slider is a coarse adjustment. Each step moves the trace by an amount that depends on the projection type:
+![Channel Analyzer NG plugin amplitude offset control](../../../doc/img/ChAnalyzerNG_plugin_ampOffset.png)
- - Real, Imag: 0.01
- - Mag: 0.005
- - MagSq: 0.005
- - MagDB: 1 dB
- - Phi, dPhi: 0.01
+7.1. Amplitude offset reset
-The bottom slider is a fine adjustment. Each step moves the trace by an amount that depends on the projection type:
+Push this button to reset amplitude offset to 0.
- - Real, Imag: 50.0E-6
- - Mag: 25.0sE-6
- - MagSq: 25.0sE-6
- - MagDB: 0.01 dB
- - Phi, dPhi: 50.0E-6
+7.2. Mantissa display
+
+The amplitude offset is M×10E. This displays the M value.
+
+7.3 Mantissa fine control
+
+This slider sets the decimal digits of the mantissa from .000 to 0.999 and jump to next unit (so 5.000 can be reached)
+
+7.4 Mantissa coarse control
+
+This dial button sets the integer part of the mantissa from -5 to 4.
+
+7.5 Exponent control
+
+This slider sets the exponent from -10 to +10. The value is displayed at the left of the slider in exponent notation.
8. Trace delay adjustment
diff --git a/sdrgui/gui/glscopegui.cpp b/sdrgui/gui/glscopegui.cpp
index 7d518f774..0c4ee0980 100644
--- a/sdrgui/gui/glscopegui.cpp
+++ b/sdrgui/gui/glscopegui.cpp
@@ -854,6 +854,16 @@ void GLScopeGUI::on_traceMode_currentIndexChanged(int index)
changeCurrentTrace();
}
+void GLScopeGUI::on_ampReset_clicked(bool checked)
+{
+ (void) checked;
+ ui->amp->setValue(0);
+ ui->ampCoarse->setValue(1);
+ ui->ampExp->setValue(0);
+ setAmpScaleDisplay();
+ changeCurrentTrace();
+}
+
void GLScopeGUI::on_amp_valueChanged(int value)
{
(void) value;
@@ -875,6 +885,16 @@ void GLScopeGUI::on_ampExp_valueChanged(int value)
changeCurrentTrace();
}
+void GLScopeGUI::on_ofsReset_clicked(bool checked)
+{
+ (void) checked;
+ ui->ofsFine->setValue(0);
+ ui->ofsCoarse->setValue(0);
+ ui->ofsExp->setValue(0);
+ setAmpOfsDisplay();
+ changeCurrentTrace();
+}
+
void GLScopeGUI::on_ofsCoarse_valueChanged(int value)
{
(void) value;
@@ -1526,12 +1546,12 @@ void GLScopeGUI::setTraceUI(const GLScopeSettings::TraceData& traceData)
ui->ampExp->setValue(ampExp);
setAmpScaleDisplay();
- double ofsValue = traceData.m_amp;
+ double ofsValue = traceData.m_ofs;
int ofsExp;
double ofsMant = CalcDb::frexp10(ofsValue, &ofsExp) * 10.0;
int ofsCoarse = (int) ofsMant;
int ofsFine = round((ofsMant - ofsCoarse) * 1000.0);
- ofsExp -= 1;
+ ofsExp -= ofsMant == 0 ? 0 : 1;
ui->ofsFine->setValue(ofsFine);
ui->ofsCoarse->setValue(ofsCoarse);
ui->ofsExp->setValue(ofsExp);
diff --git a/sdrgui/gui/glscopegui.h b/sdrgui/gui/glscopegui.h
index f8494a115..c41f361da 100644
--- a/sdrgui/gui/glscopegui.h
+++ b/sdrgui/gui/glscopegui.h
@@ -219,9 +219,11 @@ private slots:
void on_traceDown_clicked(bool checked);
void on_traceStream_currentIndexChanged(int index);
void on_traceMode_currentIndexChanged(int index);
+ void on_ampReset_clicked(bool checked);
void on_amp_valueChanged(int value);
void on_ampCoarse_valueChanged(int value);
void on_ampExp_valueChanged(int value);
+ void on_ofsReset_clicked(bool checked);
void on_ofsCoarse_valueChanged(int value);
void on_ofsFine_valueChanged(int value);
void on_ofsExp_valueChanged(int value);
diff --git a/sdrgui/gui/glscopegui.ui b/sdrgui/gui/glscopegui.ui
index ed12f2d8a..23f84497b 100644
--- a/sdrgui/gui/glscopegui.ui
+++ b/sdrgui/gui/glscopegui.ui
@@ -825,12 +825,18 @@ kS/s
-
-
+
+
+
+ 22
+ 22
+
+
- Vertical range
+ Vertical range reset
- A:
+ A
@@ -952,7 +958,7 @@ kS/s
- Vertical range value
+ Unit multiplier on vertical scale
-
@@ -974,12 +980,18 @@ kS/s
-
-
+
+
+
+ 22
+ 22
+
+
- Vertical offset
+ Vertical offset reset
- O:
+ O