diff --git a/.gitignore b/.gitignore index ef32c47e9..b8c043901 100644 --- a/.gitignore +++ b/.gitignore @@ -107,3 +107,5 @@ fabric.properties Main/Settings/ Main/.gradle Main/target + +New client/chameleon-client/node_modules/ diff --git a/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java b/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java index a2f1d3e8d..a092f70bc 100644 --- a/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java +++ b/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java @@ -12,11 +12,12 @@ import java.io.FileWriter; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.HashMap; public class SettingsManager { public static final Path SettingsPath = Paths.get(System.getProperty("user.dir"), "Settings"); public static com.chameleonvision.vision.GeneralSettings GeneralSettings; - // public static HashMap CameraPorts = new HashMap<>();//TODO Implement ports + public static HashMap CameraPorts = new HashMap<>(); private SettingsManager() {} diff --git a/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java b/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java index be4a00c74..a5f22da48 100644 --- a/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java +++ b/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java @@ -1,5 +1,6 @@ package com.chameleonvision.vision.camera; +import com.chameleonvision.settings.SettingsManager; import com.chameleonvision.vision.Pipeline; import edu.wpi.cscore.*; import edu.wpi.first.cameraserver.CameraServer; @@ -68,6 +69,8 @@ public class Camera { cvSink = cs.getVideo(UsbCam); cvSource = cs.putVideo(name, camVals.ImageWidth, camVals.ImageHeight); + var s = (MjpegServer) cs.getServer("serve_" + name); + SettingsManager.CameraPorts.put(name, s.getPort()); } public void setCamVideoMode(int videoMode) { diff --git a/Main/src/main/java/com/chameleonvision/vision/process/CameraProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/CameraProcess.java index 164d16e17..75580aaca 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/CameraProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CameraProcess.java @@ -65,7 +65,10 @@ public class CameraProcess implements Runnable { camera.setExposure(pipeline.exposure); camera.setBrightness(pipeline.brightness); - //TODO Send Pipeline change using websocket to client + HashMap pipeChange = new HashMap<>(); + pipeChange.put("curr_pipeline",ntPipelineIndex); + Server.handler.broadcastMessage(pipeChange); + } else { ntPipelineEntry.setString("pipeline" + camera.getCurrentPipelineIndex()); } @@ -113,7 +116,6 @@ public class CameraProcess implements Runnable { ntTimeStampEntry.setNumber(TimeStamp); } - // TODO: Separate video output to separate function, maybe even second thread private PipelineResult runVisionProcess(Mat inputImage, Mat outputImage) { var pipelineResult = new PipelineResult(); @@ -155,7 +157,6 @@ public class CameraProcess implements Runnable { } pipelineResult.Pitch = camera.getCamVals().CalculatePitch(finalRect.center.y, pipelineResult.CalibratedY); pipelineResult.Yaw = camera.getCamVals().CalculateYaw(finalRect.center.x, pipelineResult.CalibratedX); - // TODO Send pitch yaw distance and Raw Point using websockets to client for calib calc drawContour(outputImage, finalRect); } } diff --git a/Main/src/main/java/com/chameleonvision/web/ServerHandler.java b/Main/src/main/java/com/chameleonvision/web/ServerHandler.java index e2974d543..b3c2a3df6 100644 --- a/Main/src/main/java/com/chameleonvision/web/ServerHandler.java +++ b/Main/src/main/java/com/chameleonvision/web/ServerHandler.java @@ -83,8 +83,9 @@ public class ServerHandler { String newCamera = (String) value; System.out.printf("Changing camera to %s\n", newCamera); CameraManager.setCurrentCamera(newCamera); - //broadcastMessage((Map) new HashMap(){}.put("port",SettingsManager.CameraPorts.get(SettingsManager.GeneralSettings.curr_camera))); + broadcastMessage(new HashMap(){}.put("port",SettingsManager.CameraPorts.get(SettingsManager.GeneralSettings.curr_camera))); broadcastMessage(CameraManager.getCurrentCamera()); //TODO CHECK JSON FOR CAMERA CHANGE + break; case "curr_pipeline": String newPipeline = (String) value; @@ -182,7 +183,7 @@ public class ServerHandler { fullSettings.put("resolutionList", CameraManager.getResolutionList()); fullSettings.put("resolution", currentCamera.getVideoModeIndex()); fullSettings.put("FOV", currentCamera.getFOV()); -// fullSettings.put("port", SettingsManager.CameraPorts.get(SettingsManager.GeneralSettings.curr_camera)); + fullSettings.put("port", SettingsManager.CameraPorts.get(SettingsManager.GeneralSettings.curr_camera)); } catch (CameraException e) { System.err.println("No camera found!"); //TODO: add message to ui to inform that there are no cameras