/*
* 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 += '