diff --git a/.gitignore b/.gitignore
index e1a08cb49..badf4ec29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -111,3 +111,4 @@ Main/target
New client/chameleon-client/node_modules/
Main/dependency-reduced-pom.xml
Main/src/main/java/META-INF
+*.prefs
diff --git a/Main/.gitignore b/Main/.gitignore
new file mode 100644
index 000000000..31636b185
--- /dev/null
+++ b/Main/.gitignore
@@ -0,0 +1,5 @@
+bin/*
+.settings/*
+.project
+.classpath
+*.prefs
\ No newline at end of file
diff --git a/Main/chameleon-vision.iml b/Main/chameleon-vision.iml
index d7ed36ac4..7ef49e681 100644
--- a/Main/chameleon-vision.iml
+++ b/Main/chameleon-vision.iml
@@ -18,6 +18,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -70,4 +89,4 @@
-
+
\ No newline at end of file
diff --git a/Main/src/main/java/com/chameleonvision/vision/VisionManager.java b/Main/src/main/java/com/chameleonvision/vision/VisionManager.java
index c6d69d194..b74708265 100644
--- a/Main/src/main/java/com/chameleonvision/vision/VisionManager.java
+++ b/Main/src/main/java/com/chameleonvision/vision/VisionManager.java
@@ -7,7 +7,6 @@ import com.chameleonvision.util.Platform;
import com.chameleonvision.vision.camera.CameraProcess;
import com.chameleonvision.vision.camera.USBCameraProcess;
import com.chameleonvision.vision.pipeline.CVPipelineSettings;
-import com.chameleonvision.web.ServerHandler;
import edu.wpi.cscore.UsbCamera;
import edu.wpi.cscore.UsbCameraInfo;
import org.opencv.videoio.VideoCapture;
@@ -20,9 +19,9 @@ public class VisionManager {
private VisionManager() {
}
- private static final LinkedHashMap UsbCameraInfosByCameraName = new LinkedHashMap<>();
- private static final LinkedList LoadedCameraConfigs = new LinkedList<>();
- private static final LinkedList VisionProcesses = new LinkedList<>();
+ private static final LinkedHashMap usbCameraInfosByCameraName = new LinkedHashMap<>();
+ private static final LinkedList loadedCameraConfigs = new LinkedList<>();
+ private static final LinkedList visionProcesses = new LinkedList<>();
private static class VisionProcessManageable {
public final int index;
@@ -45,22 +44,22 @@ public class VisionManager {
if (cap.isOpened()) {
cap.release();
String name = info.name;
- while (UsbCameraInfosByCameraName.containsKey(name)) {
+ while (usbCameraInfosByCameraName.containsKey(name)) {
suffix++;
name = String.format("%s (%d)", name, suffix);
}
- UsbCameraInfosByCameraName.put(name, info);
+ usbCameraInfosByCameraName.put(name, info);
}
}
- if (UsbCameraInfosByCameraName.isEmpty()) {
+ if (usbCameraInfosByCameraName.isEmpty()) {
return false;
}
// load the config
List preliminaryConfigs = new ArrayList<>();
- UsbCameraInfosByCameraName.values().forEach((cameraInfo) -> {
+ usbCameraInfosByCameraName.values().forEach((cameraInfo) -> {
String truePath;
if (Platform.CurrentPlatform.isWindows()) {
@@ -72,7 +71,7 @@ public class VisionManager {
preliminaryConfigs.add(new CameraConfig(truePath, cameraInfo.name));
});
- LoadedCameraConfigs.addAll(ConfigManager.initializeCameraConfig(preliminaryConfigs));
+ loadedCameraConfigs.addAll(ConfigManager.initializeCameraConfig(preliminaryConfigs));
// TODO: (HIGH) Load pipelines from json
// UsbCameraInfosByCameraName.forEach((cameraName, cameraInfo) -> {
@@ -85,18 +84,18 @@ public class VisionManager {
}
public static boolean initializeProcesses() {
- for (int i = 0; i < LoadedCameraConfigs.size(); i++) {
- CameraConfig config = LoadedCameraConfigs.get(i);
+ for (int i = 0; i < loadedCameraConfigs.size(); i++) {
+ CameraConfig config = loadedCameraConfigs.get(i);
CameraProcess camera = new USBCameraProcess(config);
VisionProcess process = new VisionProcess(camera, config.name);
- VisionProcesses.add(new VisionProcessManageable(i, config.name, process));
+ visionProcesses.add(new VisionProcessManageable(i, config.name, process));
}
currentUIVisionProcess = getVisionProcessByIndex(0);
return true;
}
public static void startProcesses() {
- VisionProcesses.forEach((vpm) -> {
+ visionProcesses.forEach((vpm) -> {
vpm.visionProcess.start();
});
}
@@ -106,7 +105,7 @@ public class VisionManager {
}
public static void setCurrentProcessByIndex(int processIndex) {
- if (processIndex > VisionProcesses.size() - 1) {
+ if (processIndex > visionProcesses.size() - 1) {
return;
}
@@ -114,16 +113,16 @@ public class VisionManager {
}
public static VisionProcess getVisionProcessByIndex(int processIndex) {
- if (processIndex > VisionProcesses.size() - 1) {
+ if (processIndex > visionProcesses.size() - 1) {
return null;
}
- VisionProcessManageable vpm = VisionProcesses.stream().filter(manageable -> manageable.index == processIndex).findFirst().orElse(null);
+ VisionProcessManageable vpm = visionProcesses.stream().filter(manageable -> manageable.index == processIndex).findFirst().orElse(null);
return vpm != null ? vpm.visionProcess : null;
}
public static List getAllCameraNicknames() {
- return VisionProcesses.stream().map(vpm -> vpm.visionProcess.getCamera()
+ return visionProcesses.stream().map(vpm -> vpm.visionProcess.getCamera()
.getProperties().getNickname()).collect(Collectors.toList());
}
@@ -132,7 +131,7 @@ public class VisionManager {
}
public static void saveCameras() {
- VisionProcesses.forEach((vpm) -> {
+ visionProcesses.forEach((vpm) -> {
VisionProcess process = vpm.visionProcess;
String cameraName = process.getCamera().getProperties().name;
List pipelines = process.getPipelines().stream().map(cvPipeline -> cvPipeline.settings).collect(Collectors.toList());
@@ -153,7 +152,7 @@ public class VisionManager {
}
public static int getCurrentUIVisionProcessIndex() {
- VisionProcessManageable vpm = VisionProcesses.stream().filter(v -> v.visionProcess == currentUIVisionProcess).findFirst().orElse(null);
+ VisionProcessManageable vpm = visionProcesses.stream().filter(v -> v.visionProcess == currentUIVisionProcess).findFirst().orElse(null);
return vpm != null ? vpm.index : -1;
}
}
diff --git a/Main/src/main/java/com/chameleonvision/web/ServerHandler.java b/Main/src/main/java/com/chameleonvision/web/ServerHandler.java
index 1160f9669..e453689c3 100644
--- a/Main/src/main/java/com/chameleonvision/web/ServerHandler.java
+++ b/Main/src/main/java/com/chameleonvision/web/ServerHandler.java
@@ -269,6 +269,19 @@ public class ServerHandler {
return tmp;
}
+ private static Map allFieldsToMap(Object obj) {
+ Map map = new HashMap<>();
+ try {
+ Field[] fields = obj.getClass().getFields();
+ for (Field field : fields) {
+ map.put(field.getName(), field.get(obj));
+ }
+ } catch (IllegalAccessException e) {
+ System.err.println("Illegal Access error:" + Arrays.toString(e.getStackTrace()));
+ }
+ return map;
+ }
+
public static void sendFullSettings() {
//General settings
Map fullSettings = new HashMap<>();
@@ -278,6 +291,8 @@ public class ServerHandler {
CVPipeline currentPipeline = currentProcess.getCurrentPipeline();
try {
+ fullSettings.putAll(allFieldsToMap(ConfigManager.settings));
+ fullSettings.putAll(allFieldsToMap(currentPipeline));
fullSettings.put("settings", getOrdinalSettings());
fullSettings.put("cameraSettings", getOrdinalCameraSettings());
fullSettings.put("cameraList", VisionManager.getAllCameraNicknames());
@@ -286,6 +301,7 @@ public class ServerHandler {
// TODO (HIGH) all of these settings!
fullSettings.put("pipelineList", VisionManager.getCurrentCameraPipelineNicknames());
fullSettings.put("resolutionList", VisionManager.getCurrentCameraResolutionList());
+ fullSettings.put("FOV", currentCamera.getProperties().FOV);
fullSettings.put("port", currentProcess.cameraStreamer.getStreamPort());
fullSettings.put("currentPipelineIndex", VisionManager.getCurrentUIVisionProcess().getCurrentPipelineIndex());
fullSettings.put("currentCameraIndex", VisionManager.getCurrentUIVisionProcessIndex());