Various fixes
Set actual power bug fixed, storage added to web page. External gain part done - needs menu mods. Some prep for RBW adjusts
This commit is contained in:
parent
78becf0d64
commit
c467ac55f1
@ -184,6 +184,11 @@ static uint16_t chunkIndex;
|
||||
old_settingAttenuate = setting.Attenuate;
|
||||
}
|
||||
|
||||
// pre-calculate adjustment for RSSI values
|
||||
dBadjust = (double)setting.Attenuate - 120.0 + setting.LevelOffset - setting.ExternalGain;
|
||||
Serial.printf("Bandscope dBadjust = %f; leveloffset = %f; attenuate = %i, ext gain = %f\n",
|
||||
dBadjust, setting.LevelOffset, setting.Attenuate, setting.ExternalGain);
|
||||
|
||||
resetAverage = changedSetting;
|
||||
|
||||
maxGrid = setting.BandscopeMaxGrid;
|
||||
|
@ -93,6 +93,11 @@ static uint16_t chunkIndex;
|
||||
|
||||
att.SetAtten ( 0 ); // Set the internal attenuator
|
||||
|
||||
// pre-calculate adjustment for RSSI values
|
||||
dBadjust = 120.0 + setting.LevelOffset - setting.ExternalGain;
|
||||
Serial.printf("IFSweep dBadjust = %f; leveloffset = %f; attenuate = %i, ext gain = %f\n",
|
||||
dBadjust, setting.LevelOffset, setting.Attenuate, setting.ExternalGain);
|
||||
|
||||
xmit.SetPowerReference ( setting.ReferenceOut ); // Set the GPIO reference output
|
||||
|
||||
maxGrid = setting.MaxGrid;
|
||||
|
@ -99,6 +99,11 @@ static uint16_t chunkIndex;
|
||||
|
||||
att.SetAtten ( 0 ); // Set the internal attenuator
|
||||
|
||||
// pre-calculate adjustment for RSSI values
|
||||
dBadjust = 120.0 + setting.LevelOffset - setting.ExternalGain;
|
||||
Serial.printf("RXSweep dBadjust = %f; leveloffset = %f; attenuate = %i, ext gain = %f\n",
|
||||
dBadjust, setting.LevelOffset, setting.Attenuate, setting.ExternalGain);
|
||||
|
||||
xmit.SetPowerReference ( setting.ReferenceOut ); // Set the GPIO reference output
|
||||
|
||||
maxGrid = setting.MaxGrid;
|
||||
|
22
SweepLo.ino
22
SweepLo.ino
@ -91,7 +91,7 @@ static uint32_t offsetIF; // IF frequency offset by half the bandwidth to pos
|
||||
{
|
||||
if ( initSweep || changedSetting ) // Something has changed, or a first start, so need to owrk out some basic things
|
||||
{
|
||||
//Serial.println("InitSweep or changedSetting");
|
||||
Serial.println("InitSweep or changedSetting");
|
||||
autoSweepFreqStep = ( setting.ScanStop - setting.ScanStart ) / displayPoints;
|
||||
|
||||
vbw = autoSweepFreqStep / 1000.0; // Set the video resolution
|
||||
@ -137,6 +137,11 @@ static uint32_t offsetIF; // IF frequency offset by half the bandwidth to pos
|
||||
old_settingAttenuate = setting.Attenuate;
|
||||
}
|
||||
|
||||
// pre-calculate adjustment for RSSI values
|
||||
dBadjust = (double)setting.Attenuate - 120.0 + setting.LevelOffset - setting.ExternalGain;
|
||||
Serial.printf("SweepLo dBadjust = %f; leveloffset = %f; attenuate = %i, ext gain = %f\n",
|
||||
dBadjust, setting.LevelOffset, setting.Attenuate, setting.ExternalGain);
|
||||
|
||||
resetAverage = changedSetting;
|
||||
|
||||
xmit.SetPowerReference ( setting.ReferenceOut ); // Set the GPIO reference output if wanted
|
||||
@ -258,14 +263,6 @@ static uint32_t offsetIF; // IF frequency offset by half the bandwidth to pos
|
||||
startFreq = setting.ScanStart + tempIF; // Start freq for the LO
|
||||
stopFreq = setting.ScanStop + tempIF; // Stop freq for the LO
|
||||
|
||||
if ( setActualPowerRequested )
|
||||
{
|
||||
SetPowerLevel ( actualPower );
|
||||
setActualPowerRequested = false;
|
||||
|
||||
// Serial.printf ( "Setting actual Power %f \n", actualPower );
|
||||
}
|
||||
|
||||
pointMinGain = 100; // Reset min/max values
|
||||
pointMaxRSSI = 0;
|
||||
|
||||
@ -301,6 +298,13 @@ static uint32_t offsetIF; // IF frequency offset by half the bandwidth to pos
|
||||
initSweep = false;
|
||||
changedSetting = false;
|
||||
|
||||
if ( setActualPowerRequested )
|
||||
{
|
||||
SetPowerLevel ( actualPower );
|
||||
setActualPowerRequested = false;
|
||||
// Serial.printf ( "Setting actual Power %f \n", actualPower );
|
||||
}
|
||||
|
||||
lastSweepStartMicros = sweepStartMicros; // Set last time we got here
|
||||
sweepStartMicros = micros(); // Current time
|
||||
sweepMicros = sweepStartMicros - lastSweepStartMicros; // Calculate sweep time (no rollover handling)
|
||||
|
22
cmd.cpp
22
cmd.cpp
@ -1446,9 +1446,9 @@ uint8_t reg69; // Ditto
|
||||
case MSG_ACT_PWR: // Calibrate the indicated power level
|
||||
if ( dataLen != 0 ) // Value specified?
|
||||
{
|
||||
tempValue = atoi ( dataBuff ); // Yes, get new power reading
|
||||
tempValue = atof ( dataBuff ); // Yes, get new power reading
|
||||
RequestSetPowerLevel ( tempValue );
|
||||
Serial.printf ( "Indicated power set to: %d\n", tempValue );
|
||||
Serial.printf ( "Indicated power set to: %f\n", tempValue );
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2229,7 +2229,10 @@ int oldAtten = setting.Attenuate;
|
||||
*/
|
||||
void SetExtGain ( double a )
|
||||
{
|
||||
setting.ExternalGain = a;
|
||||
setting.ExternalGain = a;
|
||||
changedSetting = true;
|
||||
WriteSettings ();
|
||||
pushSettings();
|
||||
}
|
||||
|
||||
double GetExtGain (void )
|
||||
@ -2294,16 +2297,16 @@ void RequestSetPowerLevel ( float o )
|
||||
* "SetPowerLevel"
|
||||
*/
|
||||
|
||||
void SetPowerLevel ( int o )
|
||||
void SetPowerLevel ( double o )
|
||||
{
|
||||
int oldOffset = setting.LevelOffset;
|
||||
double oldOffset = setting.LevelOffset;
|
||||
|
||||
if ( o != 100 )
|
||||
setting.LevelOffset = (int) ( o - (( oldPeakLevel / 2.0 + setting.Attenuate ) - 120.0 )); // WA2FZW
|
||||
if ( o != 100.0 )
|
||||
setting.LevelOffset = ( o - ( (double)oldPeakLevel / 2.0 + setting.Attenuate - setting.ExternalGain - 120.0) ); // WA2FZW
|
||||
else
|
||||
setting.LevelOffset = 0;
|
||||
setting.LevelOffset = 0.0;
|
||||
|
||||
// Serial.printf ( "Peak level: %i, Actual: %i, Level offset: %i \n",
|
||||
// Serial.printf ( "Peak level: %i, Actual: %f, Level offset: %f \n",
|
||||
// oldPeakLevel, o, setting.LevelOffset );
|
||||
|
||||
if ( oldOffset != setting.LevelOffset )
|
||||
@ -2312,6 +2315,7 @@ int oldOffset = setting.LevelOffset;
|
||||
RedrawHisto (); // Redraw labels and restart sweep with new settings
|
||||
WriteSettings ();
|
||||
pushSettings();
|
||||
// Serial.println("Power level changed");
|
||||
}
|
||||
}
|
||||
|
||||
|
2
cmd.h
2
cmd.h
@ -159,7 +159,7 @@ void SetClearStorage ( void ); // Logically erases the saved scan
|
||||
void SetSubtractStorage(void); // Sets the "setting.SubtractStorage" flag
|
||||
|
||||
void RequestSetPowerLevel ( float o ); // Power level calibration
|
||||
void SetPowerLevel ( int o ); // ???
|
||||
void SetPowerLevel ( double o ); // ???
|
||||
|
||||
void SetRBW ( int v ); // Sets the resolution bandwidth
|
||||
|
||||
|
176
data/index.html
176
data/index.html
@ -114,6 +114,8 @@
|
||||
<div class="setting" >
|
||||
<label for="setAtten" class="setting-label">Atten:</label>
|
||||
<input class="value-input" name='setAtten' type="number" step="1" id ="setAtten" maxlength="3" min="0" max="31" required>
|
||||
<label for="setExtern" class="setting-label">External:</label>
|
||||
<input class="value-input" name='setExtern' type="number" step="1" id ="setExtern" maxlength="3" min="-60" max="60" required>
|
||||
<!--<select class="select-input" id="setAtten" name="setAtten"></select> -->
|
||||
dB
|
||||
</div>
|
||||
@ -135,15 +137,14 @@
|
||||
<br />
|
||||
<div id="spur">
|
||||
<div class="setting" >
|
||||
<label class="setting-label">Spur Reduction:</label>
|
||||
<input class="value-input" type="checkbox" id="spurReduction" size="1" value="0" />
|
||||
<label class="setting-label">Spur Reduce:</label>
|
||||
<input class="checkbox-input" type="checkbox" id="spurReduction" size="1" value="0" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div id="tracking">
|
||||
<div class="setting" >
|
||||
<label class="setting-label">Tracking Generator:</label>
|
||||
<input class="value-input" type="checkbox" id="trackGen" size="1" value="0" />
|
||||
<label class="setting-label">TrackGen:</label>
|
||||
<input class="checkbox-input" type="checkbox" id="trackGen" size="1" value="0" />
|
||||
<input class="value-input" type="number" id="setTrackGenPower" placeholder="setTrackGenPower" maxlength = "9" min="-60" max="20" value="0" />
|
||||
dBm
|
||||
</div>
|
||||
@ -158,7 +159,15 @@
|
||||
ms
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="store">
|
||||
<div class = "setting" >
|
||||
<label class="setting-label">Store:</label>
|
||||
<input class="checkbox-input" type="checkbox" id="store1" size="1" value="0" />
|
||||
<input class="checkbox-input" type="checkbox" id="store2" size="1" value="0" />
|
||||
<input class="checkbox-input" type="checkbox" id="store3" size="1" value="0" />
|
||||
<input class="checkbox-input" type="checkbox" id="store4" size="1" value="0" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- form for device settings -->
|
||||
@ -268,6 +277,7 @@ var setStop = document.getElementById('setStop');
|
||||
var setCenter = document.getElementById('setCenter');
|
||||
var setSpan = document.getElementById('setSpan');
|
||||
var setAtten = document.getElementById('setAtten');
|
||||
var setExtern = document.getElementById('setExtern');
|
||||
var setActPower = document.getElementById('setActPower');
|
||||
var levelOffset = document.getElementById('levelOffset');
|
||||
var setRefOut = document.getElementById('setRefOut');
|
||||
@ -282,7 +292,10 @@ var setPreAmp = document.getElementById('setPreAmp');
|
||||
var setAverage = document.getElementById('Average');
|
||||
var setTrackGen = document.getElementById('trackGen');
|
||||
var setTrackGenPower = document.getElementById('setTrackGenPower');
|
||||
|
||||
var store1 = document.getElementById('store1');
|
||||
var store2 = document.getElementById('store2');
|
||||
var store3 = document.getElementById('store3');
|
||||
var store4 = document.getElementById('store4');
|
||||
//var messageWindow = document.getElementById('message');
|
||||
|
||||
var tempCenter;
|
||||
@ -295,6 +308,7 @@ var oldSetRefOut = -2;
|
||||
var oldSetRBW = -10;
|
||||
var oldLevelOffset = 1000;
|
||||
var oldAttenuation = 1000;
|
||||
var oldExternalGain = 1000;
|
||||
var oldDrive = -1;
|
||||
var oldIF = 0;
|
||||
var oldPreAmp = 0;
|
||||
@ -340,11 +354,60 @@ var gainSamples = [
|
||||
{x:100, y:40},
|
||||
]; // dummy for test
|
||||
|
||||
var store1Samples = [
|
||||
{x:0, y:42},
|
||||
{x:10, y:43},
|
||||
{x:20, y:44},
|
||||
{x:30, y:45},
|
||||
{x:40, y:46},
|
||||
{x:50, y:47},
|
||||
{x:80, y:48},
|
||||
{x:90, y:49},
|
||||
{x:100, y:40},
|
||||
];
|
||||
|
||||
var store2Samples = [
|
||||
{x:0, y:42},
|
||||
{x:10, y:43},
|
||||
{x:20, y:44},
|
||||
{x:30, y:45},
|
||||
{x:40, y:46},
|
||||
{x:50, y:47},
|
||||
{x:80, y:48},
|
||||
{x:90, y:49},
|
||||
{x:100, y:40},
|
||||
];
|
||||
|
||||
var store3Samples = [
|
||||
{x:0, y:42},
|
||||
{x:10, y:43},
|
||||
{x:20, y:44},
|
||||
{x:30, y:45},
|
||||
{x:40, y:46},
|
||||
{x:50, y:47},
|
||||
{x:80, y:48},
|
||||
{x:90, y:49},
|
||||
{x:100, y:40},
|
||||
];
|
||||
|
||||
var store4Samples = [
|
||||
{x:0, y:42},
|
||||
{x:10, y:43},
|
||||
{x:20, y:44},
|
||||
{x:30, y:45},
|
||||
{x:40, y:46},
|
||||
{x:50, y:47},
|
||||
{x:80, y:48},
|
||||
{x:90, y:49},
|
||||
{x:100, y:40},
|
||||
];
|
||||
|
||||
|
||||
var chartSA = new CanvasJS.Chart("chartSA",
|
||||
{
|
||||
animationEnabled: false,
|
||||
zoomEnabled: true,
|
||||
zoomType: "xy",
|
||||
//height:800,
|
||||
title: {
|
||||
text: "ESP32 TinySA",
|
||||
@ -425,6 +488,34 @@ var chartSA = new CanvasJS.Chart("chartSA",
|
||||
dataPoints : dBSamples,
|
||||
showInLegend : true,
|
||||
visible : false
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "store1",
|
||||
dataPoints : store1Samples,
|
||||
showInLegend : true,
|
||||
visible : false
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "store2",
|
||||
dataPoints : store2Samples,
|
||||
showInLegend : true,
|
||||
visible : false
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "store3",
|
||||
dataPoints : store3Samples,
|
||||
showInLegend : true,
|
||||
visible : false
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "store4",
|
||||
dataPoints : store4Samples,
|
||||
showInLegend : true,
|
||||
visible : false
|
||||
}
|
||||
]
|
||||
});
|
||||
@ -473,6 +564,10 @@ setAtten.addEventListener('change', (event) => {
|
||||
sendValue("A", setAtten.value);
|
||||
});
|
||||
|
||||
setExtern.addEventListener('change', (event) => {
|
||||
sendValue("E", setExtern.value);
|
||||
});
|
||||
|
||||
setRBW.addEventListener('change', (event) => {
|
||||
sendValue("R", setRBW.value);
|
||||
});
|
||||
@ -502,6 +597,62 @@ setTrackGen.addEventListener('change', (event) => {
|
||||
});
|
||||
|
||||
|
||||
store1.addEventListener('change', (event) => {
|
||||
if (store1.checked) {
|
||||
var b = parseFloat(levelOffset.value) + parseFloat(setAtten.value) - 120 - parseFloat(setExtern.value);
|
||||
chartSA.options.data[5].dataPoints = chartSA.options.data[1].dataPoints.map(obj => {
|
||||
let rObj = {}
|
||||
rObj.x = obj.x
|
||||
rObj.y = obj.y/2+b
|
||||
return rObj
|
||||
})
|
||||
} else {
|
||||
chartSA.options.data[5].dataPoints.length = 2; // reset
|
||||
}
|
||||
});
|
||||
|
||||
store2.addEventListener('change', (event) => {
|
||||
if (store2.checked) {
|
||||
var b = parseInt(levelOffset.value) + parseInt(setAtten.value) - 120 - parseFloat(setExtern.value);
|
||||
chartSA.options.data[6].dataPoints = chartSA.options.data[1].dataPoints.map(obj => {
|
||||
let rObj = {}
|
||||
rObj.x = obj.x
|
||||
rObj.y = obj.y/2+b
|
||||
return rObj
|
||||
})
|
||||
} else {
|
||||
chartSA.options.data[6].dataPoints.length = 2; // reset
|
||||
}
|
||||
});
|
||||
|
||||
store3.addEventListener('change', (event) => {
|
||||
if (store3.checked) {
|
||||
var b = parseInt(levelOffset.value) + parseInt(setAtten.value) - 120 - parseFloat(setExtern.value);
|
||||
chartSA.options.data[7].dataPoints = chartSA.options.data[1].dataPoints.map(obj => {
|
||||
let rObj = {}
|
||||
rObj.x = obj.x
|
||||
rObj.y = obj.y/2+b
|
||||
return rObj
|
||||
})
|
||||
} else {
|
||||
chartSA.options.data[7].dataPoints.length = 2; // reset
|
||||
}
|
||||
});
|
||||
|
||||
store4.addEventListener('change', (event) => {
|
||||
if (store4.checked) {
|
||||
var b = parseInt(levelOffset.value) + parseInt(setAtten.value) - 120 - parseFloat(setExtern.value);
|
||||
chartSA.options.data[8].dataPoints = chartSA.options.data[1].dataPoints.map(obj => {
|
||||
let rObj = {}
|
||||
rObj.x = obj.x
|
||||
rObj.y = obj.y/2+b
|
||||
return rObj
|
||||
})
|
||||
} else {
|
||||
chartSA.options.data[8].dataPoints.length = 2; // reset
|
||||
}
|
||||
});
|
||||
|
||||
//var roundtripTime = document.getElementById('roundtripTime');
|
||||
//var messageCount = document.getElementById('messageCount');
|
||||
//var missedReplies = document.getElementById('missedReplies');
|
||||
@ -583,6 +734,11 @@ function handleSettings (settings)
|
||||
oldAttenuation = settings.attenuation;
|
||||
}
|
||||
|
||||
if (settings.extGain != oldExternalGain) {
|
||||
setExtern.value = settings.extGain;
|
||||
oldExternalGain = settings.extGain;
|
||||
}
|
||||
|
||||
if (settings.setRBW != oldSetRBW) {
|
||||
setRBW.value = settings.setRBW;
|
||||
oldSetRBW = settings.setRBW;
|
||||
@ -639,7 +795,7 @@ function handleSettings (settings)
|
||||
|
||||
}
|
||||
|
||||
function handleData (data)
|
||||
function handleData (data) // rarely used! see handleChunkData for most sweeps
|
||||
{
|
||||
|
||||
if (data.sweepPoints != sweepPoints.value) {
|
||||
@ -651,7 +807,7 @@ function handleData (data)
|
||||
}
|
||||
|
||||
|
||||
var b = parseInt(levelOffset.value) + parseInt(setAtten.value) - 120;
|
||||
var b = parseFloat(levelOffset.value) + parseFloat(setAtten.value) - 120 - parseFloat(setExtern.value);
|
||||
//chartSA.options.data[0].dataPoints = data.Points; // First series dB
|
||||
chartSA.options.data[0].dataPoints = data.Points.map(obj => {
|
||||
let rObj = {}
|
||||
@ -732,7 +888,7 @@ function handleChunkData (data)
|
||||
|
||||
var dataStart = data.StartIndex;
|
||||
|
||||
var b = parseInt(levelOffset.value) + parseInt(setAtten.value) - 120;
|
||||
var b = parseInt(levelOffset.value) + parseInt(setAtten.value) - 120 - parseFloat(setExtern.value);
|
||||
|
||||
var a = 1/setAverage.value;
|
||||
|
||||
|
@ -406,6 +406,7 @@ var chartSA = new CanvasJS.Chart("chartSA",
|
||||
{
|
||||
animationEnabled: false,
|
||||
zoomEnabled: true,
|
||||
zoomType: "xy",
|
||||
//height:800,
|
||||
title: {
|
||||
text: "ESP32 TinySA",
|
||||
@ -413,13 +414,34 @@ var chartSA = new CanvasJS.Chart("chartSA",
|
||||
},
|
||||
axisX: {
|
||||
title: "Frequency (MHz)",
|
||||
titleFontSize: 24
|
||||
titleFontSize: 24,
|
||||
crosshair: {
|
||||
enabled:true
|
||||
},
|
||||
stripLines:[
|
||||
{
|
||||
startValue:434.12,
|
||||
thickness:1,
|
||||
color:"#d8d8d8",
|
||||
}
|
||||
]
|
||||
},
|
||||
axisY:
|
||||
{
|
||||
title: "dB",
|
||||
titleFontSize: 24,
|
||||
minimum: -120
|
||||
minimum: -120,
|
||||
crosshair: {
|
||||
enabled:true
|
||||
},
|
||||
stripLines:[
|
||||
{
|
||||
startValue:-33,
|
||||
endValue:-30,
|
||||
color:"#d8d8d8",
|
||||
}
|
||||
]
|
||||
|
||||
},
|
||||
axisY2: [
|
||||
{
|
||||
@ -822,6 +844,7 @@ function handleData (data)
|
||||
|
||||
chartSA.options.axisX.minimum = setStart.value;
|
||||
chartSA.options.axisX.maximum = setStop.value;
|
||||
chartSA.options.axisX.stripLines[0].value = setIF.value;
|
||||
// chartSA.options.axisY.minimum = -120;
|
||||
// chartSA.options.axisY.maximum = 0;
|
||||
chartSA.options.axisY2.minimum = 0;
|
||||
|
@ -234,7 +234,7 @@ typedef struct {
|
||||
double ExternalGain = 0.0; // External gain or attenuation
|
||||
int8_t Generate = 0; // Signal generator mode if not zero (***)
|
||||
int16_t Bandwidth10 = 0; // Resolution Bandwidth setting*10; 0 = auto
|
||||
int16_t LevelOffset = 0; // Calibration value (move to config?)
|
||||
double LevelOffset = 0; // Calibration value (move to config?)
|
||||
int8_t ReferenceOut = 1; // Transmitter GPIO2 set to 15MHz
|
||||
int16_t PowerGrid = 10; // dB/vertical divison on the grid
|
||||
bool Spur = 0; // Spur reduction on or off
|
||||
|
@ -391,6 +391,7 @@ uint32_t sweepPoints; // Number of points in the sweep. Can be more than DIS
|
||||
uint32_t startFreq = 0; // Default start frequency is 0MHz
|
||||
uint32_t stopFreq = 100000000; // Default stop frequency is 100MHz
|
||||
uint32_t tempIF; // IF used for this sweep. Changes if Spur reduction is on
|
||||
double dBadjust; // Sum of attenuation, external gain, calibration offset and RBW correction
|
||||
|
||||
/*
|
||||
* Variables for offset frequency tuning
|
||||
@ -1746,7 +1747,7 @@ uint16_t rssiToImgY ( uint8_t rSSI )
|
||||
|
||||
double rssiTodBm ( uint8_t rSSI )
|
||||
{
|
||||
return (( rSSI / 2.0 + setting.Attenuate ) - 120.0 ) + setting.LevelOffset;
|
||||
return ( rSSI / 2.0 + dBadjust );
|
||||
}
|
||||
|
||||
|
||||
@ -1756,7 +1757,7 @@ double rssiTodBm ( uint8_t rSSI )
|
||||
|
||||
uint8_t dBmToRSSI ( double dBm )
|
||||
{
|
||||
return ( 2 * ( dBm - setting.Attenuate + 120.0 - setting.LevelOffset ) );
|
||||
return ( 2 * ( dBm - dBadjust ) );
|
||||
}
|
||||
|
||||
|
||||
@ -1775,7 +1776,7 @@ void DisplayPoint ( uint8_t* data, int i, int color )
|
||||
|
||||
int lastPoint = i - 1;
|
||||
int delta = maxGrid - minGrid;
|
||||
double f0 = (( data[i] / 2.0 + setting.Attenuate ) - 120.0 ) + setting.LevelOffset; // Current point
|
||||
double f0 = data[i] / 2.0 + dBadjust; // Current point
|
||||
f0 = ( f0 - minGrid ) * gridHeight / delta;
|
||||
|
||||
if ( f0 >= gridHeight )
|
||||
@ -1784,7 +1785,7 @@ void DisplayPoint ( uint8_t* data, int i, int color )
|
||||
if ( f0 < 0 )
|
||||
f0 = 0;
|
||||
|
||||
double f1 = (( data[lastPoint] / 2.0 + setting.Attenuate ) - 120.0) + setting.LevelOffset; // Previous point
|
||||
double f1 = data[lastPoint] / 2.0 + dBadjust; // Previous point
|
||||
|
||||
f1 = ( f1 - minGrid ) * gridHeight / delta;
|
||||
|
||||
|
@ -468,6 +468,7 @@ void onGetSweep ( AsyncWebServerRequest *request )
|
||||
root["stop"] = setting.ScanStop / 1000.0;
|
||||
root["IF"] = setting.IF_Freq / 1000000.0;
|
||||
root["attenuation"] = setting.Attenuate;
|
||||
root["extGain"] = setting.ExternalGain;
|
||||
root["levelOffset"] = setting.LevelOffset;
|
||||
root["setRBW"] = setting.Bandwidth10;
|
||||
root["bandwidth"] = bandwidth;
|
||||
@ -601,6 +602,7 @@ static DynamicJsonDocument jsonDocument ( capacity ); // buffer for json data to
|
||||
jsonDocument["stop"] = stopFreq_IF / 1000.0;
|
||||
jsonDocument["IF"] = sigFreq_IF / 1000000.0;
|
||||
jsonDocument["attenuation"] = setting.Attenuate;
|
||||
jsonDocument["extGain"] = setting.ExternalGain;
|
||||
jsonDocument["levelOffset"] = setting.LevelOffset;
|
||||
jsonDocument["setRBW"] = setting.Bandwidth10;
|
||||
jsonDocument["bandwidth"] = bandwidth;
|
||||
@ -645,6 +647,7 @@ static DynamicJsonDocument jsonDocument ( capacity ); // buffer for json data to
|
||||
jsonDocument["stop"] = stopFreq_RX / 1000.0;
|
||||
jsonDocument["IF"] = setting.IF_Freq / 1000000.0;
|
||||
jsonDocument["attenuation"] = setting.Attenuate;
|
||||
jsonDocument["extGain"] = setting.ExternalGain;
|
||||
jsonDocument["levelOffset"] = setting.LevelOffset;
|
||||
jsonDocument["setRBW"] = setting.Bandwidth10;
|
||||
jsonDocument["bandwidth"] = bandwidth;
|
||||
@ -689,6 +692,7 @@ static DynamicJsonDocument jsonDocument ( capacity ); // buffer for json data to
|
||||
jsonDocument["stop"] = ( setting.BandscopeStart + setting.BandscopeSpan ) / 1000.0;
|
||||
jsonDocument["IF"] = setting.IF_Freq / 1000000.0;
|
||||
jsonDocument["attenuation"] = setting.Attenuate;
|
||||
jsonDocument["extGain"] = setting.ExternalGain;
|
||||
jsonDocument["levelOffset"] = setting.LevelOffset;
|
||||
jsonDocument["setRBW"] = setting.Bandwidth10;
|
||||
jsonDocument["bandwidth"] = bandwidth;
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "ESPAsyncWebServer.h" // ESP32 Webserver library
|
||||
#include "SPIFFS.h" // ESP32 File system
|
||||
#include <TFT_eSPI.h> // Display library
|
||||
#include "cmd.h"
|
||||
|
||||
#include <AsyncJson.h>
|
||||
#include <ArduinoJson.h> // Install using Library Manager or go to arduinojson.org
|
||||
@ -53,17 +54,17 @@
|
||||
*/
|
||||
|
||||
int GetPointsAsXML ( void textHandler (char *s) );
|
||||
void set_sweep_frequency ( int type, int32_t frequency );
|
||||
void SetRBW ( int );
|
||||
void SetAttenuation ( int a );
|
||||
void RequestSetPowerLevel ( float o );
|
||||
void SetPowerLevel ( int o );
|
||||
void SetPowerReference (int freq );
|
||||
void SetLoDrive ( uint8_t level );
|
||||
bool SetIFFrequency ( int32_t f );
|
||||
void SetPreAmpGain ( int g );
|
||||
// void set_sweep_frequency ( int type, int32_t frequency );
|
||||
// void SetRBW ( int );
|
||||
// void SetAttenuation ( int a );
|
||||
// void RequestSetPowerLevel ( float o );
|
||||
// void SetPowerLevel ( double o );
|
||||
// void SetPowerReference (int freq );
|
||||
// void SetLoDrive ( uint8_t level );
|
||||
// bool SetIFFrequency ( int32_t f );
|
||||
// void SetPreAmpGain ( int g );
|
||||
void WriteSettings ();
|
||||
void SetSpur ( int v );
|
||||
// void SetSpur ( int v );
|
||||
|
||||
/*
|
||||
* variables and objects outside of TinySA_wifi
|
||||
|
Loading…
Reference in New Issue
Block a user