From 9e79f343a53aaa5941a870d803a5dc3be17759a0 Mon Sep 17 00:00:00 2001 From: Etienne Chassaing <60154720+cetiennec@users.noreply.github.com> Date: Mon, 4 Aug 2025 16:52:17 +0200 Subject: [PATCH] Adds auto connect --- MockCAN.py | 2 +- main.py | 13 ++++++++++--- templates/control.html | 23 +++++++++++++++++------ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/MockCAN.py b/MockCAN.py index 2303b9d..14a528e 100644 --- a/MockCAN.py +++ b/MockCAN.py @@ -7,7 +7,7 @@ class CANBackend: def __init__(self, eds_file=None): self.connected = False - def connect(self, node_id: int, eds_path: str) -> bool: + def connect(self) -> bool: # Placeholder for connection logic self.connected = True return True diff --git a/main.py b/main.py index 489832e..cf8f0a5 100644 --- a/main.py +++ b/main.py @@ -124,6 +124,7 @@ def require_login(request: Request): @app.get("/", response_class=HTMLResponse) def login_form(request: Request): + connect_toggle() return templates.TemplateResponse("login.html", {"request": request}) @@ -166,7 +167,6 @@ def monitor_page(request: Request): # ======== CAN + BACKEND ROUTES ======== - @app.post("/connect_toggle") def connect_toggle(): logging.info("Toggling CAN connection...") @@ -178,7 +178,14 @@ def connect_toggle(): if not success: raise HTTPException(status_code=500, detail="Connection failed.") - return {"connected": True} + return {"connected": can_backend.connected} + +@app.post("/is_connected") +def is_can_connected(): + """" + + """ + return {"connected": can_backend.connected} @app.post("/command/{state}/pu/{pu_number}") @@ -420,7 +427,7 @@ if __name__ == "__main__": uvicorn.run( "main:app", host="127.0.0.1", - port=8080, + port=8081, reload=True, reload_dirs=["."], ) diff --git a/templates/control.html b/templates/control.html index 3d527ff..8727c3e 100644 --- a/templates/control.html +++ b/templates/control.html @@ -342,14 +342,23 @@ document.getElementById('currentValue').textContent = value; } - async function toggleConnection() { - const response = await fetch('/connect_toggle', {method: 'POST'}); - const data = await response.json(); - const connectButton = document.getElementById('connectButton'); - connectButton.classList.toggle('connected', data.connected); - connectButton.innerHTML = ` ${data.connected ? 'Disconnect' : 'Connect'}`; + async function getConnectionStatus() { + const response = await fetch('/connect_toggle', { method: 'GET' }); + const data = await response.json(); + const connectButton = document.getElementById('connectButton'); + connectButton.classList.toggle('connected', data.connected); + connectButton.innerHTML = ` ${data.connected ? 'Disconnect' : 'Connect'}`; } + async function toggleConnection() { + const response = await fetch('/connect_toggle', { method: 'POST' }); + const data = await response.json(); + const connectButton = document.getElementById('connectButton'); + connectButton.classList.toggle('connected', data.connected); + connectButton.innerHTML = ` ${data.connected ? 'Disconnect' : 'Connect'}`; + } + + let isRecording = false; async function toggleRecording() { @@ -526,6 +535,8 @@ async function fetchMonitorData() { } } +getConnectionStatus(); + setInterval(fetchMonitorData, 1000); fetchMonitorData();