From 67439efd2bcca2d2ccd46775e217ad29500bdc81 Mon Sep 17 00:00:00 2001 From: logicog Date: Wed, 17 Dec 2025 17:42:36 +0100 Subject: [PATCH] Correctly display 9-port machines --- html/eee.js | 11 ++++++----- html/main.js | 11 +++++++++-- html/stat.js | 6 ++++-- httpd/page_impl.c | 19 +++++++++++-------- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/html/eee.js b/html/eee.js index cb40329..c5140eb 100644 --- a/html/eee.js +++ b/html/eee.js @@ -1,8 +1,9 @@ function createEEE() { var tbl = document.getElementById('eeetable'); - if (tbl.rows.length <= 2) { + if (tbl.rows.length <= 2 && numPorts) { + clearInterval(createEEEInterval); console.log("CREATING TABLE ", tbl.rows.length); - for (let i = 2; i < 8; i++) { + for (let i = 2; i < 2 + numPorts; i++) { console.log("Table row: " + i + "pState: " + pState[i-2]); const tr = tbl.insertRow(); let td = tr.insertCell(); td.appendChild(document.createTextNode(`Port ${i-1}`)); @@ -20,8 +21,8 @@ function getEEE() { const s = JSON.parse(xhttp.responseText); console.log("EEE: ", JSON.stringify(s)); var tbl = document.getElementById('eeetable'); - if (tbl.rows.length > 2) { - for (let i = 2; i < 8; i++) { + if (tbl.rows.length > 2 && numPorts) { + for (let i = 2; i < 2 + numPorts; i++) { p = s[i-2]; let n = p.portNum; console.log("Table Update row: " + i + " portNum is " + n + ", pState is " + pState[i-2]); @@ -46,4 +47,4 @@ window.addEventListener("load", function() { getEEE(); const iCount = setInterval(getEEE, 2000); }); -const stat = setInterval(createEEE, 1000); +const createEEEInterval = setInterval(createEEE, 1000); diff --git a/html/main.js b/html/main.js index 5a7473d..6e8bceb 100644 --- a/html/main.js +++ b/html/main.js @@ -5,9 +5,10 @@ var rxB = new BigInt64Array(10); const linkS = ["Disabled", "No Link", "100M", "1000M", "500M", "10G", "2.5G", "5G"]; var pState = new Int8Array(10); var pIsSFP = new Int8Array(10); +var pAdvertised = new Int8Array(10); var numPorts = 0; -const logToPhysPort = [0, 0, 0, 5, 1, 2, 3, 4, 6]; -const physToLogPort = [ 4, 5, 6, 7, 3, 8]; +var logToPhysPort = new Int8Array(10); +var physToLogPort = new Int8Array(10); function drawPorts() { var f = document.getElementById('ports'); console.log("DRAWING PORTS: ", numPorts); @@ -54,6 +55,8 @@ function update() { for (let i = 0; i < s.length; i++) { p = s[i]; let n = p.portNum; + logToPhysPort[p.logPort] = n; + physToLogPort[n-1] = p.logPort; let pid = "port" + n; let ttid = "tt_" + n; n--; @@ -84,6 +87,7 @@ function update() { var iHTML = ""; iHTML += ""; if (p.isSFP) { + pAdvertised[n] = 0; iHTML += ""; iHTML += ""; iHTML += ""; @@ -94,6 +98,9 @@ function update() { iHTML += ""; iHTML += ""; } + } else { + pAdvertised[n] = parseInt(p.adv, 2); + console.log("Advertised " + n + " entry " + p.adv + " is now " + pAdvertised[n]); } iHTML += "
Link speed:" + linkS[p.link + 1] + "
Vendor:" + p.sfp_vendor + "
Model:" + p.sfp_model + "
Serial:" + p.sfp_serial + "
TX-Power:" + (Number(p.sfp_txpower) / 10.0).toFixed(0) + " mW
RX-Power:" + (Number(p.sfp_rxpower) / 10.0).toFixed(0) + " mW
"; tt.innerHTML = iHTML; diff --git a/html/stat.js b/html/stat.js index da674b7..31973fc 100644 --- a/html/stat.js +++ b/html/stat.js @@ -1,7 +1,9 @@ function fillStats() { var tbl = document.getElementById('statstable'); + if (!numPorts) + return; if (tbl.rows.length > 1) { - for (let i = 0; i < 6; i++) { + for (let i = 0; i < numPorts; i++) { console.log("Table Update row: " + i + " state " + pState[i] + " is " + linkS[pState[i] +1]); tbl.rows[i+1].cells[1].innerHTML = `${linkS[pState[i]+1]}`; tbl.rows[i+1].cells[2].innerHTML = `${txG[i]} pkts`; @@ -10,7 +12,7 @@ function fillStats() { tbl.rows[i+1].cells[5].innerHTML = `${rxB[i]} pkts`; } } else { - for (let i = 0; i < 6; i++) { + for (let i = 0; i < numPorts; i++) { console.log("Table row: " + i); const tr = tbl.insertRow(); let td = tr.insertCell(); td.appendChild(document.createTextNode(`Port ${i+1}`)); diff --git a/httpd/page_impl.c b/httpd/page_impl.c index bcd620c..62d5f07 100644 --- a/httpd/page_impl.c +++ b/httpd/page_impl.c @@ -433,18 +433,21 @@ void send_status(void) bool_to_html(SFR_DATA_8 == 0x20); slen += strtox(outbuf + slen, ",\"adv\":\""); phy_read(i, PHY_MMD_AN, 0x20); - bool_to_html(SFR_DATA_8 & 0x80); // 2500BaseN-Full + uint16_t w = SFR_DATA_U16; + bool_to_html(!!(w & 0x80)); // 2500BaseN-Full phy_read(i, PHY_MMD_CTRL, 0xa412); - bool_to_html(SFR_DATA_16 & 0x02); // 1000Base-Full + w = SFR_DATA_U16; + bool_to_html(!!(w & 0x0200)); // 1000Base-Full phy_read(i, PHY_MMD_AN, 0x10); - bool_to_html(SFR_DATA_16 & 0x01); // 100Base-Full - uint8_t w = SFR_DATA_8; - bool_to_html(w & 0x80); // 100Base-Half - bool_to_html(w & 0x40); // 10Base-Full - bool_to_html(w & 0x20); // 10Base-Half + w = SFR_DATA_U16; + bool_to_html(!!(w & 0x0100)); // 100Base-Full + bool_to_html(!!(w & 0x80)); // 100Base-Half + bool_to_html(!!(w & 0x40)); // 10Base-Full + bool_to_html(!!(w & 0x20)); // 10Base-Half + char_to_html('"'); } - slen += strtox(outbuf + slen, "\",\"link\":"); + slen += strtox(outbuf + slen, ",\"link\":"); if (i < 8) reg_read_m(RTL837X_REG_LINKS);