diff --git a/Main/src/main/java/com/chameleonvision/classabstraction/VisionManager.java b/Main/src/main/java/com/chameleonvision/classabstraction/VisionManager.java index 670b6e0ef..444e6600e 100644 --- a/Main/src/main/java/com/chameleonvision/classabstraction/VisionManager.java +++ b/Main/src/main/java/com/chameleonvision/classabstraction/VisionManager.java @@ -6,6 +6,7 @@ import com.chameleonvision.classabstraction.config.ConfigManager; import com.chameleonvision.settings.Platform; import com.chameleonvision.settings.SettingsManager; import com.chameleonvision.util.FileHelper; +import com.chameleonvision.vision.camera.CameraException; import edu.wpi.cscore.UsbCamera; import edu.wpi.cscore.UsbCameraInfo; import org.opencv.videoio.VideoCapture; @@ -83,4 +84,11 @@ public class VisionManager { process.start(); }); } + + public static VisionProcess getCurrentCamera() throws CameraException { + if (VisionProcessesByCameraName.size() == 0) throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA); + var curCam = VisionProcessesByCameraName.get(SettingsManager.generalSettings.currentCamera); + if (curCam == null) throw new CameraException(CameraException.CameraExceptionType.BAD_CAMERA); + return curCam; + } } diff --git a/Main/src/main/java/com/chameleonvision/vision/camera/CameraException.java b/Main/src/main/java/com/chameleonvision/vision/camera/CameraException.java index f4c5671e3..0a808dd4e 100644 --- a/Main/src/main/java/com/chameleonvision/vision/camera/CameraException.java +++ b/Main/src/main/java/com/chameleonvision/vision/camera/CameraException.java @@ -19,7 +19,7 @@ public class CameraException extends Exception { } } - CameraException(CameraExceptionType camExceptionType) { + public CameraException(CameraExceptionType camExceptionType) { super(camExceptionType.toString()); } } diff --git a/Main/src/main/java/com/chameleonvision/web/ServerHandler.java b/Main/src/main/java/com/chameleonvision/web/ServerHandler.java index 9a60c716f..4b113ad22 100644 --- a/Main/src/main/java/com/chameleonvision/web/ServerHandler.java +++ b/Main/src/main/java/com/chameleonvision/web/ServerHandler.java @@ -1,10 +1,11 @@ package com.chameleonvision.web; +import com.chameleonvision.classabstraction.VisionManager; +import com.chameleonvision.classabstraction.config.ConfigManager; import com.chameleonvision.vision.*; import com.chameleonvision.vision.camera.USBCamera; import com.chameleonvision.vision.camera.CameraException; import com.chameleonvision.settings.SettingsManager; -import com.chameleonvision.vision.camera.CameraManager; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -45,7 +46,7 @@ public class ServerHandler { switch (entry.getKey()) { case "generalSettings": { for (HashMap.Entry e : ((HashMap) entry.getValue()).entrySet()) { - setField(SettingsManager.generalSettings, e.getKey(), e.getValue()); + setField(ConfigManager.settings, e.getKey(), e.getValue()); } SettingsManager.saveSettings(); sendFullSettings(); @@ -53,15 +54,15 @@ public class ServerHandler { } case "driverMode": { for (HashMap.Entry e : ((HashMap) entry.getValue()).entrySet()) { - setField(CameraManager.getCurrentCamera(), e.getKey(), e.getValue()); + setField(VisionManager.getCurrentCamera(), e.getKey(), e.getValue()); } - CameraManager.getCurrentCamera().setDriverMode((Boolean) ((HashMap) entry.getValue()).get("isDriver")); - CameraManager.saveCameras(); + VisionManager.getCurrentCamera().setDriverMode((Boolean) ((HashMap) entry.getValue()).get("isDriver")); + VisionManager.saveCameras(); break; } case "cameraSettings": { HashMap camSettings = (HashMap) entry.getValue(); - var curCam = CameraManager.getCurrentCamera(); + var curCam = VisionManager.getCurrentCamera(); Number newFOV = (Number) camSettings.get("fov"); Integer newStreamDivisor = (Integer) camSettings.get("streamDivisor"); @@ -79,18 +80,18 @@ public class ServerHandler { curCam.setCamVideoMode(newResolution, true); } - CameraManager.saveCameras(); + VisionManager.saveCameras(); sendFullSettings(); break; } case "changeCameraName": { - CameraManager.getCurrentCamera().setNickname((String) entry.getValue()); + VisionManager.getCurrentCamera().setNickname((String) entry.getValue()); sendFullSettings(); SettingsManager.saveSettings(); break; } case "changePipelineName": { - CameraManager.getCurrentPipeline().nickname = (String) entry.getValue(); + VisionManager.getCurrentPipeline().nickname = (String) entry.getValue(); sendFullSettings(); SettingsManager.saveSettings(); break; @@ -100,18 +101,18 @@ public class ServerHandler { int pipelineIndex = (int) pipelineVals.get("pipeline"); int cameraIndex = (int) pipelineVals.get("camera"); - Pipeline origPipeline = CameraManager.getCurrentCamera().getPipelineByIndex(pipelineIndex); + Pipeline origPipeline = VisionManager.getCurrentCamera().getPipelineByIndex(pipelineIndex); if (cameraIndex != -1) { - CameraManager.getCameraByIndex(cameraIndex).addPipeline(origPipeline); + VisionManager.getCameraByIndex(cameraIndex).addPipeline(origPipeline); } else { - CameraManager.getCurrentCamera().addPipeline(origPipeline); + VisionManager.getCurrentCamera().addPipeline(origPipeline); } SettingsManager.saveSettings(); break; } case "command": { - var cam = CameraManager.getCurrentCamera(); + var cam = VisionManager.getCurrentCamera(); switch ((String) entry.getValue()) { case "addNewPipeline": cam.addPipeline(); @@ -140,12 +141,12 @@ public class ServerHandler { break; } case "currentCamera": { - CameraManager.setCurrentCamera((Integer) entry.getValue()); + VisionManager.setCurrentCamera((Integer) entry.getValue()); sendFullSettings(); break; } case "currentPipeline": { - var cam = CameraManager.getCurrentCamera(); + var cam = VisionManager.getCurrentCamera(); cam.setCurrentPipelineIndex((Integer) entry.getValue()); sendFullSettings(); try { @@ -157,13 +158,13 @@ public class ServerHandler { break; } default: { - setField(CameraManager.getCurrentCamera().getCurrentPipeline(), entry.getKey(), entry.getValue()); + setField(VisionManager.getCurrentCamera().getCurrentPipeline(), entry.getKey(), entry.getValue()); switch (entry.getKey()) { case "exposure": { - CameraManager.getCurrentCamera().setExposure((Integer) entry.getValue()); + VisionManager.getCurrentCamera().setExposure((Integer) entry.getValue()); } case "brightness": { - CameraManager.getCurrentCamera().setBrightness((Integer) entry.getValue()); + VisionManager.getCurrentCamera().setBrightness((Integer) entry.getValue()); } } break; @@ -219,9 +220,9 @@ public class ServerHandler { HashMap tmp = new HashMap<>(); for (Field f : Pipeline.class.getFields()) { if (!f.getType().isEnum()) { - tmp.put(f.getName(), f.get(CameraManager.getCurrentCamera().getCurrentPipeline())); + tmp.put(f.getName(), f.get(VisionManager.getCurrentCamera().getCurrentPipeline())); } else { - var i = (Enum) f.get(CameraManager.getCurrentCamera().getCurrentPipeline()); + var i = (Enum) f.get(VisionManager.getCurrentCamera().getCurrentPipeline()); tmp.put(f.getName(), i.ordinal()); } } @@ -230,19 +231,19 @@ public class ServerHandler { private static HashMap getOrdinalSettings() { HashMap tmp = new HashMap<>(); - tmp.put("teamNumber", SettingsManager.generalSettings.teamNumber); - tmp.put("connectionType", SettingsManager.generalSettings.connectionType.ordinal()); - tmp.put("ip", SettingsManager.generalSettings.ip); - tmp.put("gateway", SettingsManager.generalSettings.gateway); - tmp.put("netmask", SettingsManager.generalSettings.netmask); - tmp.put("hostname", SettingsManager.generalSettings.hostname); + tmp.put("teamNumber", ConfigManager.settings.teamNumber); + tmp.put("connectionType", ConfigManager.settings.connectionType.ordinal()); + tmp.put("ip", ConfigManager.settings.ip); + tmp.put("gateway", ConfigManager.settings.gateway); + tmp.put("netmask", ConfigManager.settings.netmask); + tmp.put("hostname", ConfigManager.settings.hostname); return tmp; } private static HashMap getOrdinalCameraSettings() { HashMap tmp = new HashMap<>(); try { - var currentCamera = CameraManager.getCurrentCamera(); + var currentCamera = VisionManager.getCurrentCamera(); tmp.put("fov", currentCamera.getFOV()); tmp.put("streamDivisor", currentCamera.getStreamDivisor().ordinal()); tmp.put("resolution", currentCamera.getVideoModeIndex()); @@ -255,7 +256,7 @@ public class ServerHandler { private static HashMap getOrdinalDriver() { HashMap tmp = new HashMap<>(); try { - var currentCamera = CameraManager.getCurrentCamera(); + var currentCamera = VisionManager.getCurrentCamera(); tmp.put("isDriver", currentCamera.getDriverMode()); tmp.put("driverBrightness", currentCamera.getDriverBrightness()); tmp.put("driverExposure", currentCamera.getDriverExposure()); @@ -271,15 +272,15 @@ public class ServerHandler { try { fullSettings.put("settings", getOrdinalSettings()); fullSettings.put("cameraSettings", getOrdinalCameraSettings()); - fullSettings.put("cameraList", CameraManager.getAllCameraByNickname()); + fullSettings.put("cameraList", VisionManager.getAllCameraByNickname()); fullSettings.put("pipeline", getOrdinalPipeline()); - var currentCamera = CameraManager.getCurrentCamera(); + var currentCamera = VisionManager.getCurrentCamera(); fullSettings.put("driverMode",getOrdinalDriver()); fullSettings.put("pipelineList", currentCamera.getPipelinesNickname()); fullSettings.put("resolutionList", currentCamera.getResolutionList()); fullSettings.put("port", currentCamera.getStreamPort()); - fullSettings.put("currentPipelineIndex", CameraManager.getCurrentCamera().getCurrentPipelineIndex()); - fullSettings.put("currentCameraIndex", CameraManager.getCurrentCameraIndex()); + fullSettings.put("currentPipelineIndex", VisionManager.getCurrentCamera().getCurrentPipelineIndex()); + fullSettings.put("currentCameraIndex", VisionManager.getCurrentCameraIndex()); } catch (CameraException | IllegalAccessException e) { System.err.println("No camera found!"); }