diff --git a/photon-server/src/main/java/org/photonvision/vision/processes/PipelineManager.java b/photon-server/src/main/java/org/photonvision/vision/processes/PipelineManager.java
index 36e517e72..693c460e1 100644
--- a/photon-server/src/main/java/org/photonvision/vision/processes/PipelineManager.java
+++ b/photon-server/src/main/java/org/photonvision/vision/processes/PipelineManager.java
@@ -167,13 +167,23 @@ public class PipelineManager {
}
/**
- * Leaves the current built-in pipeline, if applicable, and sets the active pipeline to the most
- * recently active user-created pipeline.
+ * Enters or exits driver mode based on the parameter.
+ *
+ * Exiting returns to the last used user pipeline.
+ *
+ * @param state True to enter driver mode, false to exit driver mode.
*/
- public void exitAuxiliaryPipeline() {
- if (currentPipelineIndex < 0) {
- setPipelineInternal(lastPipelineIndex);
- }
+ public void setDriverMode(boolean state) {
+ setPipelineInternal(state ? DRIVERMODE_INDEX : lastPipelineIndex);
+ }
+
+ /**
+ * Returns whether or not driver mode is active.
+ *
+ * @return Whether or not driver mode is active.
+ */
+ public boolean getDriverMode() {
+ return currentPipelineIndex == DRIVERMODE_INDEX;
}
public static final Comparator PipelineSettingsIndexComparator =
diff --git a/photon-server/src/main/java/org/photonvision/vision/processes/VisionModule.java b/photon-server/src/main/java/org/photonvision/vision/processes/VisionModule.java
index 120687ac1..88caf640a 100644
--- a/photon-server/src/main/java/org/photonvision/vision/processes/VisionModule.java
+++ b/photon-server/src/main/java/org/photonvision/vision/processes/VisionModule.java
@@ -63,10 +63,10 @@ public class VisionModule {
private long lastUIResultUpdateTime = 0;
private long lastRunTime = 0;
- private MedianFilter fpsAverager = new MedianFilter(10);
+ private final MedianFilter fpsAverager = new MedianFilter(10);
+ private final MJPGFrameConsumer dashboardInputStreamer;
private MJPGFrameConsumer dashboardOutputStreamer;
- private MJPGFrameConsumer dashboardInputStreamer;
public VisionModule(PipelineManager pipelineManager, VisionSource visionSource, int index) {
logger =
@@ -91,24 +91,16 @@ public class VisionModule {
dashboardInputStreamer =
new MJPGFrameConsumer(visionSource.getSettables().getConfiguration().uniqueName + "-input");
- addResultConsumer(
- result -> {
- dashboardInputStreamer.accept(result.inputFrame);
- });
- addResultConsumer(
- result -> {
- dashboardOutputStreamer.accept(result.outputFrame);
- });
+ addResultConsumer(result -> dashboardInputStreamer.accept(result.inputFrame));
+ addResultConsumer(result -> dashboardOutputStreamer.accept(result.outputFrame));
ntConsumer =
new NTDataPublisher(
visionSource.getSettables().getConfiguration().nickname,
pipelineManager::getCurrentPipelineIndex,
pipelineManager::setIndex,
- () -> pipelineManager.getCurrentPipelineIndex() == -1,
- (driverMode) -> {
- /* TODO: switch to driver mode */
- });
+ pipelineManager::getDriverMode,
+ pipelineManager::setDriverMode);
addResultConsumer(ntConsumer);
addResultConsumer(
result -> {
@@ -225,11 +217,6 @@ public class VisionModule {
setPipeline(index);
saveAndBroadcast();
return;
- case "selectedOutputs":
- // 0 indicates normal, 1 indicates thresholded
- var outputs = (ArrayList) newPropValue;
- // TODO
- return;
}
// special case for camera settables
@@ -390,11 +377,7 @@ public class VisionModule {
resultConsumers.add(dataConsumer);
}
- void addFrameConsumer(FrameConsumer consumer) {
- frameConsumers.add(consumer);
- }
-
- void consumeResult(CVPipelineResult result) {
+ private void consumeResult(CVPipelineResult result) {
consumePipelineResult(result);
var frame = result.outputFrame;
@@ -403,13 +386,13 @@ public class VisionModule {
result.release();
}
- void consumePipelineResult(CVPipelineResult result) {
+ private void consumePipelineResult(CVPipelineResult result) {
for (var dataConsumer : resultConsumers) {
dataConsumer.accept(result);
}
}
- void consumeFrame(Frame frame) {
+ private void consumeFrame(Frame frame) {
for (var frameConsumer : frameConsumers) {
frameConsumer.accept(frame);
}