Fix NT driver mode set/get (#37)

This commit is contained in:
Banks T
2020-07-16 22:43:29 -04:00
committed by GitHub
parent 061385f0b6
commit 53783d88d7
2 changed files with 25 additions and 32 deletions

View File

@@ -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 =

View File

@@ -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);
}