mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
add nb nr
This commit is contained in:
+14
-7
@@ -126,6 +126,7 @@ begin
|
||||
'</select>' +
|
||||
'<select id="attSel"><option value="0" selected>0 dB</option><option value="1">-10 dB</option><option value="2">-20 dB</option></select>' +
|
||||
'<button id="nbBtn">NB</button>' +
|
||||
'<button id="snbBtn">SNB</button>' +
|
||||
'<button id="anfBtn">ANF</button>' +
|
||||
'<button id="nrBtn">NR</button>' +
|
||||
'<span class="sl-sep">|</span>' +
|
||||
@@ -185,6 +186,10 @@ begin
|
||||
'function sw(id,on){const b=q(id);if(b)b.classList.toggle("on",!!on);}' +
|
||||
'function ws2(obj){if(ws&&ws.readyState===1)ws.send(JSON.stringify(obj));}' +
|
||||
'function cmd(c,v){ws2({cmd:c,on:v});}' +
|
||||
'function updNrBtn(){const b=q("nrBtn");if(!b)return;const m=cur.nr_mode|0;b.textContent=(m===2)?"NR2":(m===3)?"NR3":(m===4)?"NR4":"NR";sw("nrBtn",m!==0);}' +
|
||||
'function updNbBtn(){const b=q("nbBtn");if(!b)return;const m=cur.nb_mode|0;b.textContent=(m===2)?"NB2":"NB";sw("nbBtn",m!==0);}' +
|
||||
'function updSnbBtn(){sw("snbBtn",!!cur.snb);}' +
|
||||
'function updAnfBtn(){sw("anfBtn",!!cur.anf);}' +
|
||||
|
||||
'const MODE_N=["LSB","USB","DSB","CWL","CWU","FM","AM","SAM"];' +
|
||||
'const GRP_MAP={ssb:[0,1],cw:[3,4],fm:[5,5],am:[6,7]};' +
|
||||
@@ -203,9 +208,10 @@ begin
|
||||
'q("txSl").oninput=function(e){var v=q("txVal");if(v)v.textContent=e.target.value;};' +
|
||||
|
||||
// DSP кнопки — cur обновляется локально сразу, не ждём ответа сервера
|
||||
'q("nrBtn").onclick=function(){cur.nr=!cur.nr;sw("nrBtn",cur.nr);pend("nr");cmd("set_nr",cur.nr);};' +
|
||||
'q("nbBtn").onclick=function(){cur.nb=!cur.nb;sw("nbBtn",cur.nb);pend("nb");cmd("set_nb",cur.nb);};' +
|
||||
'q("anfBtn").onclick=function(){cur.anf=!cur.anf;sw("anfBtn",cur.anf);pend("anf");cmd("set_anf",cur.anf);};' +
|
||||
'q("nrBtn").onclick=function(){cur.nr_mode=((cur.nr_mode|0)+1)%5;cur.nr=cur.nr_mode!==0;updNrBtn();pend("nr");ws2({cmd:"set_nr_mode",mode:cur.nr_mode});};' +
|
||||
'q("nbBtn").onclick=function(){cur.nb_mode=((cur.nb_mode|0)+1)%3;cur.nb=cur.nb_mode!==0;updNbBtn();pend("nb");ws2({cmd:"set_nb_mode",mode:cur.nb_mode});};' +
|
||||
'q("snbBtn").onclick=function(){cur.snb=!cur.snb;updSnbBtn();pend("snb");cmd("set_snb",cur.snb);};' +
|
||||
'q("anfBtn").onclick=function(){cur.anf=!cur.anf;updAnfBtn();pend("anf");cmd("set_anf",cur.anf);};' +
|
||||
|
||||
// START/STOP
|
||||
'function updRunBtn(r){var b=q("startStopBtn");if(!b)return;b.textContent=r?"STOP":"START";b.classList.toggle("rx-tx",!!r);b.classList.toggle("on",!r);}' +
|
||||
@@ -324,7 +330,7 @@ begin
|
||||
'function isPending(field){return !!(pendingCmds[field]&&pendingCmds[field]>Date.now());}' +
|
||||
|
||||
// Маппинг: server JSON field → pend key
|
||||
'var PEND_MAP={vfo_a_hz:"freq",nr:"nr",nb:"nb",anf:"anf",running:"run",mode:"mode",agc_mode:"agc"};' +
|
||||
'var PEND_MAP={vfo_a_hz:"freq",nr:"nr",nr_mode:"nr",nb:"nb",nb_mode:"nb",snb:"snb",anf:"anf",running:"run",mode:"mode",agc_mode:"agc"};' +
|
||||
|
||||
'function applyState(msg){' +
|
||||
// Мержим только поля которые не pending
|
||||
@@ -337,9 +343,10 @@ begin
|
||||
'const as=q("agcSel");if(as&&cur.agc_mode!=null&&!isPending("agc"))as.value=cur.agc_mode;' +
|
||||
'const vs=q("volSl");if(vs&&!vs.matches(":active")){vs.value=cur.volume||70;var vv=q("volVal");if(vv)vv.textContent=cur.volume||70;}' +
|
||||
'const rs=q("rfSl");if(rs&&!rs.matches(":active")){rs.value=cur.agc_top||90;var rv=q("rfVal");if(rv)rv.textContent=(cur.agc_top||90)+"dB";}' +
|
||||
'if(!isPending("nr"))sw("nrBtn",!!cur.nr);' +
|
||||
'if(!isPending("nb"))sw("nbBtn",!!cur.nb);' +
|
||||
'if(!isPending("anf"))sw("anfBtn",!!cur.anf);' +
|
||||
'if(!isPending("nr"))updNrBtn();' +
|
||||
'if(!isPending("nb"))updNbBtn();' +
|
||||
'if(!isPending("snb"))updSnbBtn();' +
|
||||
'if(!isPending("anf"))updAnfBtn();' +
|
||||
'if(!isPending("run"))updRunBtn(!!cur.running);' +
|
||||
// syncModGrp syncs dropdown AND calls updModTglLabel internally
|
||||
'if(!isPending("mode")){syncModGrp(cur.mode||0);}' +
|
||||
|
||||
Reference in New Issue
Block a user