/* * Copyright (C) 2026 Private Island Networks Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * file: ws.js * */ "use strict"; let socket = new WebSocket("ws://localhost:8010/logger"); console.log("here we go"); let state = "Wait"; let log = document.getElementById('mc-log'); function log_msg(msg) { let msg_str = ''; if (msg.num_cmds > 1) { console.log('multi commands'); } for (let i = 0; i < msg.num_cmds; i++) { if (msg.cmds[i][0].includes('RDREG') || msg.cmds[i][0].includes('GETTEMP')) { msg_str += msg.cmds[i][0] + ' ' + msg.cmds[i][1] + '
'; } else if (msg.cmds[i][0] == "" && (msg.cmds[i][1] == "PHY1_STATUS" || msg.cmds[i][1] == "PHY2_STATUS")) { let val = parseInt(msg.cmds[i][2], 16) & 0x8; if (val) { msg_str += msg.cmds[i][1] + ': LOS = 1' + '
'; } else { msg_str += msg.cmds[i][1] + ': LOS = 0' + '
'; } } else { msg_str += msg.cmds[i][0] + ' ' + msg.cmds[i][1] + ' ' + msg.cmds[i][2] + '
'; } } return msg_str; } // setInterval(function(){console.log(state)},1000); socket.onopen = function(e) { console.log("[open] Connection established"); console.log("Sending to server"); socket.send("open"); // can send data as a string, Blob, or ArrayBuffer. }; function update_mode(mode) { if (mode == MODE_IDLE) $('#mc-mode').innerText = "Idle"; else if (mode == MODE_LIVE || mode == MODE_FILE) $('#mc-mode').innerText = "Running"; else console.log("unsupported mode") } socket.onmessage = function(event) { let num_msgs = 0; let msg = JSON.parse(event.data); if (msg.format == MSG_FORMAT_BASIC) { if (typeof msg['mode'] !== "undefined") { console.log("mode: ", msg['mode']); update_mode(msg['mode']); } else if (typeof msg['fw_version'] !== "undefined") { console.log("fw_version: ", msg['fw_version']); update_fw_version(msg['fw_version']); } else if (typeof msg['fw_increment'] !== "undefined") { console.log("fw_increment: ", msg['fw_increment']); update_fw_increment(msg['fw_increment']); } else if (typeof msg['temperature'] !== "undefined") { console.log("temperature: ", msg['temperature']); update_temperature(msg['temperature']); } else console.log("unsupported control"); return; } let height = 2 * msg.num_cmds; if (height == 0) { height = 2; } num_msgs += 1; console.log("From server:", num_msgs, ': ', msg); if (msg.port == PORT_PC) { log.innerHTML += '
' + msg.time + '
' + '
' + log_msg(msg) + '
' + '
' + '
'; } else if (msg.port == PORT_PHY0) { log.innerHTML += '
' + msg.time + '
' + '
' + '
' + log_msg(msg) + '
'; } else if (msg.port == PORT_PHY1) { log.innerHTML += '
' + msg.time + '
' + '
' + '
' + '
' + log_msg(msg) + '
'; } // socket.send("request"); state = "Request" }; socket.onclose = function(event) { state = "Closed" if (event.wasClean) { console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`); } else { // e.g. server process killed or network down // event.code is usually 1006 in this case console.log('[close] Connection died'); } }; socket.onerror = function(error) { state = "Error" console.log(`[error]`); }; // When you've finished using the WebSocket connection, // call the WebSocket method close():