Started on sig gen web page
This commit is contained in:
parent
8928adfeed
commit
acd6e2b6f4
19
SigLo.ino
19
SigLo.ino
@ -107,6 +107,11 @@ void initSigLow()
|
||||
|
||||
oldFreq = 0; // Force write of frequency on first loop
|
||||
|
||||
#ifdef USE_WIFI
|
||||
if ( numberOfWebsocketClients > 0 )
|
||||
pushSettings ();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -128,6 +133,7 @@ void doSigGenLow ()
|
||||
showUpDownButtons = 1;
|
||||
#endif
|
||||
|
||||
boolean changedSetting = false;
|
||||
|
||||
// Get current touch state and coordinates
|
||||
boolean pressed = tft.getTouch(&t_x, &t_y); // Just uses standard TFT_eSPI function as not bothered about speed
|
||||
@ -155,6 +161,7 @@ void doSigGenLow ()
|
||||
case 5:
|
||||
case 6:
|
||||
incrementFreq( pow(10, 8-b) );
|
||||
changedSetting=true;
|
||||
break;
|
||||
|
||||
case 7: // Decrement buttons
|
||||
@ -165,6 +172,7 @@ void doSigGenLow ()
|
||||
case 12:
|
||||
case 13:
|
||||
decrementFreq( pow(10, 15-b) );
|
||||
changedSetting=true;
|
||||
break;
|
||||
|
||||
case 14: // Return to SAlo mode
|
||||
@ -231,6 +239,7 @@ void doSigGenLow ()
|
||||
tft.setTextColor(TFT_WHITE, SIG_BACKGROUND_COLOR );
|
||||
tft.print("OFF");
|
||||
}
|
||||
changedSetting = true;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -250,6 +259,7 @@ void doSigGenLow ()
|
||||
drawSlider ( SLIDER_X, SLIDER_Y, p, pwr, "dBm" );
|
||||
att.SetAtten ( ( 100.0 - p ) / 100.0 * ATTENUATOR_RANGE ); // set attenuator to give required output
|
||||
sigGenSetting.Power = pwr;
|
||||
changedSetting = true;
|
||||
}
|
||||
|
||||
|
||||
@ -278,13 +288,20 @@ void doSigGenLow ()
|
||||
if (sigGenOutputOn)
|
||||
{
|
||||
delayMicroseconds(300);
|
||||
SetRX(3);
|
||||
SetRX(3); // both LO and RX in tx mode
|
||||
}
|
||||
changedSetting = true;
|
||||
}
|
||||
|
||||
oldFreq = sigGenSetting.Frequency;
|
||||
oldIF = setting.IF_Freq;
|
||||
oldSigGenOutputOn = sigGenOutputOn;
|
||||
|
||||
#ifdef USE_WIFI
|
||||
if ( numberOfWebsocketClients > 0 )
|
||||
pushSettings ();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>TinySA-ESP</title>
|
||||
<title>simpleSA</title>
|
||||
<link rel="stylesheet" type="text/css" href="styles.css">
|
||||
<!-- get file below from http://canvasjs.com/ -->
|
||||
<script type="text/javascript" src="canvasjs.min.js"></script>
|
||||
@ -41,7 +41,7 @@
|
||||
</head>
|
||||
|
||||
<body style="min-width:100vw">
|
||||
<div class='norm'>
|
||||
<div class='norm' id="top">
|
||||
|
||||
<button id="homeButton" onclick="window.location.href='index.html';">Home</button>
|
||||
<!-- <button id="settingsButton" onclick="window.location.href='settings.html';">Settings</button>
|
||||
@ -50,7 +50,28 @@
|
||||
<button id="aboutButton" onclick="window.location.href='about.html';">About</button>
|
||||
</div>
|
||||
<div class ="Grid">
|
||||
<div class = "Grid-cell" id="chartSA" ></div>
|
||||
<div class = "Grid-cell" id="chartSA" >
|
||||
<!-- container for chart -->
|
||||
</div>
|
||||
|
||||
<div class = "Grid-cell" id="sigGen" style="display:none">
|
||||
<!-- container for sig gen controls -->
|
||||
|
||||
<br />
|
||||
<label for="setSigFreq" class="FreqLabel">Frequency:</label>
|
||||
<input class="sigFreqInput" id="setSigFreq" name="setSigFreq" type="number" min="0" max="250000000">
|
||||
Hz
|
||||
<br />
|
||||
<label for="setSigLevel" class = "SigLevel">Level:</label>
|
||||
<input class="sigLevelInput" id="setSigLevel" name="setSigLevel" type="number" min="-70" max="20">
|
||||
dBm
|
||||
|
||||
<div class="slidecontainer">
|
||||
<input type="range" min="-70" max="20" value="10" class="slider" id="sigLevelSlider">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div class = "Grid-cell-side" id="postSweepSettings" >
|
||||
@ -62,7 +83,7 @@
|
||||
<option class="sweep-option" value="2">Sig Gen</option>
|
||||
<!-- <option class="sweep-option" value="3">Sig Gen High</option> -->
|
||||
<option class="sweep-option" value="4">SAW Test</option>
|
||||
<option class="sweep-option" value="5">Zero Span</option>
|
||||
<!-- <option class="sweep-option" value="5">Zero Span</option> -->
|
||||
<!-- <option class="sweep-option" value="6">Zero Span High</option> -->
|
||||
<option class="sweep-option" value="7">Bandscope</option>
|
||||
<option class="sweep-option" value="8">RBW Test</option>
|
||||
@ -283,6 +304,10 @@
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var chartDiv = document.getElementById('chartSA');
|
||||
var sigDiv = document.getElementById('sigGen');
|
||||
|
||||
var refreshInterval = document.getElementById('refreshInterval');
|
||||
|
||||
var refresh = document.getElementById('refresh');
|
||||
@ -315,6 +340,10 @@ var store3 = document.getElementById('store3');
|
||||
var store4 = document.getElementById('store4');
|
||||
//var messageWindow = document.getElementById('message');
|
||||
|
||||
var sigLevelSlider = document.getElementById('sigLevelSlider');
|
||||
var setSigLevel = document.getElementById('setSigLevel');
|
||||
var setSigFreq = document.getElementById('setSigFreq');
|
||||
|
||||
var tempCenter;
|
||||
|
||||
// initialise these to silly values to force an update first time round
|
||||
@ -427,7 +456,7 @@ var chartSA = new CanvasJS.Chart("chartSA",
|
||||
zoomType: "xy",
|
||||
//height:800,
|
||||
title: {
|
||||
text: "ESP32 TinySA",
|
||||
text: "simpleSA",
|
||||
fontSize: 28
|
||||
},
|
||||
axisX: {
|
||||
@ -677,6 +706,21 @@ store4.addEventListener('change', (event) => {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
setSigFreq.addEventListener('change', (event) => {
|
||||
sendValue("F", setSigFreq.value);
|
||||
});
|
||||
|
||||
setSigLevel.addEventListener('change', (event) => {
|
||||
sendValue("L", setSigLevel.value);
|
||||
});
|
||||
|
||||
// Update the current level value (each time you drag the slider handle)
|
||||
sigLevelSlider.oninput = function() {
|
||||
setSigLevel.innerHTML = this.value;
|
||||
}
|
||||
|
||||
|
||||
//var roundtripTime = document.getElementById('roundtripTime');
|
||||
//var messageCount = document.getElementById('messageCount');
|
||||
//var missedReplies = document.getElementById('missedReplies');
|
||||
@ -709,7 +753,7 @@ function renderChart()
|
||||
//missedReplies.value = missedMessageCounter;
|
||||
hostName.value = "ws://" + location.host + ":81";
|
||||
|
||||
// connect to TinySA server
|
||||
// connect to simpleSA server
|
||||
connect(hostName.value);
|
||||
|
||||
// At this point the page is running
|
||||
@ -732,6 +776,7 @@ function handleSettings (settings)
|
||||
setStart.max = settings.IF;
|
||||
setStop.max = 600;
|
||||
setStart.min = 350;
|
||||
setStart.disabled = false;
|
||||
setStop.min = settings.IF;
|
||||
setStop.disabled = false;
|
||||
setCenter.disabled = true;
|
||||
@ -741,11 +786,14 @@ function handleSettings (settings)
|
||||
setSpur.disabled = true;
|
||||
setTrackGen.disabled = true;
|
||||
setTrackGenPower.disabled = true;
|
||||
sigDiv.style.display = "none";
|
||||
chartDiv.style.display = "block";
|
||||
} else if (settings.mode == 4 ) { // IF Sweep (SAW test)
|
||||
setStart.max = settings.IF;
|
||||
setStop.max = 460;
|
||||
setStart.min = 400;
|
||||
setStop.min = settings.IF;
|
||||
setStart.disabled = false;
|
||||
setStop.disabled = false;
|
||||
setCenter.disabled = true;
|
||||
setSpan.disabled = true;
|
||||
@ -754,11 +802,14 @@ function handleSettings (settings)
|
||||
setSpur.disabled = true;
|
||||
setTrackGen.disabled = true;
|
||||
setTrackGenPower.disabled = true;
|
||||
sigDiv.style.display = "none";
|
||||
chartDiv.style.display = "block";
|
||||
} else if (settings.mode == 7 ) { // BANDSCOPE
|
||||
setStart.max = 350;
|
||||
setStop.max = 350;
|
||||
setStart.min = 0;
|
||||
setStop.min = 0;
|
||||
setStart.disabled = false;
|
||||
setStop.disabled = true;
|
||||
setCenter.disabled = true;
|
||||
setSpan.disabled = false;
|
||||
@ -767,11 +818,30 @@ function handleSettings (settings)
|
||||
setSpur.disabled = true;
|
||||
setTrackGen.disabled = true;
|
||||
setTrackGenPower.disabled = true;
|
||||
sigDiv.style.display = "none";
|
||||
chartDiv.style.display = "block";
|
||||
} else if (settings.mode == 2 ) { // Signal Generator
|
||||
setStart.max = 350;
|
||||
setStop.max = 350;
|
||||
setStart.min = 0;
|
||||
setStop.min = 0;
|
||||
setStart.disabled = true;
|
||||
setStop.disabled = true;
|
||||
setCenter.disabled = true;
|
||||
setSpan.disabled = true;
|
||||
setRBW.disabled = true;
|
||||
setRefOut.disabled = true;
|
||||
setSpur.disabled = true;
|
||||
setTrackGen.disabled = true;
|
||||
setTrackGenPower.disabled = true;
|
||||
sigDiv.style.display = "block";
|
||||
chartDiv.style.display = "none";
|
||||
} else {
|
||||
setStart.max = 350;
|
||||
setStop.max = 350;
|
||||
setStart.min = 0;
|
||||
setStop.min = 0;
|
||||
setStart.disabled = false;
|
||||
setStop.disabled = false;
|
||||
setCenter.disabled = false;
|
||||
setSpan.disabled = false;
|
||||
@ -780,6 +850,8 @@ function handleSettings (settings)
|
||||
setSpur.disabled = false;
|
||||
setTrackGen.disabled = false;
|
||||
setTrackGenPower.disabled = false;
|
||||
sigDiv.style.display = "none";
|
||||
chartDiv.style.display = "block";
|
||||
}
|
||||
|
||||
|
||||
@ -1304,6 +1376,11 @@ function sendValue(c, val)
|
||||
// S Spur reduction Off/On
|
||||
// t trackGen Off/On/Fixed
|
||||
// T trackGen output level
|
||||
// f trackgen signal generator frequency
|
||||
// F Sig Gen frequency
|
||||
// L Sig Gen level (dBm)
|
||||
// G Sig Gen Off/On
|
||||
// P Sig Gen set max output level (dBm)
|
||||
//
|
||||
//connection.send("# " + messageCounter + " " + sampleThreshold + " " + sampleSize);
|
||||
connection.send("#" + c + " " + val);
|
||||
|
423
data/siggen.html
423
data/siggen.html
@ -32,7 +32,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>TinySA-ESP</title>
|
||||
<title>simpleSA-ESP</title>
|
||||
<link rel="stylesheet" type="text/css" href="styles.css">
|
||||
<!-- get file below from http://canvasjs.com/ -->
|
||||
<script type="text/javascript" src="canvasjs.min.js"></script>
|
||||
@ -62,7 +62,7 @@
|
||||
<option class="sweep-option" value="2">Sig Gen</option>
|
||||
<!-- <option class="sweep-option" value="3">Sig Gen High</option> -->
|
||||
<option class="sweep-option" value="4">SAW Test</option>
|
||||
<option class="sweep-option" value="5">Zero Span</option>
|
||||
<!-- <option class="sweep-option" value="5">Zero Span</option> -->
|
||||
<!-- <option class="sweep-option" value="6">Zero Span High</option> -->
|
||||
<option class="sweep-option" value="7">Bandscope</option>
|
||||
<option class="sweep-option" value="8">RBW Test</option>
|
||||
@ -70,132 +70,26 @@
|
||||
<img src="refresh.png" id="refresh" name = "refresh" height = "18">
|
||||
</div>
|
||||
<div class="setting" >
|
||||
<label for="setStart" class="setting-label">Start:</label>
|
||||
<input class="value-input" name='setStart' type="number" id="setStart" maxlength="9" min="0" max="350" required>
|
||||
MHz
|
||||
</div>
|
||||
<div class="setting" >
|
||||
<label for="setStop" class="setting-label">Stop:</label>
|
||||
<input class="value-input" name='setStop' type="number" id ="setStop" maxlength="9" min="0" max="350" required>
|
||||
<label for="setFreq" class="setting-label">Frequency:</label>
|
||||
<input class="value-input" name='setFreq' type="number" id="setFreq" maxlength="9" min="0" max="350" required>
|
||||
MHz
|
||||
</div>
|
||||
<br />
|
||||
<div class="setting" >
|
||||
<label for="setCenter" class="setting-label">Centre:</label>
|
||||
<input class="value-input" name='setCenter' type="number" id ="setCenter" maxlength="9" min="0" max="350" required>
|
||||
MHz
|
||||
</div>
|
||||
<div class="setting" >
|
||||
<label for="setSpan" class="setting-label">Span:</label>
|
||||
<!--<select class="select-input" id="setSpan" name="setSpan">
|
||||
<option class="select-option" value="250">250</option>
|
||||
<option class="select-option" value="100">100</option>
|
||||
<option class="select-option" value="50">50</option>
|
||||
<option class="select-option" value="20">20</option>
|
||||
<option class="select-option" value="10">10</option>
|
||||
<option class="select-option" value="4">4</option>
|
||||
<option class="select-option" value="2">2</option>
|
||||
<option class="select-option" value="1">1</option>
|
||||
<option class="select-option" value="0.5">0.5</option>
|
||||
</select> -->
|
||||
<input class="value-input" name='setSpan' type="number" id ="setSpan" maxlength="9" min="0" max="350" step="0.1" required>
|
||||
MHz
|
||||
<label for="setLevel" class="setting-label">Level:</label>
|
||||
<input class="value-input" name='setLevel' type="number" step="1" id ="setLevel" maxlength="4" min="-31" max="0" required>
|
||||
dBm
|
||||
</div>
|
||||
<!--
|
||||
<label class="setting-label">Width:</label>
|
||||
<input class="value-input" name='setWidth' type="text" id ="setWidth" placeholder="width" maxlength="9" min="0" max="250" required>
|
||||
MHz
|
||||
</div> -->
|
||||
<br />
|
||||
<!-- <div style="width:180px; display: inline-block">Ext gain:<input style = "width:100px" name='setExtGain' type="text" placeholder="extGain" maxlength="9" min="-100" max="40" required></div> -->
|
||||
<div id="signal_info">
|
||||
<div class="setting" >
|
||||
<label class="setting-label">RBW:</label>
|
||||
<input class="value-display" type="text" disabled="1" id="actRBW" size="1" value="300" />
|
||||
kHz
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting" >
|
||||
<label for="setRBW" class="setting-label">RBW:</label>
|
||||
<select class="select-input" id="setRBW" name="setRBW"></select>
|
||||
kHz
|
||||
</div>
|
||||
<!-- <div style="width:150px; display: inline-block">
|
||||
<button type="submit">Update</button>
|
||||
</div> -->
|
||||
<br />
|
||||
<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>
|
||||
dB
|
||||
<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>
|
||||
<br />
|
||||
<div class="setting" >
|
||||
<label for="setRefOut" class="setting-label">Reference:</label>
|
||||
<select class="select-input" id="setRefOut" name="setRefOut">
|
||||
<option class="select-option" value="-1">Off</option>
|
||||
<option class="select-option" value="0">30</option>
|
||||
<option class="select-option" value="1">15</option>
|
||||
<option class="select-option" value="2">10</option>
|
||||
<option class="select-option" value="3">4</option>
|
||||
<option class="select-option" value="4">3</option>
|
||||
<option class="select-option" value="5">2</option>
|
||||
<option class="select-option" value="6">1</option>
|
||||
</select>
|
||||
MHz
|
||||
</div>
|
||||
<br />
|
||||
<div id="spur">
|
||||
<div class="setting" >
|
||||
<label class="setting-label">Spur Reduce:</label>
|
||||
<input class="checkbox-input" type="checkbox" id="spurReduction" size="1" value="0" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="tracking">
|
||||
<div class="setting" >
|
||||
<label class="setting-label">TrackGen:</label>
|
||||
<input class="checkbox-input" type="checkbox" id="trackGen" size="1" value="0" />
|
||||
<label class="setting-label">Level:</label>
|
||||
<input class="value-input" type="number" id="setTrackGenPower" placeholder="setTrackGenPower" maxlength = "6" min="-60" max="20" value="0" />
|
||||
dBm
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div id="signal_info">
|
||||
<div class="setting" >
|
||||
<label class="setting-label">Points:</label>
|
||||
<input class="value-display" type="text" disabled="1" id="sweepPoints" size="1" value="65000" />
|
||||
<label class="setting-label">Time:</label>
|
||||
<input class="value-display" type="text" disabled="1" id="sweepTime" size="1" value="290" />
|
||||
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 -->
|
||||
<hr />
|
||||
<h1>Settings</h1>
|
||||
<div class="setting" >
|
||||
<label for="levelOffset" class="setting-label">Offset:</label>
|
||||
<input class="value-display" type="text" disabled="1" id="levelOffset" size="1" value="10" />
|
||||
<label for="calLevel" class="setting-label">Max Level:</label>
|
||||
<input class="value-display" type="text" disabled="1" id="calLevel" size="1" value="0" />
|
||||
dB
|
||||
</div>
|
||||
<div class="setting" >
|
||||
<button class = "set-button" type="submit" id="setActPower">Set Actual</button>
|
||||
<input class="value-input" type="number" id="setPowerValue" placeholder="setPowerValue" maxlength = "9" min="-60" max="20" value="0" />
|
||||
<button class = "set-button" type="submit" id="setActPower">Set Max</button>
|
||||
<input class="value-input" type="number" id="setMaxPower" placeholder="setMaxPower" maxlength = "9" min="-60" max="20" value="0" />
|
||||
dBm
|
||||
</div>
|
||||
<br />
|
||||
@ -213,39 +107,10 @@
|
||||
</select>
|
||||
dBm
|
||||
</div>
|
||||
<div class="setting" >
|
||||
<label for="setPreAmp" class="setting-label">Pre-amp:</label>
|
||||
<select class="select-input" id="setPreAmp" name="setPreAmp">
|
||||
<option value="96">Auto</option> <!--0x60 Auto -->
|
||||
<option value="0">5</option> <!--0x00 LNA Min 5dB-->
|
||||
<option value="1">8</option> <!--0x01 -->
|
||||
<option value="2">11</option> <!--0x02 -->
|
||||
<option value="3">14</option> <!--0x03 -->
|
||||
<option value="4">17</option> <!--0x04 -->
|
||||
<option value="5">20</option> <!--0x05 -->
|
||||
<option value="6">23</option> <!--0x06 -->
|
||||
<option value="7">27</option> <!--0x07 -->
|
||||
<option value="8">30</option> <!--0x08 -->
|
||||
<option value="16">25</option> <!--0x10 LNA Max 25dB-->
|
||||
<option value="17">28</option> <!--0x11 -->
|
||||
<option value="18">31</option> <!--0x12 -->
|
||||
<option value="19">34</option> <!--0x13 -->
|
||||
<option value="20">37</option> <!--0x14 -->
|
||||
<option value="21">40</option> <!--0x15 -->
|
||||
<option value="22">43</option> <!--0x16 -->
|
||||
<option value="23">46</option> <!--0x17 -->
|
||||
<option value="24">49</option> <!--0x18 -->
|
||||
</select>
|
||||
dB
|
||||
</div>
|
||||
<div class="setting" >
|
||||
<div class="setting" >
|
||||
<label for="setIF" class="setting-label">IF:</label>
|
||||
<input class="value-input" type="number" id="setIF" size="1" value="433.92" min="433" max=435 step=0.01 />
|
||||
MHz
|
||||
</div>
|
||||
<div class="setting" >
|
||||
<label for="Average" class="setting-label">Average:</label>
|
||||
<input class="value-input" type="number" id="Average" size="1" value="10" min="2" max=100 step=1 />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -287,258 +152,27 @@ var refreshInterval = document.getElementById('refreshInterval');
|
||||
|
||||
var refresh = document.getElementById('refresh');
|
||||
var setMode = document.getElementById('setMode');
|
||||
var sweepStart = document.getElementById('sweepStart');
|
||||
var sweepStop = document.getElementById('sweepStop');
|
||||
var setStart = document.getElementById('setStart');
|
||||
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 setFreq = document.getElementById('setFreq');
|
||||
var setLevel = document.getElementById('setLevel');
|
||||
var calLevel = document.getElementByID('calLevel');
|
||||
|
||||
var setActPower = document.getElementById('setActPower');
|
||||
var levelOffset = document.getElementById('levelOffset');
|
||||
var setRefOut = document.getElementById('setRefOut');
|
||||
var sweepPoints = document.getElementById('sweepPoints');
|
||||
var sweepTime = document.getElementById('sweepTime');
|
||||
var setSpur = document.getElementById('spurReduction');
|
||||
var actRBW = document.getElementById('actRBW');
|
||||
var setRBW = document.getElementById('setRBW');
|
||||
var setDrive = document.getElementById('setLODrive');
|
||||
var setMaxPower = document.getElementByID('setMaxPower');
|
||||
|
||||
var setLODrive = document.getElementById('setLODrive');
|
||||
var setIF = document.getElementById('setIF');
|
||||
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;
|
||||
|
||||
// initialise these to silly values to force an update first time round
|
||||
var oldSweepStart = -1;
|
||||
var oldSweepStop = -1;
|
||||
var oldSweepCenter = -1;
|
||||
var oldSetRefOut = -2;
|
||||
var oldSetRBW = -10;
|
||||
var oldLevelOffset = 1000;
|
||||
var oldAttenuation = 1000;
|
||||
var oldExternalGain = 1000;
|
||||
var oldDrive = -1;
|
||||
var oldFreq = 0
|
||||
var oldSetLevel = 100;
|
||||
var oldCalLevel = 100;
|
||||
var oldMaxPower = 100;
|
||||
var oldLODrive = -1;
|
||||
var oldIF = 0;
|
||||
var oldPreAmp = 0;
|
||||
var oldSweepPoints = 0;
|
||||
var oldSpur = 2;
|
||||
var oldTrackGen = 2;
|
||||
var oldTrackGenPower = 1000;
|
||||
|
||||
// Chart configuration - Scope
|
||||
var RSSISamples = [
|
||||
{y:10},
|
||||
{y:11},
|
||||
{y:12},
|
||||
{y:13},
|
||||
{y:14},
|
||||
{y:15},
|
||||
{y:16},
|
||||
{y:17},
|
||||
{y:18},
|
||||
]; // dummy for test
|
||||
|
||||
var dBSamples = [
|
||||
{y:-10},
|
||||
{y:-20},
|
||||
{y:-23},
|
||||
{y:-90},
|
||||
{y:-120},
|
||||
{y:-100},
|
||||
{y:-80},
|
||||
{y:-30},
|
||||
{y:-40},
|
||||
]; // dummy for test
|
||||
|
||||
var gainSamples = [
|
||||
{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},
|
||||
]; // 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",
|
||||
fontSize: 28
|
||||
},
|
||||
axisX: {
|
||||
title: "Frequency (MHz)",
|
||||
titleFontSize: 24
|
||||
},
|
||||
axisY:
|
||||
{
|
||||
title: "dB",
|
||||
titleFontSize: 24,
|
||||
minimum: -120
|
||||
},
|
||||
axisY2: [
|
||||
{
|
||||
title: "RSSI",
|
||||
titleFontSize: 24,
|
||||
minimum: 0,
|
||||
maximum: 255
|
||||
},
|
||||
{
|
||||
title: "Gain",
|
||||
titleFontSize: 24,
|
||||
minimum: 0,
|
||||
maximum: 50
|
||||
}],
|
||||
exportEnabled: true,
|
||||
legend: {
|
||||
cursor: "pointer",
|
||||
itemclick: function (e) {
|
||||
//console.log("legend click: " + e.dataPointIndex);
|
||||
//console.log(e);
|
||||
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
|
||||
e.dataSeries.visible = false;
|
||||
} else {
|
||||
e.dataSeries.visible = true;
|
||||
}
|
||||
|
||||
e.chart.render();
|
||||
}
|
||||
},
|
||||
data: [
|
||||
{
|
||||
type: "line",
|
||||
name: "dB",
|
||||
dataPoints : dBSamples,
|
||||
showInLegend : true
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "RSSI",
|
||||
axisYType: "secondary",
|
||||
dataPoints : RSSISamples,
|
||||
showInLegend : true,
|
||||
visible : false
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "gain",
|
||||
axisYType: "secondary",
|
||||
axisYIndex: 1,
|
||||
dataPoints : gainSamples,
|
||||
showInLegend : true,
|
||||
visible : false
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "average",
|
||||
dataPoints : dBSamples,
|
||||
showInLegend : true,
|
||||
visible : false
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "min",
|
||||
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
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
renderChart();
|
||||
|
||||
|
||||
// Add handlers for the change events in the input fields
|
||||
@ -551,7 +185,7 @@ setMode.addEventListener('change', (event) => {
|
||||
sendValue("m", setMode.value);
|
||||
});
|
||||
|
||||
setStart.addEventListener('change', (event) => {
|
||||
setFreq.addEventListener('change', (event) => {
|
||||
sendValue("a", setStart.value);
|
||||
});
|
||||
|
||||
@ -1287,7 +921,7 @@ function sendValue(c, val)
|
||||
//
|
||||
// Message format
|
||||
// #(code) value where code is a single char. Case is important
|
||||
// a start freq (MHz)
|
||||
// a start freq (MHz) - sig gen freq if in sig gen mode
|
||||
// b stop frequency
|
||||
// c centre frequency
|
||||
// s Span
|
||||
@ -1304,6 +938,9 @@ function sendValue(c, val)
|
||||
// S Spur reduction Off/On
|
||||
// t trackGen Off/On/Fixed
|
||||
// T trackGen output level
|
||||
// L Sig Gen level (dBm)
|
||||
// G Sig Gen Off/On
|
||||
// P Sig Gen set max output level (dBm)
|
||||
//
|
||||
//connection.send("# " + messageCounter + " " + sampleThreshold + " " + sampleSize);
|
||||
connection.send("#" + c + " " + val);
|
||||
|
@ -192,8 +192,55 @@ input[type="number"] {
|
||||
.setting-label {
|
||||
width: 80px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.freq-label {
|
||||
width: 160px;
|
||||
display: inline-block;
|
||||
font-weight: bolder;
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
.freq-input {
|
||||
border: solid 1px grey;
|
||||
text-align: right;
|
||||
width: 160px;
|
||||
display: inline-block;
|
||||
font-weight: bolder;
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
TH, .bold {
|
||||
background-color: lightblue;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.slider {
|
||||
-webkit-appearance: none;
|
||||
width: 100%;
|
||||
height: 15px;
|
||||
border-radius: 5px;
|
||||
background: #d3d3d3;
|
||||
outline: none;
|
||||
opacity: 0.7;
|
||||
-webkit-transition: .2s;
|
||||
transition: opacity .2s;
|
||||
}
|
||||
|
||||
.slider::-webkit-slider-thumb {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
border-radius: 50%;
|
||||
background: #4CAF50;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.slider::-moz-range-thumb {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
border-radius: 50%;
|
||||
background: #4CAF50;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@ -239,8 +239,9 @@ void webSocketEvent ( uint8_t num, WStype_t type, uint8_t* payload, size_t paylo
|
||||
* E external gain ( eg attenuator(-ve) or preamp(+ve) )
|
||||
* R requested RBW
|
||||
* S Spur reduction Off/On
|
||||
* t trackGen Off/On/Fixed
|
||||
* t trackGen Off/On/Generate
|
||||
* T trackGen output level
|
||||
* f trackgen signal generator frequency
|
||||
* F Sig Gen frequency
|
||||
* L Sig Gen level (dBm)
|
||||
* G Sig Gen Off/On
|
||||
@ -372,7 +373,7 @@ void webSocketEvent ( uint8_t num, WStype_t type, uint8_t* payload, size_t paylo
|
||||
SetSpur ( (int8_t)value );
|
||||
break;
|
||||
|
||||
case 't': // Tracking Generator on/off
|
||||
case 't': // Tracking Generator off/on/generate
|
||||
SetTracking ( (int8_t)value );
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user