Remove hasTargets member variable and fix docs warnings (#283)

hasTargets is redundant because the same information can be obtained by
checking the size of the targets array.
This commit is contained in:
Tyler Veness
2021-09-03 19:19:38 -07:00
committed by GitHub
parent affb27038b
commit 798b8e398a
8 changed files with 27 additions and 30 deletions

View File

@@ -15,6 +15,7 @@ includeProject {
includeOtherLibs {
^frc/
^networktables/
^units/
^wpi/
}

View File

@@ -195,6 +195,7 @@ public class PhotonCamera {
* @deprecated This method should be replaced with {@link PhotonPipelineResult#hasTargets()}
* @return Whether the latest target result has targets.
*/
@Deprecated
public boolean hasTargets() {
return getLatestResult().hasTargets();
}

View File

@@ -21,13 +21,10 @@ namespace photonlib {
PhotonPipelineResult::PhotonPipelineResult(
units::second_t latency, wpi::ArrayRef<PhotonTrackedTarget> targets)
: latency(latency),
targets(targets.data(), targets.data() + targets.size()) {
hasTargets = targets.size() != 0;
}
targets(targets.data(), targets.data() + targets.size()) {}
bool PhotonPipelineResult::operator==(const PhotonPipelineResult& other) const {
return latency == other.latency && hasTargets == other.hasTargets &&
targets == other.targets;
return latency == other.latency && targets == other.targets;
}
bool PhotonPipelineResult::operator!=(const PhotonPipelineResult& other) const {
@@ -35,8 +32,8 @@ bool PhotonPipelineResult::operator!=(const PhotonPipelineResult& other) const {
}
Packet& operator<<(Packet& packet, const PhotonPipelineResult& result) {
// Encode latency, existence of targets, and number of targets.
packet << result.latency.to<double>() * 1000 << result.hasTargets
// Encode latency and number of targets.
packet << result.latency.to<double>() * 1000
<< static_cast<int8_t>(result.targets.size());
// Encode the information of each target.
@@ -50,7 +47,7 @@ Packet& operator>>(Packet& packet, PhotonPipelineResult& result) {
// Decode latency, existence of targets, and number of targets.
int8_t targetCount = 0;
double latencyMillis = 0;
packet >> latencyMillis >> result.hasTargets >> targetCount;
packet >> latencyMillis >> targetCount;
result.latency = units::second_t(latencyMillis / 1000.0);
result.targets.clear();

View File

@@ -17,12 +17,13 @@
#pragma once
#include <memory>
#include <string>
#include <networktables/NetworkTable.h>
#include <networktables/NetworkTableEntry.h>
#include <networktables/NetworkTableInstance.h>
#include <memory>
#include <string>
#include <wpi/deprecated.h>
#include "photonlib/PhotonPipelineResult.h"
@@ -118,9 +119,11 @@ class PhotonCamera {
* This method is deprecated; {@link PhotonPipelineResult#hasTargets()} should
* be used instead.
* @deprecated This method should be replaced with {@link
* PhotonPipelineResult#hasTargets()}
* PhotonPipelineResult#HasTargets()}
* @return Whether the latest target result has targets.
*/
WPI_DEPRECATED(
"This method should be replaced with PhotonPipelineResult::HasTargets()")
bool HasTargets() const { return GetLatestResult().HasTargets(); }
private:

View File

@@ -57,12 +57,12 @@ class PhotonPipelineResult {
if (!HasTargets() && !HAS_WARNED) {
::frc::DriverStation::ReportError(
"This PhotonPipelineResult object has no targets associated with it! "
"Please check hasTargets() before calling this method. For more "
"Please check HasTargets() before calling this method. For more "
"information, please review the PhotonLib documentation at "
"http://docs.photonvision.org");
HAS_WARNED = true;
}
return hasTargets ? targets[0] : PhotonTrackedTarget();
return HasTargets() ? targets[0] : PhotonTrackedTarget();
}
/**
@@ -75,7 +75,7 @@ class PhotonPipelineResult {
* Returns whether the pipeline has targets.
* @return Whether the pipeline has targets.
*/
bool HasTargets() const { return hasTargets; }
bool HasTargets() const { return targets.size() > 0; }
/**
* Returns a reference to the vector of targets.
@@ -93,7 +93,6 @@ class PhotonPipelineResult {
private:
units::second_t latency = 0_s;
bool hasTargets = false;
wpi::SmallVector<PhotonTrackedTarget, 10> targets;
inline static bool HAS_WARNED = false;
};

View File

@@ -18,7 +18,6 @@
#include <networktables/NetworkTable.h>
#include <networktables/NetworkTableEntry.h>
#include <networktables/NetworkTableInstance.h>
#include <units/angle.h>
#include <units/length.h>

View File

@@ -26,7 +26,11 @@ public class Packet {
// Read and write positions.
int readPos, writePos;
/** Constructs an empty packet. */
/**
* Constructs an empty packet.
*
* @param size The size of the packet buffer.
*/
public Packet(int size) {
this.size = size;
packetData = new byte[size];

View File

@@ -33,9 +33,6 @@ public class PhotonPipelineResult {
// Latency in milliseconds.
private double latencyMillis;
// Whether targets exist.
private boolean hasTargets;
/** Constructs an empty pipeline result. */
public PhotonPipelineResult() {}
@@ -47,7 +44,6 @@ public class PhotonPipelineResult {
*/
public PhotonPipelineResult(double latencyMillis, List<PhotonTrackedTarget> targets) {
this.latencyMillis = latencyMillis;
this.hasTargets = targets.size() != 0;
this.targets.addAll(targets);
}
@@ -67,7 +63,7 @@ public class PhotonPipelineResult {
* @return The best target of the pipeline result.
*/
public PhotonTrackedTarget getBestTarget() {
if (!hasTargets && !HAS_WARNED) {
if (!hasTargets() && !HAS_WARNED) {
String errStr =
"This PhotonPipelineResult object has no targets associated with it! Please check hasTargets() "
+ "before calling this method. For more information, please review the PhotonLib "
@@ -76,7 +72,7 @@ public class PhotonPipelineResult {
new Exception().printStackTrace();
HAS_WARNED = true;
}
return hasTargets ? targets.get(0) : null;
return hasTargets() ? targets.get(0) : null;
}
/**
@@ -94,7 +90,7 @@ public class PhotonPipelineResult {
* @return Whether the pipeline has targets.
*/
public boolean hasTargets() {
return hasTargets;
return targets.size() > 0;
}
/**
@@ -112,14 +108,13 @@ public class PhotonPipelineResult {
if (o == null || getClass() != o.getClass()) return false;
PhotonPipelineResult that = (PhotonPipelineResult) o;
boolean latencyMatch = Double.compare(that.latencyMillis, latencyMillis) == 0;
boolean hasTargetsMatch = that.hasTargets == hasTargets;
boolean targetsMatch = that.targets.equals(targets);
return latencyMatch && hasTargetsMatch && targetsMatch;
return latencyMatch && targetsMatch;
}
@Override
public int hashCode() {
return Objects.hash(latencyMillis, hasTargets, targets);
return Objects.hash(latencyMillis, targets);
}
/**
@@ -131,7 +126,6 @@ public class PhotonPipelineResult {
public Packet createFromPacket(Packet packet) {
// Decode latency, existence of targets, and number of targets.
latencyMillis = packet.decodeDouble();
hasTargets = packet.decodeBoolean();
byte targetCount = packet.decodeByte();
targets.clear();
@@ -155,7 +149,6 @@ public class PhotonPipelineResult {
public Packet populatePacket(Packet packet) {
// Encode latency, existence of targets, and number of targets.
packet.encode(latencyMillis);
packet.encode(hasTargets);
packet.encode((byte) targets.size());
// Encode the information of each target.