1
0
mirror of https://github.com/KubaPro010/fm-dx-webserver.git synced 2026-02-26 22:13:53 +01:00

Tune step bug fix and improvements

Fix AM rounding error tune problem and change smaller step size for AM vs FM frequencies
This commit is contained in:
Adam Wisher
2024-02-08 21:06:34 +00:00
committed by GitHub
parent 0453cdc75a
commit 9b9db240e6

View File

@@ -315,34 +315,26 @@ function getCurrentFreq() {
function checkKey(e) { function checkKey(e) {
e = e || window.event; e = e || window.event;
// Check if any input element is focused using jQuery
if ($('input:focus').length > 0) {
return; // Do nothing if an input is focused
}
getCurrentFreq(); getCurrentFreq();
if (socket.readyState === WebSocket.OPEN) { if (socket.readyState === WebSocket.OPEN) {
switch (e.keyCode) { if (e.keyCode == '82') { // RDS Reset (R key)
case 82: // RDS Reset (R key) socket.send("T" + (currentFreq.toFixed(1) * 1000));
socket.send("T" + (currentFreq.toFixed(1) * 1000)); }
break; if (e.keyCode == '38') {
case 38: let smallStep = (currentFreq > 30) ? 10 : 1;
socket.send("T" + ((currentFreq + 0.01).toFixed(2) * 1000)); socket.send("T" + (Math.round(currentFreq*1000) + smallStep));
break; }
case 40: else if (e.keyCode == '40') {
socket.send("T" + ((currentFreq - 0.01).toFixed(2) * 1000)); let smallStep = (currentFreq > 30) ? 10 : 1;
break; socket.send("T" + (Math.round(currentFreq*1000) - smallStep));
case 37: }
tuneDown(); else if (e.keyCode == '37') {
break; tuneDown();
case 39: }
tuneUp(); else if (e.keyCode == '39') {
break; tuneUp();
default:
// Handle default case if needed
break;
} }
} }
} }
@@ -352,38 +344,38 @@ function tuneUp() {
getCurrentFreq(); getCurrentFreq();
let addVal = 0; let addVal = 0;
if (currentFreq < 0.52) { if (currentFreq < 0.52) {
addVal = 9 - ((currentFreq*1000) % 9); addVal = 9 - (Math.round(currentFreq*1000) % 9);
} else if (currentFreq < 1.71) { } else if (currentFreq < 1.71) {
// TODO: Rework to replace 9 with 9 or 10 based on regionalisation setting // TODO: Rework to replace 9 with 9 or 10 based on regionalisation setting
addVal = 9 - ((currentFreq*1000) % 9); addVal = 9 - (Math.round(currentFreq*1000) % 9);
} else if (currentFreq < 29.6) { } else if (currentFreq < 29.6) {
addVal = 5 - ((currentFreq*1000) % 5); addVal = 5 - (Math.round(currentFreq*1000) % 5);
} else if (currentFreq >= 65.9 && currentFreq < 74) { } else if (currentFreq >= 65.9 && currentFreq < 74) {
addVal = ((currentFreq*1000) % 30 == 20) ? 30 : (20 - ((currentFreq*1000) % 30)); addVal = 30 - ((Math.round(currentFreq*1000) - 65900) % 30);
} else { } else {
addVal = 100 - ((currentFreq*1000) % 100); addVal = 100 - (Math.round(currentFreq*1000) % 100);
} }
socket.send("T" + ((currentFreq*1000) + addVal)); socket.send("T" + (Math.round(currentFreq*1000) + addVal));
} }
} }
function tuneDown() { function tuneDown() {
if (socket.readyState === WebSocket.OPEN) { if (socket.readyState === WebSocket.OPEN) {
getCurrentFreq(); getCurrentFreq();
let subVal = 0; let subVal = 0;
if (currentFreq < 0.52) { if (currentFreq < 0.52) {
subVal = ((currentFreq*1000) % 9 == 0) ? 9 : ((currentFreq*1000) % 9); subVal = (Math.round(currentFreq*1000) % 9 == 0) ? 9 : (Math.round(currentFreq*1000) % 9);
} else if (currentFreq < 1.71) { } else if (currentFreq < 1.71) {
// TODO: Rework to replace 9 with 9 or 10 based on regionalisation setting // TODO: Rework to replace 9 with 9 or 10 based on regionalisation setting
subVal = ((currentFreq*1000) % 9 == 0) ? 9 : ((currentFreq*1000) % 9); subVal = (Math.round(currentFreq*1000) % 9 == 0) ? 9 : (Math.round(currentFreq*1000) % 9);
} else if (currentFreq < 29.6) { } else if (currentFreq < 29.6) {
subVal = ((currentFreq*1000) % 5 == 0) ? 5 : ((currentFreq*1000) % 5); subVal = (Math.round(currentFreq*1000) % 5 == 0) ? 5 : (Math.round(currentFreq*1000) % 5);
} else if (currentFreq >= 65.9 && currentFreq < 74) { } else if (currentFreq > 65.9 && currentFreq <= 74) {
subVal = ((currentFreq*1000) % 30 == 20) ? 30 : (10 + ((currentFreq*1000) % 30)); subVal = ((Math.round(currentFreq*1000) - 65900) % 30 == 0) ? 30 : ((Math.round(currentFreq*1000) - 65900) % 30);
} else { } else {
subVal = ((currentFreq*1000) % 100 == 0) ? 100 : ((currentFreq*1000) % 100); subVal = (Math.round(currentFreq*1000) % 100 == 0) ? 100 : (Math.round(currentFreq*1000) % 100);
} }
socket.send("T" + ((currentFreq*1000) - subVal)); socket.send("T" + (Math.round(currentFreq*1000) - subVal));
} }
} }