diff --git a/Main/src/main/java/com/chameleonvision/config/CameraConfig.java b/Main/src/main/java/com/chameleonvision/config/CameraConfig.java index 06a850401..bc6e00b29 100644 --- a/Main/src/main/java/com/chameleonvision/config/CameraConfig.java +++ b/Main/src/main/java/com/chameleonvision/config/CameraConfig.java @@ -21,29 +21,27 @@ public class CameraConfig { private final String cameraConfigName; private final CameraJsonConfig preliminaryConfig; + private final PipelineConfig pipelineConfig; + CameraConfig(CameraJsonConfig config) { preliminaryConfig = config; cameraConfigName = preliminaryConfig.name.replace(' ', '_'); + pipelineConfig = new PipelineConfig(this); } - public CameraJsonConfig load() { + public FullCameraConfiguration load() { checkFolder(); checkConfig(); - checkPipelines(); checkDriverMode(); + pipelineConfig.check(); - return loadConfig(); + return new FullCameraConfiguration(loadConfig(), pipelineConfig.load(), loadDriverMode()); } private CameraJsonConfig loadConfig() { CameraJsonConfig config = preliminaryConfig; try { config = JacksonHelper.deserializer(getConfigPath(), CameraJsonConfig.class); -// if (config != null) { -// TODO: fix for multicamera -// boolean pathsDifferent = !(config.path != preliminaryConfig.path); -// config = new CameraJsonConfig(config.fov, preliminaryConfig.path, config.name, config.nickname); -// } } catch (IOException e) { System.err.printf("Failed to load camera config: %s - using default.\n", getConfigPath().toString()); } @@ -118,16 +116,7 @@ public class CameraConfig { } } - private void checkPipelines() { - if (!pipelinesExists()) { - try { - var sanePipeline = List.of(new CVPipeline2dSettings()).toArray(); - JacksonHelper.serializer(getPipelinesPath(), List.of(new CVPipeline2dSettings()).toArray()); - } catch (IOException e) { - System.err.println("Failed to create camera pipelines file: " + getPipelinesPath().toString()); - } - } - } + private void checkDriverMode() { if (!driverModeExists()) { @@ -149,7 +138,7 @@ public class CameraConfig { return Paths.get(getFolderPath().toString(), "camera.json"); } - private Path getPipelinesPath() { + Path getPipelinesPath() { return Paths.get(getFolderPath().toString(), "pipelines.json"); } @@ -157,7 +146,7 @@ public class CameraConfig { return Paths.get(getFolderPath().toString(), "drivermode.json"); } - private boolean folderExists() { + boolean folderExists() { return Files.exists(getFolderPath()); } @@ -165,11 +154,11 @@ public class CameraConfig { return folderExists() && Files.exists(getConfigPath()); } - private boolean pipelinesExists() { - return folderExists() && Files.exists(getPipelinesPath()); - } - private boolean driverModeExists() { return folderExists() && Files.exists(getDriverModePath()); } + + boolean pipelinesExists() { + return folderExists() && Files.exists(getPipelinesPath()); + } } diff --git a/Main/src/main/java/com/chameleonvision/config/PipelineConfig.java b/Main/src/main/java/com/chameleonvision/config/PipelineConfig.java new file mode 100644 index 000000000..24a619ba7 --- /dev/null +++ b/Main/src/main/java/com/chameleonvision/config/PipelineConfig.java @@ -0,0 +1,45 @@ +package com.chameleonvision.config; + +import com.chameleonvision.util.JacksonHelper; +import com.chameleonvision.vision.pipeline.CVPipeline2dSettings; +import com.chameleonvision.vision.pipeline.CVPipeline3dSettings; +import com.chameleonvision.vision.pipeline.CVPipelineSettings; + +import java.io.IOException; +import java.util.List; + +public class PipelineConfig { + + public static final String CVPipeline2DPrefix = "CV2D"; + public static final String CVPipeline3DPrefix = "CV3D"; + + private final CameraConfig cameraConfig; + + public PipelineConfig(CameraConfig cameraConfig) { + this.cameraConfig = cameraConfig; + } + + void check() { + if (!cameraConfig.pipelinesExists()) { + save(new CVPipeline2dSettings()); + } + } + + private void save(CVPipelineSettings settings) { + if (settings instanceof CVPipeline2dSettings) { + + } else if (settings instanceof CVPipeline3dSettings) { + + } + } + + public void save(List settings) { + for(CVPipelineSettings setting : settings) { + save(setting); + } + } + + public List load() { + return null; + } +}