From 9e2dfa362b08fc1fe7de10b87a9fea0410669444 Mon Sep 17 00:00:00 2001 From: Mark Haslinghuis Date: Fri, 17 Jan 2025 02:05:50 +0100 Subject: [PATCH] Fix socket reset (#4304) * Fix socket reset * Fix dropdown being disabled --- src/js/protocols/websocket.js | 11 +++-------- src/js/serial_backend.js | 36 +++++++++++++++++++++-------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/js/protocols/websocket.js b/src/js/protocols/websocket.js index 47618fc4..6d4e3bca 100644 --- a/src/js/protocols/websocket.js +++ b/src/js/protocols/websocket.js @@ -76,20 +76,15 @@ class WebsocketSerial extends EventTarget { ); }; - this.ws.onclose = function (e) { + this.ws.onclose = async function (e) { console.log(`${socket.logHead} Connection closed: `, e); - socket.disconnect(() => { - socket.dispatchEvent(new CustomEvent("disconnect", this.disconnect.bind(this))); - }); + await socket.disconnect(); + socket.dispatchEvent(new CustomEvent("disconnect", { detail: { socketId: socket.address } })); }; this.ws.onerror = function (e) { console.error(`${socket.logHead} Connection error: `, e); - - socket.disconnect(() => { - socket.dispatchEvent(new CustomEvent("disconnect", this.disconnect.bind(this))); - }); }; this.ws.onmessage = async function (msg) { diff --git a/src/js/serial_backend.js b/src/js/serial_backend.js index cfc81dee..37de850b 100644 --- a/src/js/serial_backend.js +++ b/src/js/serial_backend.js @@ -234,6 +234,23 @@ function setConnectionTimeout() { ); } +function resetConnection() { + // reset connect / disconnect button + $("div#connectbutton div.connect_state").text(i18n.getMessage("connect")); + $("div#connectbutton a.connect").removeClass("active"); + + CONFIGURATOR.connectionValid = false; + CONFIGURATOR.cliValid = false; + CONFIGURATOR.cliActive = false; + CONFIGURATOR.cliEngineValid = false; + CONFIGURATOR.cliEngineActive = false; + + // unlock port select & baud + PortHandler.portPickerDisabled = false; + // reset data + isConnected = false; +} + function abortConnection() { GUI.timeout_remove("connecting"); // kill connecting timer @@ -244,14 +261,7 @@ function abortConnection() { gui_log(i18n.getMessage("serialPortOpenFail")); - $("div#connectbutton div.connect_state").text(i18n.getMessage("connect")); - $("div#connectbutton a.connect").removeClass("active"); - - // unlock port select & baud - PortHandler.portPickerDisabled = false; - - // reset data - isConnected = false; + resetConnection(); } /** @@ -696,6 +706,10 @@ function onClosed(result) { $("#dataflash_wrapper_global").hide(); $("#quad-status_wrapper").hide(); + console.log("[SERIAL-BACKEND] Connection closed:", result); + + resetConnection(); + clearLiveDataRefreshTimer(); MSP.clearListeners(); @@ -705,12 +719,6 @@ function onClosed(result) { serial.removeEventListener("connect", connectHandler); serial.removeEventListener("disconnect", disconnectHandler); } - - CONFIGURATOR.connectionValid = false; - CONFIGURATOR.cliValid = false; - CONFIGURATOR.cliActive = false; - CONFIGURATOR.cliEngineValid = false; - CONFIGURATOR.cliEngineActive = false; } export function read_serial(info) {