From 0a3ccf93c6a786ada483877a995cffab6b939c30 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Wed, 20 Nov 2024 17:00:54 -0800 Subject: [PATCH] [wpimath] Add BangBangController Usage Reporting (#7411) --- hal/src/generate/ResourceType.txt | 1 + .../main/java/edu/wpi/first/hal/FRCNetComm.java | 2 ++ .../main/native/include/hal/FRCUsageReporting.h | 1 + .../main/native/include/hal/UsageReporting.h | 1 + wpilibc/src/main/native/cppcs/RobotBase.cpp | 3 +++ .../main/java/edu/wpi/first/wpilibj/RobotBase.java | 2 ++ .../main/java/edu/wpi/first/math/MathUsageId.java | 3 +++ .../first/math/controller/BangBangController.java | 2 +- .../include/frc/controller/BangBangController.h | 13 ++++++++++++- .../src/main/native/include/wpimath/MathShared.h | 1 + 10 files changed, 27 insertions(+), 2 deletions(-) diff --git a/hal/src/generate/ResourceType.txt b/hal/src/generate/ResourceType.txt index 13c42c0f71c..9b6b8e598b6 100644 --- a/hal/src/generate/ResourceType.txt +++ b/hal/src/generate/ResourceType.txt @@ -114,3 +114,4 @@ kResourceType_Redux_future4 = 112 kResourceType_Redux_future5 = 113 kResourceType_RevSparkFlexCAN = 114 kResourceType_RevSparkFlexPWM = 115 +kResourceType_BangBangController = 116 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 13abad9b9be..293b5dda4fa 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 @@ -251,6 +251,8 @@ private tResourceType() { public static final int kResourceType_RevSparkFlexCAN = 114; /** kResourceType_RevSparkFlexPWM = 115. */ public static final int kResourceType_RevSparkFlexPWM = 115; + /** kResourceType_BangBangController = 116. */ + public static final int kResourceType_BangBangController = 116; } /** diff --git a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h index 36bc3d23863..b3127d54149 100644 --- a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h +++ b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h @@ -167,6 +167,7 @@ namespace HALUsageReporting { kResourceType_Redux_future5 = 113, kResourceType_RevSparkFlexCAN = 114, kResourceType_RevSparkFlexPWM = 115, + kResourceType_BangBangController = 116, }; 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 8192b81efc7..ef870a3fc24 100644 --- a/hal/src/generated/main/native/include/hal/UsageReporting.h +++ b/hal/src/generated/main/native/include/hal/UsageReporting.h @@ -136,6 +136,7 @@ typedef enum kResourceType_Redux_future5 = 113, kResourceType_RevSparkFlexCAN = 114, kResourceType_RevSparkFlexPWM = 115, + kResourceType_BangBangController = 116, // kResourceType_MaximumID = 255, } tResourceType; diff --git a/wpilibc/src/main/native/cppcs/RobotBase.cpp b/wpilibc/src/main/native/cppcs/RobotBase.cpp index 46f22dfdb1d..16e4c586b17 100644 --- a/wpilibc/src/main/native/cppcs/RobotBase.cpp +++ b/wpilibc/src/main/native/cppcs/RobotBase.cpp @@ -139,6 +139,9 @@ class WPILibMathShared : public wpi::math::MathShared { HAL_Report(HALUsageReporting::kResourceType_ProfiledPIDController, count); break; + case wpi::math::MathUsageId::kController_BangBangController: + HAL_Report(HALUsageReporting::kResourceType_BangBangController, 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 4bc9e709d18..4dbc662d048 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java @@ -115,6 +115,8 @@ public void reportUsage(MathUsageId id, int count) { tResourceType.kResourceType_PIDController2, count); case kController_ProfiledPIDController -> HAL.report( tResourceType.kResourceType_ProfiledPIDController, count); + case kController_BangBangController -> HAL.report( + tResourceType.kResourceType_BangBangController, 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 c3449cfc61c..602f783ce09 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/MathUsageId.java +++ b/wpimath/src/main/java/edu/wpi/first/math/MathUsageId.java @@ -35,4 +35,7 @@ public enum MathUsageId { /** ProfiledPIDController. */ kController_ProfiledPIDController, + + /** BangBangController. */ + kController_BangBangController, } diff --git a/wpimath/src/main/java/edu/wpi/first/math/controller/BangBangController.java b/wpimath/src/main/java/edu/wpi/first/math/controller/BangBangController.java index cf852c30d0c..b4d56996c06 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/controller/BangBangController.java +++ b/wpimath/src/main/java/edu/wpi/first/math/controller/BangBangController.java @@ -45,7 +45,7 @@ public BangBangController(double tolerance) { SendableRegistry.addLW(this, "BangBangController", instances); - MathSharedStore.reportUsage(MathUsageId.kController_PIDController2, instances); + MathSharedStore.reportUsage(MathUsageId.kController_BangBangController, instances); } /** diff --git a/wpimath/src/main/native/include/frc/controller/BangBangController.h b/wpimath/src/main/native/include/frc/controller/BangBangController.h index 3698d830a9e..897e27318f7 100644 --- a/wpimath/src/main/native/include/frc/controller/BangBangController.h +++ b/wpimath/src/main/native/include/frc/controller/BangBangController.h @@ -11,6 +11,8 @@ #include #include +#include "wpimath/MathShared.h" + namespace frc { /** @@ -40,7 +42,13 @@ class WPILIB_DLLEXPORT BangBangController */ constexpr explicit BangBangController( double tolerance = std::numeric_limits::infinity()) - : m_tolerance(tolerance) {} + : m_tolerance(tolerance) { + if (!std::is_constant_evaluated()) { + ++instances; + wpi::math::MathSharedStore::ReportUsage( + wpi::math::MathUsageId::kController_BangBangController, instances); + } + } /** * Sets the setpoint for the bang-bang controller. @@ -127,6 +135,9 @@ class WPILIB_DLLEXPORT BangBangController double m_setpoint = 0; double m_measurement = 0; + + // Usage reporting instances + inline static int instances = 0; }; } // namespace frc diff --git a/wpimath/src/main/native/include/wpimath/MathShared.h b/wpimath/src/main/native/include/wpimath/MathShared.h index 8e0698d44aa..f3faef48778 100644 --- a/wpimath/src/main/native/include/wpimath/MathShared.h +++ b/wpimath/src/main/native/include/wpimath/MathShared.h @@ -24,6 +24,7 @@ enum class MathUsageId { kOdometry_MecanumDrive, kController_PIDController2, kController_ProfiledPIDController, + kController_BangBangController, }; class WPILIB_DLLEXPORT MathShared {