mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-20 00:51:41 +00:00
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:
@@ -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()
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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...");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user