Browse Source

add preview/program mode flag

Noah Vogt 1 month ago
parent
commit
e457787a89
2 changed files with 18 additions and 1 deletions
  1. 2 0
      README.md
  2. 16 1
      switch.py

+ 2 - 0
README.md

@@ -37,6 +37,8 @@ See the following ascii diagram for the architecture.
                           |   | GET  /target/get     |   |
                           |   | POST /preset/goto    |   |
                           |   | POST /preset/save    |   |
+                          |   | GET  /mode/get       |   |
+                          |   | POST /mode/set       |   |
                           |   +----------------------+   |
                           +------------------------------+
                                          |

+ 16 - 1
switch.py

@@ -17,7 +17,7 @@ def load_location_roles():
     config_file = get_config_path()
     if not os.path.exists(config_file):
         raise FileNotFoundError(f"Config file not found at: {config_file}")
-    with open(config_file, "r") as f:
+    with open(config_file, "r", encoding="utf-8") as f:
         config = yaml.safe_load(f)
     return config.get("location_roles", {})
 
@@ -47,6 +47,7 @@ BAUDRATE = 2400
 # Globals
 # =========================
 current_target = "cam1"  # Default
+current_mode = "preview"  # Default
 cam_transports = {}
 
 # =========================
@@ -153,12 +154,26 @@ async def handle_save_preset(request):
 
     return web.json_response({"status": "ok", "action": "save", "preset": preset_id, "target": target})
 
+async def handle_set_mode(request):
+    global current_mode
+    mode = request.query.get("mode")
+    if mode not in ("preview", "program"):
+        return web.json_response({"error": "Invalid mode"}, status=400)
+    current_mode = mode
+    return web.json_response({"status": "ok", "mode": current_mode})
+
+async def handle_get_mode(request):
+    return web.json_response({"mode": current_mode})
+
+
 def start_http_server():
     app = web.Application()
     app.router.add_get("/target/get", handle_status)
     app.router.add_post("/target/set", handle_set_target)
     app.router.add_post("/preset/goto", handle_goto_preset)
     app.router.add_post("/preset/save", handle_save_preset)
+    app.router.add_get("/mode/get", handle_get_mode)
+    app.router.add_post("/mode/set", handle_set_mode)
     return web._run_app(app, port=1423)
 
 # =========================