diff --git a/html/main.js b/html/main.js
index 8eefa01..b29ccbe 100644
--- a/html/main.js
+++ b/html/main.js
@@ -112,6 +112,10 @@ function decodeSfpRxPower(val, cal) {
return applyRxPowerCalibration(rxPower, cal) / 10000;
}
+function convertPowerTodBm(val) {
+ return 10 * Math.log10(val);
+}
+
function update(callback) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
@@ -170,13 +174,17 @@ function update(callback) {
iHTML += "
| Model | : | " + p.sfp_model + " |
";
iHTML += "| Serial | : | " + p.sfp_serial + " |
";
if (hasExtendedStatus) {
+ let txPower = decodeSfpTxPower(p.sfp_txpower, p.sfp_txpower_cal);
+ let txPowerdBm = convertPowerTodBm(txPower);
+ let rxPower = decodeSfpRxPower(p.sfp_rxpower, p.sfp_rxpower_cal);
+ let rxPowerdBm = convertPowerTodBm(rxPower);
iHTML += "| Temp | : | " + decodeSfpTemp(p.sfp_temp, p.sfp_temp_cal).toFixed(2) + " ℃ |
";
iHTML += "| Vcc | : | " + decodeSfpVcc(p.sfp_vcc, p.sfp_vcc_cal).toFixed(2) + " V |
";
iHTML += "| TX-Fault | : | " + (Boolean(Number(p.sfp_state) & 0x4)) + " |
";
iHTML += "| TX-Disabled | : | " + (Boolean(Number(p.sfp_state) & 0x80)) + " |
";
iHTML += "| TX-Bias | : | " + decodeSfpTxBias(p.sfp_txbias, p.sfp_txbias_cal).toFixed(1) + " mA |
";
- iHTML += "| TX-Power | : | " + decodeSfpTxPower(p.sfp_txpower, p.sfp_txpower_cal).toFixed(3) + " mW |
";
- iHTML += "| RX-Power | : | " + decodeSfpRxPower(p.sfp_rxpower, p.sfp_rxpower_cal).toFixed(3) + " mW |
";
+ iHTML += "| TX-Power | : | " + txPower.toFixed(3) + " mW / " + txPowerdBm.toFixed(2) + " dBm |
";
+ iHTML += "| RX-Power | : | " + rxPower.toFixed(3) + " mW / " + rxPowerdBm.toFixed(2) + " dBm |
";
}
// Not all devices & modules have LOS pin...
const rx_los_pin = p.sfp_los !== null ? Boolean(Number(p.sfp_los)) : null;