mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-20 00:51:41 +00:00
Fix NT driver mode set/get (#37)
This commit is contained in:
@@ -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. <br>
|
||||
* <br>
|
||||
* 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<CVPipelineSettings> PipelineSettingsIndexComparator =
|
||||
|
||||
@@ -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<Integer>) 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user