From 892e062316d6d4d5b171e60840277bc3bc7ed6e0 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sat, 30 Nov 2024 20:33:09 -0800 Subject: [PATCH] [hal,wpilib,wpimath] Add Usage Reporting for Choreo and PathWeaver (#7464) --- hal/src/generate/ResourceType.txt | 3 +++ .../generated/main/java/edu/wpi/first/hal/FRCNetComm.java | 6 ++++++ .../generated/main/native/include/hal/FRCUsageReporting.h | 3 +++ hal/src/generated/main/native/include/hal/UsageReporting.h | 3 +++ wpilibc/src/main/native/cppcs/RobotBase.cpp | 4 ++++ wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java | 2 ++ wpimath/src/main/java/edu/wpi/first/math/MathUsageId.java | 3 +++ .../java/edu/wpi/first/math/trajectory/TrajectoryUtil.java | 6 ++++++ wpimath/src/main/native/cpp/trajectory/TrajectoryUtil.cpp | 4 ++++ .../src/main/native/include/frc/trajectory/TrajectoryUtil.h | 4 ++++ wpimath/src/main/native/include/wpimath/MathShared.h | 1 + 11 files changed, 39 insertions(+) diff --git a/hal/src/generate/ResourceType.txt b/hal/src/generate/ResourceType.txt index ee56a749bd..9377926be4 100644 --- a/hal/src/generate/ResourceType.txt +++ b/hal/src/generate/ResourceType.txt @@ -117,3 +117,6 @@ kResourceType_RevSparkFlexPWM = 115 kResourceType_BangBangController = 116 kResourceType_DataLogManager = 117 kResourceType_LoggingFramework = 118 +kResourceType_ChoreoTrajectory = 119 +kResourceType_ChoreoTrigger = 120 +kResourceType_PathWeaverTrajectory = 121 diff --git a/hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java b/hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java index 31585a5c77..f10e1db739 100644 --- a/hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java +++ b/hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java @@ -257,6 +257,12 @@ public final class FRCNetComm { public static final int kResourceType_DataLogManager = 117; /** kResourceType_LoggingFramework = 118. */ public static final int kResourceType_LoggingFramework = 118; + /** kResourceType_ChoreoTrajectory = 119. */ + public static final int kResourceType_ChoreoTrajectory = 119; + /** kResourceType_ChoreoTrigger = 120. */ + public static final int kResourceType_ChoreoTrigger = 120; + /** kResourceType_PathWeaverTrajectory = 121. */ + public static final int kResourceType_PathWeaverTrajectory = 121; } /** diff --git a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h index 31107247f2..432adfd9e8 100644 --- a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h +++ b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h @@ -170,6 +170,9 @@ namespace HALUsageReporting { kResourceType_BangBangController = 116, kResourceType_DataLogManager = 117, kResourceType_LoggingFramework = 118, + kResourceType_ChoreoTrajectory = 119, + kResourceType_ChoreoTrigger = 120, + kResourceType_PathWeaverTrajectory = 121, }; enum tInstances : int32_t { kLanguage_LabVIEW = 1, diff --git a/hal/src/generated/main/native/include/hal/UsageReporting.h b/hal/src/generated/main/native/include/hal/UsageReporting.h index 3c6286a31c..9775735bc6 100644 --- a/hal/src/generated/main/native/include/hal/UsageReporting.h +++ b/hal/src/generated/main/native/include/hal/UsageReporting.h @@ -139,6 +139,9 @@ typedef enum kResourceType_BangBangController = 116, kResourceType_DataLogManager = 117, kResourceType_LoggingFramework = 118, + kResourceType_ChoreoTrajectory = 119, + kResourceType_ChoreoTrigger = 120, + kResourceType_PathWeaverTrajectory = 121, // kResourceType_MaximumID = 255, } tResourceType; diff --git a/wpilibc/src/main/native/cppcs/RobotBase.cpp b/wpilibc/src/main/native/cppcs/RobotBase.cpp index 16e4c586b1..58f1ec81b5 100644 --- a/wpilibc/src/main/native/cppcs/RobotBase.cpp +++ b/wpilibc/src/main/native/cppcs/RobotBase.cpp @@ -142,6 +142,10 @@ class WPILibMathShared : public wpi::math::MathShared { case wpi::math::MathUsageId::kController_BangBangController: HAL_Report(HALUsageReporting::kResourceType_BangBangController, count); break; + case wpi::math::MathUsageId::kTrajectory_PathWeaver: + HAL_Report(HALUsageReporting::kResourceType_PathWeaverTrajectory, + count); + break; } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java index 4dbc662d04..e595a5899e 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java @@ -117,6 +117,8 @@ public abstract class RobotBase implements AutoCloseable { tResourceType.kResourceType_ProfiledPIDController, count); case kController_BangBangController -> HAL.report( tResourceType.kResourceType_BangBangController, count); + case kTrajectory_PathWeaver -> HAL.report( + tResourceType.kResourceType_PathWeaverTrajectory, count); default -> { // NOP } diff --git a/wpimath/src/main/java/edu/wpi/first/math/MathUsageId.java b/wpimath/src/main/java/edu/wpi/first/math/MathUsageId.java index 602f783ce0..94c0056743 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/MathUsageId.java +++ b/wpimath/src/main/java/edu/wpi/first/math/MathUsageId.java @@ -38,4 +38,7 @@ public enum MathUsageId { /** BangBangController. */ kController_BangBangController, + + /** PathWeaver Trajectory. */ + kTrajectory_PathWeaver, } diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrajectoryUtil.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrajectoryUtil.java index 19832966df..b42574597d 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrajectoryUtil.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrajectoryUtil.java @@ -4,6 +4,8 @@ package edu.wpi.first.math.trajectory; +import edu.wpi.first.math.MathSharedStore; +import edu.wpi.first.math.MathUsageId; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.math.jni.TrajectoryUtilJNI; @@ -68,6 +70,8 @@ public final class TrajectoryUtil { return elements; } + private static int pathWeaverTrajectoryInstances; + /** * Imports a Trajectory from a JSON file exported from PathWeaver. * @@ -76,6 +80,8 @@ public final class TrajectoryUtil { * @throws IOException if reading from the file fails. */ public static Trajectory fromPathweaverJson(Path path) throws IOException { + MathSharedStore.reportUsage( + MathUsageId.kTrajectory_PathWeaver, ++pathWeaverTrajectoryInstances); return createTrajectoryFromElements(TrajectoryUtilJNI.fromPathweaverJson(path.toString())); } diff --git a/wpimath/src/main/native/cpp/trajectory/TrajectoryUtil.cpp b/wpimath/src/main/native/cpp/trajectory/TrajectoryUtil.cpp index 644af1beb3..187f8d6cfe 100644 --- a/wpimath/src/main/native/cpp/trajectory/TrajectoryUtil.cpp +++ b/wpimath/src/main/native/cpp/trajectory/TrajectoryUtil.cpp @@ -36,6 +36,10 @@ Trajectory TrajectoryUtil::FromPathweaverJson(std::string_view path) { wpi::json json = wpi::json::parse(fileBuffer.value()->GetCharBuffer()); + wpi::math::MathSharedStore::ReportUsage( + wpi::math::MathUsageId::kTrajectory_PathWeaver, + ++pathWeaverTrajectoryInstances); + return Trajectory{json.get>()}; } diff --git a/wpimath/src/main/native/include/frc/trajectory/TrajectoryUtil.h b/wpimath/src/main/native/include/frc/trajectory/TrajectoryUtil.h index 48a0a49a9b..49f69eba17 100644 --- a/wpimath/src/main/native/include/frc/trajectory/TrajectoryUtil.h +++ b/wpimath/src/main/native/include/frc/trajectory/TrajectoryUtil.h @@ -53,5 +53,9 @@ class WPILIB_DLLEXPORT TrajectoryUtil { * @return the trajectory represented by the JSON */ static Trajectory DeserializeTrajectory(std::string_view jsonStr); + + private: + // Usage reporting for PathWeaver Trajectory instances + inline static int pathWeaverTrajectoryInstances = 0; }; } // namespace frc diff --git a/wpimath/src/main/native/include/wpimath/MathShared.h b/wpimath/src/main/native/include/wpimath/MathShared.h index f3faef4877..4394b707a7 100644 --- a/wpimath/src/main/native/include/wpimath/MathShared.h +++ b/wpimath/src/main/native/include/wpimath/MathShared.h @@ -25,6 +25,7 @@ enum class MathUsageId { kController_PIDController2, kController_ProfiledPIDController, kController_BangBangController, + kTrajectory_PathWeaver, }; class WPILIB_DLLEXPORT MathShared {