From b729d9e9172e11ad0225438e8a6504c4b12543c5 Mon Sep 17 00:00:00 2001 From: ArchB1W <44449514+ArchB1W@users.noreply.github.com> Date: Sat, 13 Jan 2024 22:35:57 -0500 Subject: [PATCH] [photon-lib java] Implement ProtobufSerializable (#1156) * [photon-lib java] Fix classes with protobuf support not "announcing it" Since they didn't implement `ProtobufSerializable` this meant that most other software didn't even know protobufs were even implemented. In AdvantageKit for example this would cause it to not work it all and crash. * Run `spotlessJavaApply` --- .../java/org/photonvision/targeting/MultiTargetPNPResult.java | 3 ++- .../src/main/java/org/photonvision/targeting/PNPResult.java | 3 ++- .../java/org/photonvision/targeting/PhotonPipelineResult.java | 3 ++- .../java/org/photonvision/targeting/PhotonTrackedTarget.java | 3 ++- .../src/main/java/org/photonvision/targeting/TargetCorner.java | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/photon-targeting/src/main/java/org/photonvision/targeting/MultiTargetPNPResult.java b/photon-targeting/src/main/java/org/photonvision/targeting/MultiTargetPNPResult.java index 8cf84eb6a..380fe63ba 100644 --- a/photon-targeting/src/main/java/org/photonvision/targeting/MultiTargetPNPResult.java +++ b/photon-targeting/src/main/java/org/photonvision/targeting/MultiTargetPNPResult.java @@ -17,13 +17,14 @@ package org.photonvision.targeting; +import edu.wpi.first.util.protobuf.ProtobufSerializable; import java.util.ArrayList; import java.util.List; import org.photonvision.common.dataflow.structures.Packet; import org.photonvision.common.dataflow.structures.PacketSerde; import org.photonvision.targeting.proto.MultiTargetPNPResultProto; -public class MultiTargetPNPResult { +public class MultiTargetPNPResult implements ProtobufSerializable { // Seeing 32 apriltags at once seems like a sane limit private static final int MAX_IDS = 32; diff --git a/photon-targeting/src/main/java/org/photonvision/targeting/PNPResult.java b/photon-targeting/src/main/java/org/photonvision/targeting/PNPResult.java index e7038cca4..632e36d2b 100644 --- a/photon-targeting/src/main/java/org/photonvision/targeting/PNPResult.java +++ b/photon-targeting/src/main/java/org/photonvision/targeting/PNPResult.java @@ -18,6 +18,7 @@ package org.photonvision.targeting; import edu.wpi.first.math.geometry.Transform3d; +import edu.wpi.first.util.protobuf.ProtobufSerializable; import org.photonvision.common.dataflow.structures.Packet; import org.photonvision.common.dataflow.structures.PacketSerde; import org.photonvision.targeting.proto.PNPResultProto; @@ -32,7 +33,7 @@ import org.photonvision.utils.PacketUtils; *
Note that the coordinate frame of these transforms depends on the implementing solvePnP * method. */ -public class PNPResult { +public class PNPResult implements ProtobufSerializable { /** * If this result is valid. A false value indicates there was an error in estimation, and this * result should not be used. diff --git a/photon-targeting/src/main/java/org/photonvision/targeting/PhotonPipelineResult.java b/photon-targeting/src/main/java/org/photonvision/targeting/PhotonPipelineResult.java index 7f70f3bbb..34f0602b1 100644 --- a/photon-targeting/src/main/java/org/photonvision/targeting/PhotonPipelineResult.java +++ b/photon-targeting/src/main/java/org/photonvision/targeting/PhotonPipelineResult.java @@ -17,6 +17,7 @@ package org.photonvision.targeting; +import edu.wpi.first.util.protobuf.ProtobufSerializable; import java.util.ArrayList; import java.util.List; import org.photonvision.common.dataflow.structures.Packet; @@ -24,7 +25,7 @@ import org.photonvision.common.dataflow.structures.PacketSerde; import org.photonvision.targeting.proto.PhotonPipelineResultProto; /** Represents a pipeline result from a PhotonCamera. */ -public class PhotonPipelineResult { +public class PhotonPipelineResult implements ProtobufSerializable { private static boolean HAS_WARNED = false; // Targets to store. diff --git a/photon-targeting/src/main/java/org/photonvision/targeting/PhotonTrackedTarget.java b/photon-targeting/src/main/java/org/photonvision/targeting/PhotonTrackedTarget.java index b559fec5f..bd59cb4b3 100644 --- a/photon-targeting/src/main/java/org/photonvision/targeting/PhotonTrackedTarget.java +++ b/photon-targeting/src/main/java/org/photonvision/targeting/PhotonTrackedTarget.java @@ -18,6 +18,7 @@ package org.photonvision.targeting; import edu.wpi.first.math.geometry.Transform3d; +import edu.wpi.first.util.protobuf.ProtobufSerializable; import java.util.ArrayList; import java.util.List; import org.photonvision.common.dataflow.structures.Packet; @@ -25,7 +26,7 @@ import org.photonvision.common.dataflow.structures.PacketSerde; import org.photonvision.targeting.proto.PhotonTrackedTargetProto; import org.photonvision.utils.PacketUtils; -public class PhotonTrackedTarget { +public class PhotonTrackedTarget implements ProtobufSerializable { private static final int MAX_CORNERS = 8; private final double yaw; diff --git a/photon-targeting/src/main/java/org/photonvision/targeting/TargetCorner.java b/photon-targeting/src/main/java/org/photonvision/targeting/TargetCorner.java index 0e27c51b8..cd5ebfec7 100644 --- a/photon-targeting/src/main/java/org/photonvision/targeting/TargetCorner.java +++ b/photon-targeting/src/main/java/org/photonvision/targeting/TargetCorner.java @@ -17,6 +17,7 @@ package org.photonvision.targeting; +import edu.wpi.first.util.protobuf.ProtobufSerializable; import java.util.Objects; import org.photonvision.common.dataflow.structures.Packet; import org.photonvision.common.dataflow.structures.PacketSerde; @@ -26,7 +27,7 @@ import org.photonvision.targeting.proto.TargetCornerProto; * Represents a point in an image at the corner of the minimum-area bounding rectangle, in pixels. * Origin at the top left, plus-x to the right, plus-y down. */ -public class TargetCorner { +public class TargetCorner implements ProtobufSerializable { public final double x; public final double y;