Compare commits

...

5 Commits

Author SHA1 Message Date
Matt
e58c27caa2 Bump LL image to fix NetworkManager (#780) 2023-01-31 06:57:45 -06:00
Matt
f6e3c9b3ee Fix desync between web UI and NT (#778)
Actually calls VisionModule::setPipeline when changing pipelines (needed to change video modes)
2023-01-29 23:30:34 -05:00
Matt
88ed2ebf51 Add PhotonVersion to sources/headers zip (#777)
* Add PhotonVersion to sources/headers zip

* Update publish.gradle
2023-01-29 23:30:22 -05:00
David Vo
5f39123bde photon-lib: Fix C++ sources publish classifier (#765)
The canonical classifier is sources, not source.
2023-01-27 10:52:14 -05:00
Matt
37a7d378fd Fix publish type in photoncamera (#760) 2023-01-22 10:56:41 -05:00
8 changed files with 29 additions and 23 deletions

View File

@@ -397,7 +397,7 @@ jobs:
- os: ubuntu-latest - os: ubuntu-latest
artifact-name: LinuxArm64 artifact-name: LinuxArm64
image_suffix: limelight image_suffix: limelight
image_url: https://api.github.com/repos/photonvision/photon-pi-gen/releases/tags/v2023.1.1_limelight-arm64 image_url: https://api.github.com/repos/photonvision/photon-pi-gen/releases/tags/v2023.2.2_limelight-arm64
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
name: "Build image - ${{ matrix.image_url }}" name: "Build image - ${{ matrix.image_url }}"

View File

@@ -142,8 +142,8 @@ public class NTDataPublisher implements CVPipelineResultConsumer {
ts.rawBytesEntry.set(packet.getData()); ts.rawBytesEntry.set(packet.getData());
ts.pipelineIndexPublisher.setDefault(pipelineIndexSupplier.get()); ts.pipelineIndexPublisher.set(pipelineIndexSupplier.get());
ts.driverModePublisher.setDefault(driverModeSupplier.getAsBoolean()); ts.driverModePublisher.set(driverModeSupplier.getAsBoolean());
ts.latencyMillisEntry.set(result.getLatencyMillis()); ts.latencyMillisEntry.set(result.getLatencyMillis());
ts.hasTargetEntry.set(result.hasTargets()); ts.hasTargetEntry.set(result.hasTargets());

View File

@@ -136,7 +136,7 @@ public class VisionModule {
new NTDataPublisher( new NTDataPublisher(
visionSource.getSettables().getConfiguration().nickname, visionSource.getSettables().getConfiguration().nickname,
pipelineManager::getCurrentPipelineIndex, pipelineManager::getCurrentPipelineIndex,
pipelineManager::setIndex, this::setPipeline,
pipelineManager::getDriverMode, pipelineManager::getDriverMode,
this::setDriverMode); this::setDriverMode);
uiDataConsumer = new UIDataPublisher(index); uiDataConsumer = new UIDataPublisher(index);

View File

@@ -1,6 +1,7 @@
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
ext.licenseFile = files("$rootDir/LICENSE.txt") ext.licenseFile = files("$rootDir/LICENSE")
ext.photonVersionFile = files("$projectDir/src/generate/native/include")
def outputsFolder = file("$buildDir/outputs") def outputsFolder = file("$buildDir/outputs")
def allOutputsFolder = file("$buildDir/allOutputs") def allOutputsFolder = file("$buildDir/allOutputs")
@@ -54,15 +55,19 @@ task cppHeadersZip(type: Zip) {
into '/' into '/'
} }
from(photonVersionFile) {
into '/'
}
from('src/main/native/include/') { from('src/main/native/include/') {
into '/' into '/'
} }
} }
task cppSourceZip(type: Zip) { task cppSourcesZip(type: Zip) {
destinationDirectory = outputsFolder destinationDirectory = outputsFolder
archiveBaseName = zipBaseName archiveBaseName = zipBaseName
classifier = "source" classifier = "sources"
from(licenseFile) { from(licenseFile) {
into '/' into '/'
@@ -75,8 +80,8 @@ task cppSourceZip(type: Zip) {
build.dependsOn cppHeadersZip build.dependsOn cppHeadersZip
addTaskToCopyAllOutputs(cppHeadersZip) addTaskToCopyAllOutputs(cppHeadersZip)
build.dependsOn cppSourceZip build.dependsOn cppSourcesZip
addTaskToCopyAllOutputs(cppSourceZip) addTaskToCopyAllOutputs(cppSourcesZip)
task sourcesJar(type: Jar, dependsOn: classes) { task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources' classifier = 'sources'
@@ -162,7 +167,7 @@ model {
artifact it artifact it
} }
artifact cppHeadersZip artifact cppHeadersZip
artifact cppSourceZip artifact cppSourcesZip
artifactId = "${baseArtifactId}-cpp" artifactId = "${baseArtifactId}-cpp"
groupId artifactGroupId groupId artifactGroupId

View File

@@ -24,7 +24,6 @@
package org.photonvision; package org.photonvision;
import edu.wpi.first.networktables.BooleanEntry;
import edu.wpi.first.networktables.BooleanPublisher; import edu.wpi.first.networktables.BooleanPublisher;
import edu.wpi.first.networktables.BooleanSubscriber; import edu.wpi.first.networktables.BooleanSubscriber;
import edu.wpi.first.networktables.DoubleArrayPublisher; import edu.wpi.first.networktables.DoubleArrayPublisher;
@@ -50,7 +49,6 @@ public class PhotonCamera {
protected final NetworkTable rootTable; protected final NetworkTable rootTable;
RawSubscriber rawBytesEntry; RawSubscriber rawBytesEntry;
BooleanEntry driverModeEntry;
BooleanPublisher driverModePublisher; BooleanPublisher driverModePublisher;
BooleanSubscriber driverModeSubscriber; BooleanSubscriber driverModeSubscriber;
DoublePublisher latencyMillisEntry; DoublePublisher latencyMillisEntry;
@@ -67,7 +65,6 @@ public class PhotonCamera {
public void close() { public void close() {
rawBytesEntry.close(); rawBytesEntry.close();
driverModeEntry.close();
driverModePublisher.close(); driverModePublisher.close();
driverModeSubscriber.close(); driverModeSubscriber.close();
latencyMillisEntry.close(); latencyMillisEntry.close();
@@ -121,7 +118,8 @@ public class PhotonCamera {
.getRawTopic("rawBytes") .getRawTopic("rawBytes")
.subscribe( .subscribe(
"rawBytes", new byte[] {}, PubSubOption.periodic(0.01), PubSubOption.sendAll(true)); "rawBytes", new byte[] {}, PubSubOption.periodic(0.01), PubSubOption.sendAll(true));
driverModeEntry = rootTable.getBooleanTopic("driverMode").getEntry(false); driverModePublisher = rootTable.getBooleanTopic("driverMode").publish();
driverModeSubscriber = rootTable.getBooleanTopic("driverModeRequest").subscribe(false);
inputSaveImgEntry = rootTable.getIntegerTopic("inputSaveImgCmd").getEntry(0); inputSaveImgEntry = rootTable.getIntegerTopic("inputSaveImgCmd").getEntry(0);
outputSaveImgEntry = rootTable.getIntegerTopic("outputSaveImgCmd").getEntry(0); outputSaveImgEntry = rootTable.getIntegerTopic("outputSaveImgCmd").getEntry(0);
pipelineIndexEntry = rootTable.getIntegerTopic("pipelineIndex").getEntry(0); pipelineIndexEntry = rootTable.getIntegerTopic("pipelineIndex").getEntry(0);
@@ -179,7 +177,7 @@ public class PhotonCamera {
* @return Whether the camera is in driver mode. * @return Whether the camera is in driver mode.
*/ */
public boolean getDriverMode() { public boolean getDriverMode() {
return driverModeEntry.get(false); return driverModeSubscriber.get();
} }
/** /**
@@ -188,7 +186,7 @@ public class PhotonCamera {
* @param driverMode Whether to set driver mode. * @param driverMode Whether to set driver mode.
*/ */
public void setDriverMode(boolean driverMode) { public void setDriverMode(boolean driverMode) {
driverModeEntry.set(driverMode); driverModePublisher.set(driverMode);
} }
/** /**

View File

@@ -41,8 +41,7 @@ PhotonCamera::PhotonCamera(nt::NetworkTableInstance instance,
rootTable(mainTable->GetSubTable(cameraName)), rootTable(mainTable->GetSubTable(cameraName)),
rawBytesEntry( rawBytesEntry(
rootTable->GetRawTopic("rawBytes") rootTable->GetRawTopic("rawBytes")
.Subscribe("raw", {}, {.periodic = 0.01, .sendAll = true})), .Subscribe("rawBytes", {}, {.periodic = 0.01, .sendAll = true})),
driverModeEntry(rootTable->GetBooleanTopic("driverMode").Publish()),
inputSaveImgEntry( inputSaveImgEntry(
rootTable->GetIntegerTopic("inputSaveImgCmd").Publish()), rootTable->GetIntegerTopic("inputSaveImgCmd").Publish()),
inputSaveImgSubscriber( inputSaveImgSubscriber(
@@ -56,6 +55,8 @@ PhotonCamera::PhotonCamera(nt::NetworkTableInstance instance,
versionEntry(mainTable->GetStringTopic("version").Subscribe("")), versionEntry(mainTable->GetStringTopic("version").Subscribe("")),
driverModeSubscriber( driverModeSubscriber(
rootTable->GetBooleanTopic("driverMode").Subscribe(false)), rootTable->GetBooleanTopic("driverMode").Subscribe(false)),
driverModePublisher(
rootTable->GetBooleanTopic("driverModeRequest").Publish()),
pipelineIndexSubscriber( pipelineIndexSubscriber(
rootTable->GetIntegerTopic("pipelineIndex").Subscribe(-1)), rootTable->GetIntegerTopic("pipelineIndex").Subscribe(-1)),
ledModeSubscriber(mainTable->GetIntegerTopic("ledMode").Subscribe(0)), ledModeSubscriber(mainTable->GetIntegerTopic("ledMode").Subscribe(0)),
@@ -92,7 +93,7 @@ PhotonPipelineResult PhotonCamera::GetLatestResult() {
} }
void PhotonCamera::SetDriverMode(bool driverMode) { void PhotonCamera::SetDriverMode(bool driverMode) {
driverModeEntry.Set(driverMode); driverModePublisher.Set(driverMode);
} }
void PhotonCamera::TakeInputSnapshot() { void PhotonCamera::TakeInputSnapshot() {

View File

@@ -168,7 +168,6 @@ class PhotonCamera {
std::shared_ptr<nt::NetworkTable> mainTable; std::shared_ptr<nt::NetworkTable> mainTable;
std::shared_ptr<nt::NetworkTable> rootTable; std::shared_ptr<nt::NetworkTable> rootTable;
nt::RawSubscriber rawBytesEntry; nt::RawSubscriber rawBytesEntry;
nt::BooleanPublisher driverModeEntry;
nt::IntegerPublisher inputSaveImgEntry; nt::IntegerPublisher inputSaveImgEntry;
nt::IntegerSubscriber inputSaveImgSubscriber; nt::IntegerSubscriber inputSaveImgSubscriber;
nt::IntegerPublisher outputSaveImgEntry; nt::IntegerPublisher outputSaveImgEntry;
@@ -178,6 +177,7 @@ class PhotonCamera {
nt::StringSubscriber versionEntry; nt::StringSubscriber versionEntry;
nt::BooleanSubscriber driverModeSubscriber; nt::BooleanSubscriber driverModeSubscriber;
nt::BooleanPublisher driverModePublisher;
nt::IntegerSubscriber pipelineIndexSubscriber; nt::IntegerSubscriber pipelineIndexSubscriber;
nt::IntegerSubscriber ledModeSubscriber; nt::IntegerSubscriber ledModeSubscriber;

View File

@@ -75,9 +75,11 @@ public class NTTopicSet {
pipelineIndexPublisher = pipelineIndexTopic.publish(); pipelineIndexPublisher = pipelineIndexTopic.publish();
pipelineIndexSubscriber = pipelineIndexTopic.subscribe(0); pipelineIndexSubscriber = pipelineIndexTopic.subscribe(0);
driverModeEntry = subTable.getBooleanTopic("driverMode"); driverModePublisher = subTable.getBooleanTopic("driverMode").publish();
driverModePublisher = driverModeEntry.publish(); driverModeSubscriber = subTable.getBooleanTopic("driverModeRequest").subscribe(false);
driverModeSubscriber = driverModeEntry.subscribe(false);
// Fun little hack to make the request show up
driverModeSubscriber.getTopic().publish().setDefault(false);
latencyMillisEntry = subTable.getDoubleTopic("latencyMillis").publish(); latencyMillisEntry = subTable.getDoubleTopic("latencyMillis").publish();
hasTargetEntry = subTable.getBooleanTopic("hasTarget").publish(); hasTargetEntry = subTable.getBooleanTopic("hasTarget").publish();