UI 3d mode, ConfigManager bugfixes (#103)

* stupid bugs I guess idk where else to put this commit

* Run spotless

* Fix config file loading

Splits load into own method

* Run spotless
This commit is contained in:
Matt
2020-08-26 10:03:56 -07:00
committed by GitHub
parent fea72e18bf
commit 9f0e89ea29
13 changed files with 105 additions and 36 deletions

View File

@@ -162,12 +162,13 @@ public class Main {
try {
CameraServerCvJNI.forceLoad();
TestUtils.loadLibraries();
logger.info("Native libraries loaded.");
} catch (Exception e) {
logger.error("Failed to load native libraries!", e);
}
ConfigManager.getInstance(); // init config manager
ConfigManager.getInstance().load(); // init config manager
NetworkManager.getInstance().initialize(false);
NetworkTablesManager.getInstance()

View File

@@ -87,11 +87,9 @@ public class ConfigManager {
this.camerasFolder = new File(Path.of(configDirectoryFile.toString(), "cameras").toUri());
TimedTaskManager.getInstance().addTask("ConfigManager", this::checkSaveAndWrite, 1000);
load();
}
private void load() {
public void load() {
logger.info("Loading settings...");
if (!configDirectoryFile.exists()) {
if (configDirectoryFile.mkdirs()) {
@@ -163,6 +161,9 @@ public class ConfigManager {
public void saveToDisk() {
logger.info("Saving settings...");
// Delete old configs
FileUtils.deleteDirectory(camerasFolder.toPath());
try {
JacksonUtils.serialize(hardwareConfigFile.toPath(), config.getHardwareConfig());
} catch (IOException e) {
@@ -174,9 +175,6 @@ public class ConfigManager {
logger.error("Could not save network config!", e);
}
// Delete old configs
FileUtils.deleteDirectory(camerasFolder.toPath());
// save all of our cameras
var cameraConfigMap = config.getCameraConfigurations();
for (var subdirName : cameraConfigMap.keySet()) {

View File

@@ -36,6 +36,7 @@ import org.photonvision.common.logging.LogGroup;
import org.photonvision.common.logging.Logger;
import org.photonvision.common.networking.NetworkManager;
import org.photonvision.vision.processes.VisionModuleManager;
import org.photonvision.vision.target.TargetModel;
public class RequestHandler {
private static final Logger logger = new Logger(RequestHandler.class, LogGroup.WebServer);
@@ -149,4 +150,23 @@ public class RequestHandler {
ctx.status(200);
System.exit(0);
}
public static void uploadPnpModel(Context ctx) {
UITargetData data;
try {
data = kObjectMapper.readValue(ctx.body(), UITargetData.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
ctx.status(500);
return;
}
VisionModuleManager.getInstance().getModule(data.index).setTargetModel(data.targetModel);
ctx.status(200);
}
public static class UITargetData {
public int index;
public TargetModel targetModel;
}
}

View File

@@ -79,6 +79,7 @@ public class Server {
app.post("/api/settings/endCalibration", RequestHandler::onCalibrationEnd);
app.post("/api/restartDevice", RequestHandler::restartDevice);
app.post("api/restartProgram", RequestHandler::restartProgram);
app.post("api/vision/pnpModel", RequestHandler::uploadPnpModel);
app.start(port);
}

View File

@@ -38,8 +38,10 @@ import org.photonvision.vision.camera.CameraQuirk;
import org.photonvision.vision.camera.QuirkyCamera;
import org.photonvision.vision.camera.USBCameraSource;
import org.photonvision.vision.frame.consumer.MJPGFrameConsumer;
import org.photonvision.vision.pipeline.ReflectivePipelineSettings;
import org.photonvision.vision.pipeline.UICalibrationData;
import org.photonvision.vision.pipeline.result.CVPipelineResult;
import org.photonvision.vision.target.TargetModel;
/**
* This is the God Class
@@ -345,4 +347,14 @@ public class VisionModule {
lastFrameConsumeMillis = System.currentTimeMillis();
}
}
public void setTargetModel(TargetModel targetModel) {
var settings = pipelineManager.getCurrentUserPipeline().getSettings();
if (settings instanceof ReflectivePipelineSettings) {
((ReflectivePipelineSettings) settings).targetModel = targetModel;
saveAndBroadcastAll();
} else {
logger.error("Cannot set target model of non-reflective pipe! Ignoring...");
}
}
}

View File

@@ -169,7 +169,7 @@ public class VisionModuleChangeSubscriber extends DataChangeSubscriber {
var actual = new IntegerCouple(orig.get(0), orig.get(1));
propField.set(currentSettings, actual);
} else if (propType.equals(Double.TYPE)) {
propField.setDouble(currentSettings, (Double) newPropValue);
propField.setDouble(currentSettings, ((Number) newPropValue).doubleValue());
} else if (propType.equals(Integer.TYPE)) {
propField.setInt(currentSettings, (Integer) newPropValue);
} else if (propType.equals(Boolean.TYPE)) {