From c3c7fc896c5884e961e64eaee84bd7a85d67fbef Mon Sep 17 00:00:00 2001 From: Uriel Date: Fri, 8 Dec 2023 16:09:20 -0300 Subject: [PATCH] Add reboot retries when trying to connect to WiFi (#907) --- .../java/dev/slimevr/serial/ProvisioningHandler.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/core/src/main/java/dev/slimevr/serial/ProvisioningHandler.java b/server/core/src/main/java/dev/slimevr/serial/ProvisioningHandler.java index 7e39395511..a8c0c9c728 100644 --- a/server/core/src/main/java/dev/slimevr/serial/ProvisioningHandler.java +++ b/server/core/src/main/java/dev/slimevr/serial/ProvisioningHandler.java @@ -24,6 +24,8 @@ public class ProvisioningHandler implements SerialListener { private final Timer provisioningTickTimer = new Timer("ProvisioningTickTimer"); private long lastStatusChange = -1; + private byte connectRetries = 0; + private final byte MAX_CONNECTION_RETRIES = 2; private final VRServer vrServer; public ProvisioningHandler(VRServer vrServer) { @@ -46,13 +48,14 @@ public void start(String ssid, String password, String port) { this.password = password; this.preferredPort = port; this.provisioningStatus = ProvisioningStatus.NONE; - + this.connectRetries = 0; } public void stop() { this.isRunning = false; this.ssid = null; this.password = null; + this.connectRetries = 0; this.changeStatus(ProvisioningStatus.NONE); this.vrServer.serialHandler.closeSerial(); } @@ -118,6 +121,7 @@ public void onSerialDisconnected() { if (!isRunning) return; this.changeStatus(ProvisioningStatus.NONE); + this.connectRetries = 0; } @Override @@ -151,7 +155,11 @@ public void onSerialLog(@NotNull String str) { provisioningStatus == ProvisioningStatus.CONNECTING && str.contains("Can't connect from any credentials") ) { - this.changeStatus(ProvisioningStatus.CONNECTION_ERROR); + if (++connectRetries >= MAX_CONNECTION_RETRIES) { + this.changeStatus(ProvisioningStatus.CONNECTION_ERROR); + } else { + this.vrServer.serialHandler.rebootRequest(); + } } }