From 92ee5bc5237e39e0a3e66a31969a020109c1cc39 Mon Sep 17 00:00:00 2001 From: Sam Carlberg Date: Sat, 30 Nov 2024 09:50:34 -0500 Subject: [PATCH 1/8] [epilogue] Add usage reporting (#7461) --- .../epilogue/processor/EpilogueGenerator.java | 16 ++++++ .../processor/EpilogueGeneratorTest.java | 50 +++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/epilogue-processor/src/main/java/edu/wpi/first/epilogue/processor/EpilogueGenerator.java b/epilogue-processor/src/main/java/edu/wpi/first/epilogue/processor/EpilogueGenerator.java index aa360acfe7..24520f5647 100644 --- a/epilogue-processor/src/main/java/edu/wpi/first/epilogue/processor/EpilogueGenerator.java +++ b/epilogue-processor/src/main/java/edu/wpi/first/epilogue/processor/EpilogueGenerator.java @@ -55,6 +55,10 @@ public class EpilogueGenerator { out.println("import static edu.wpi.first.units.Units.Seconds;"); out.println(); + out.println("import edu.wpi.first.hal.FRCNetComm;"); + out.println("import edu.wpi.first.hal.HAL;"); + out.println(); + loggerClassNames.stream() .sorted() .forEach( @@ -80,6 +84,18 @@ public class EpilogueGenerator { out.println(); out.println("public final class Epilogue {"); + + // Usage reporting + out.println( + """ + static { + HAL.report( + FRCNetComm.tResourceType.kResourceType_LoggingFramework, + FRCNetComm.tInstances.kLoggingFramework_Epilogue + ); + } + """); + out.println( " private static final EpilogueConfiguration config = new EpilogueConfiguration();"); out.println(); diff --git a/epilogue-processor/src/test/java/edu/wpi/first/epilogue/processor/EpilogueGeneratorTest.java b/epilogue-processor/src/test/java/edu/wpi/first/epilogue/processor/EpilogueGeneratorTest.java index 01b12a90aa..1e9806d3a2 100644 --- a/epilogue-processor/src/test/java/edu/wpi/first/epilogue/processor/EpilogueGeneratorTest.java +++ b/epilogue-processor/src/test/java/edu/wpi/first/epilogue/processor/EpilogueGeneratorTest.java @@ -33,9 +33,19 @@ class EpilogueGeneratorTest { import static edu.wpi.first.units.Units.Seconds; + import edu.wpi.first.hal.FRCNetComm; + import edu.wpi.first.hal.HAL; + import edu.wpi.first.epilogue.ExampleLogger; public final class Epilogue { + static { + HAL.report( + FRCNetComm.tResourceType.kResourceType_LoggingFramework, + FRCNetComm.tInstances.kLoggingFramework_Epilogue + ); + } + private static final EpilogueConfiguration config = new EpilogueConfiguration(); public static final ExampleLogger exampleLogger = new ExampleLogger(); @@ -82,9 +92,19 @@ class EpilogueGeneratorTest { import static edu.wpi.first.units.Units.Seconds; + import edu.wpi.first.hal.FRCNetComm; + import edu.wpi.first.hal.HAL; + import edu.wpi.first.epilogue.ExampleLogger; public final class Epilogue { + static { + HAL.report( + FRCNetComm.tResourceType.kResourceType_LoggingFramework, + FRCNetComm.tInstances.kLoggingFramework_Epilogue + ); + } + private static final EpilogueConfiguration config = new EpilogueConfiguration(); public static final ExampleLogger exampleLogger = new ExampleLogger(); @@ -126,9 +146,19 @@ class EpilogueGeneratorTest { import static edu.wpi.first.units.Units.Seconds; + import edu.wpi.first.hal.FRCNetComm; + import edu.wpi.first.hal.HAL; + import edu.wpi.first.epilogue.ExampleLogger; public final class Epilogue { + static { + HAL.report( + FRCNetComm.tResourceType.kResourceType_LoggingFramework, + FRCNetComm.tInstances.kLoggingFramework_Epilogue + ); + } + private static final EpilogueConfiguration config = new EpilogueConfiguration(); public static final ExampleLogger exampleLogger = new ExampleLogger(); @@ -204,10 +234,20 @@ class EpilogueGeneratorTest { import static edu.wpi.first.units.Units.Seconds; + import edu.wpi.first.hal.FRCNetComm; + import edu.wpi.first.hal.HAL; + import edu.wpi.first.epilogue.AlphaBotLogger; import edu.wpi.first.epilogue.BetaBotLogger; public final class Epilogue { + static { + HAL.report( + FRCNetComm.tResourceType.kResourceType_LoggingFramework, + FRCNetComm.tInstances.kLoggingFramework_Epilogue + ); + } + private static final EpilogueConfiguration config = new EpilogueConfiguration(); public static final AlphaBotLogger alphaBotLogger = new AlphaBotLogger(); @@ -331,10 +371,20 @@ class EpilogueGeneratorTest { import static edu.wpi.first.units.Units.Seconds; + import edu.wpi.first.hal.FRCNetComm; + import edu.wpi.first.hal.HAL; + import edu.wpi.first.epilogue.ExampleLogger; import edu.wpi.first.epilogue.CustomLogger; public final class Epilogue { + static { + HAL.report( + FRCNetComm.tResourceType.kResourceType_LoggingFramework, + FRCNetComm.tInstances.kLoggingFramework_Epilogue + ); + } + private static final EpilogueConfiguration config = new EpilogueConfiguration(); public static final ExampleLogger exampleLogger = new ExampleLogger(); From 9d40b993f833401bc2a554836a73507ddb342c85 Mon Sep 17 00:00:00 2001 From: Ryan Blue Date: Sat, 30 Nov 2024 10:44:19 -0500 Subject: [PATCH 2/8] [wpiutil] Fix HasNestedStruct docs (NFC) (#7459) --- wpiutil/src/main/native/include/wpi/struct/Struct.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wpiutil/src/main/native/include/wpi/struct/Struct.h b/wpiutil/src/main/native/include/wpi/struct/Struct.h index 3070ac5746..d0d0dddc86 100644 --- a/wpiutil/src/main/native/include/wpi/struct/Struct.h +++ b/wpiutil/src/main/native/include/wpi/struct/Struct.h @@ -113,7 +113,7 @@ concept MutableStructSerializable = * In addition to meeting StructSerializable, implementations must define a * wpi::Struct static member * `void ForEachNested(std::invocable on each nested struct + * fn)` (or equivalent) and call ForEachStructSchema on each nested struct * type. */ template From 715cbb6b76be50f1acd2c00488e43ef3601a6739 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sat, 30 Nov 2024 09:49:09 -0800 Subject: [PATCH 3/8] [sim] GUI: Update FMS widget when real DS is connected (#7456) --- simulation/halsim_gui/src/main/native/cpp/DriverStationGui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/simulation/halsim_gui/src/main/native/cpp/DriverStationGui.cpp b/simulation/halsim_gui/src/main/native/cpp/DriverStationGui.cpp index 6f3b863bfa..3ed8fa7112 100644 --- a/simulation/halsim_gui/src/main/native/cpp/DriverStationGui.cpp +++ b/simulation/halsim_gui/src/main/native/cpp/DriverStationGui.cpp @@ -1053,6 +1053,7 @@ static void DriverStationExecute() { } prevDisableDS = disableDS; if (disableDS) { + gFMSModel->Update(); return; } From c387a7ecae5c95290bbf10b8d61d096bac796c35 Mon Sep 17 00:00:00 2001 From: Thad House Date: Sat, 30 Nov 2024 18:07:53 +0000 Subject: [PATCH 4/8] [build] Update to 2025 compilers (#7462) --- .github/workflows/cmake.yml | 2 +- .github/workflows/gradle.yml | 2 +- .github/workflows/lint-format.yml | 2 +- .github/workflows/sanitizers.yml | 2 +- .github/workflows/sentinel-build.yml | 2 +- .github/workflows/tools.yml | 2 +- buildSrc/build.gradle | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index e02060a15d..921a10bbdb 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -18,7 +18,7 @@ jobs: include: - os: ubuntu-22.04 name: Linux - container: wpilib/roborio-cross-ubuntu:2024-22.04 + container: wpilib/roborio-cross-ubuntu:2025-22.04 flags: "--preset with-java-and-sccache -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON" - os: macOS-14 name: macOS diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 727884d032..e6935cfba9 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -12,7 +12,7 @@ jobs: fail-fast: false matrix: include: - - container: wpilib/roborio-cross-ubuntu:2024-22.04 + - container: wpilib/roborio-cross-ubuntu:2025-22.04 artifact-name: Athena build-options: "-Ponlylinuxathena" - container: wpilib/raspbian-cross-ubuntu:bullseye-22.04 diff --git a/.github/workflows/lint-format.yml b/.github/workflows/lint-format.yml index 0a2dbc1a2b..008fe76560 100644 --- a/.github/workflows/lint-format.yml +++ b/.github/workflows/lint-format.yml @@ -51,7 +51,7 @@ jobs: tidy: name: "clang-tidy" runs-on: ubuntu-22.04 - container: wpilib/roborio-cross-ubuntu:2024-22.04 + container: wpilib/roborio-cross-ubuntu:2025-22.04 steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/sanitizers.yml b/.github/workflows/sanitizers.yml index c01e4c2042..c32a3a05b8 100644 --- a/.github/workflows/sanitizers.yml +++ b/.github/workflows/sanitizers.yml @@ -30,7 +30,7 @@ jobs: ctest-flags: "" name: "${{ matrix.name }}" runs-on: ubuntu-22.04 - container: wpilib/roborio-cross-ubuntu:2024-22.04 + container: wpilib/roborio-cross-ubuntu:2025-22.04 steps: - name: Install Dependencies run: sudo apt-get update && sudo apt-get install -y libopencv-dev libopencv4.5-java clang-14 libprotobuf-dev protobuf-compiler ninja-build diff --git a/.github/workflows/sentinel-build.yml b/.github/workflows/sentinel-build.yml index 38c66c410b..9a8eb85184 100644 --- a/.github/workflows/sentinel-build.yml +++ b/.github/workflows/sentinel-build.yml @@ -16,7 +16,7 @@ jobs: fail-fast: false matrix: include: - - container: wpilib/roborio-cross-ubuntu:2024-22.04 + - container: wpilib/roborio-cross-ubuntu:2025-22.04 artifact-name: Athena build-options: "-Ponlylinuxathena" - container: wpilib/raspbian-cross-ubuntu:bullseye-22.04 diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 3e71c5e830..899ac4239b 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -32,7 +32,7 @@ jobs: - name: Build WPILib with Gradle uses: addnab/docker-run-action@v3 with: - image: wpilib/roborio-cross-ubuntu:2024-22.04 + image: wpilib/roborio-cross-ubuntu:2025-22.04 options: -v ${{ github.workspace }}:/work -w /work -e GITHUB_REF -e CI -e DISPLAY run: df . && rm -f semicolon_delimited_script && ./gradlew :wpilibc:publish :wpilibj:publish :wpilibNewCommands:publish :hal:publish :cameraserver:publish :ntcore:publish :cscore:publish :wpimath:publish :wpinet:publish :wpiutil:publish :apriltag:publish :wpiunits:publish :simulation:halsim_gui:publish :simulation:halsim_ds_socket:publish :fieldImages:publish :epilogue-processor:publish :epilogue-runtime:publish :thirdparty:googletest:publish -x test -x Javadoc -x doxygen --build-cache && cp -r /root/releases/maven/development /work - uses: actions/upload-artifact@v4 diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 99d4892632..5c555c1c53 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -9,5 +9,5 @@ repositories { } } dependencies { - implementation "edu.wpi.first:native-utils:2025.3.0" + implementation "edu.wpi.first:native-utils:2025.7.1" } From 9807d60566826373378294d1538cba74f10244c2 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sat, 30 Nov 2024 20:32:21 -0800 Subject: [PATCH 5/8] [hal,wpilib] Change Power Distribution usage reporting to Instances (#7465) LabVIEW doesn't appear to report PDP. This should reduce the number of Unknowns in the parsed UsageReporting. --- hal/src/generate/Instances.txt | 3 +++ .../main/java/edu/wpi/first/hal/FRCNetComm.java | 6 ++++++ .../main/native/include/hal/FRCUsageReporting.h | 3 +++ .../main/native/include/hal/UsageReporting.h | 3 +++ .../src/main/native/cpp/PowerDistribution.cpp | 17 +++++++++++++++-- .../wpi/first/wpilibj/PowerDistribution.java | 14 ++++++++++++-- 6 files changed, 42 insertions(+), 4 deletions(-) diff --git a/hal/src/generate/Instances.txt b/hal/src/generate/Instances.txt index 65912c6067..20d2738d9a 100644 --- a/hal/src/generate/Instances.txt +++ b/hal/src/generate/Instances.txt @@ -75,3 +75,6 @@ kLoggingFramework_Epilogue = 2 kLoggingFramework_Monologue = 3 kLoggingFramework_AdvantageKit = 4 kLoggingFramework_DogLog = 5 +kPDP_CTRE = 1 +kPDP_REV = 2 +kPDP_Unknown = 3 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 1cce8dc438..31585a5c77 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 @@ -421,6 +421,12 @@ public final class FRCNetComm { public static final int kLoggingFramework_AdvantageKit = 4; /** kLoggingFramework_DogLog = 5. */ public static final int kLoggingFramework_DogLog = 5; + /** kPDP_CTRE = 1. */ + public static final int kPDP_CTRE = 1; + /** kPDP_REV = 2. */ + public static final int kPDP_REV = 2; + /** kPDP_Unknown = 3. */ + public static final int kPDP_Unknown = 3; } /** Utility class. */ diff --git a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h index ea8d2260ac..31107247f2 100644 --- a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h +++ b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h @@ -249,6 +249,9 @@ namespace HALUsageReporting { kLoggingFramework_Monologue = 3, kLoggingFramework_AdvantageKit = 4, kLoggingFramework_DogLog = 5, + kPDP_CTRE = 1, + kPDP_REV = 2, + kPDP_Unknown = 3, }; } #endif diff --git a/hal/src/generated/main/native/include/hal/UsageReporting.h b/hal/src/generated/main/native/include/hal/UsageReporting.h index eb3f7eb523..3c6286a31c 100644 --- a/hal/src/generated/main/native/include/hal/UsageReporting.h +++ b/hal/src/generated/main/native/include/hal/UsageReporting.h @@ -222,6 +222,9 @@ typedef enum kLoggingFramework_Monologue = 3, kLoggingFramework_AdvantageKit = 4, kLoggingFramework_DogLog = 5, + kPDP_CTRE = 1, + kPDP_REV = 2, + kPDP_Unknown = 3, } tInstances; /** diff --git a/wpilibc/src/main/native/cpp/PowerDistribution.cpp b/wpilibc/src/main/native/cpp/PowerDistribution.cpp index 14a4cec49d..af0d308e65 100644 --- a/wpilibc/src/main/native/cpp/PowerDistribution.cpp +++ b/wpilibc/src/main/native/cpp/PowerDistribution.cpp @@ -39,7 +39,14 @@ PowerDistribution::PowerDistribution() { m_module = HAL_GetPowerDistributionModuleNumber(m_handle, &status); FRC_ReportError(status, "Module {}", m_module); - HAL_Report(HALUsageReporting::kResourceType_PDP, m_module + 1); + if (HAL_GetPowerDistributionType(m_handle, &status) == + HAL_PowerDistributionType::HAL_PowerDistributionType_kCTRE) { + HAL_Report(HALUsageReporting::kResourceType_PDP, + HALUsageReporting::kPDP_CTRE); + } else { + HAL_Report(HALUsageReporting::kResourceType_PDP, + HALUsageReporting::kPDP_REV); + } wpi::SendableRegistry::AddLW(this, "PowerDistribution", m_module); } @@ -54,7 +61,13 @@ PowerDistribution::PowerDistribution(int module, ModuleType moduleType) { m_module = HAL_GetPowerDistributionModuleNumber(m_handle, &status); FRC_ReportError(status, "Module {}", module); - HAL_Report(HALUsageReporting::kResourceType_PDP, m_module + 1); + if (moduleType == ModuleType::kCTRE) { + HAL_Report(HALUsageReporting::kResourceType_PDP, + HALUsageReporting::kPDP_CTRE); + } else { + HAL_Report(HALUsageReporting::kResourceType_PDP, + HALUsageReporting::kPDP_REV); + } wpi::SendableRegistry::AddLW(this, "PowerDistribution", m_module); } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PowerDistribution.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PowerDistribution.java index 2325fe4342..15f8e0ec24 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PowerDistribution.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PowerDistribution.java @@ -4,6 +4,7 @@ package edu.wpi.first.wpilibj; +import edu.wpi.first.hal.FRCNetComm.tInstances; import edu.wpi.first.hal.FRCNetComm.tResourceType; import edu.wpi.first.hal.HAL; import edu.wpi.first.hal.PowerDistributionFaults; @@ -51,7 +52,11 @@ public class PowerDistribution implements Sendable, AutoCloseable { m_handle = PowerDistributionJNI.initialize(module, moduleType.value); m_module = PowerDistributionJNI.getModuleNumber(m_handle); - HAL.report(tResourceType.kResourceType_PDP, m_module + 1); + if (moduleType == ModuleType.kCTRE) { + HAL.report(tResourceType.kResourceType_PDP, tInstances.kPDP_CTRE); + } else { + HAL.report(tResourceType.kResourceType_PDP, tInstances.kPDP_REV); + } SendableRegistry.addLW(this, "PowerDistribution", m_module); } @@ -65,7 +70,12 @@ public class PowerDistribution implements Sendable, AutoCloseable { m_handle = PowerDistributionJNI.initialize(kDefaultModule, PowerDistributionJNI.AUTOMATIC_TYPE); m_module = PowerDistributionJNI.getModuleNumber(m_handle); - HAL.report(tResourceType.kResourceType_PDP, m_module + 1); + if (PowerDistributionJNI.getType(m_handle) == PowerDistributionJNI.CTRE_TYPE) { + HAL.report(tResourceType.kResourceType_PDP, tInstances.kPDP_CTRE); + } else { + HAL.report(tResourceType.kResourceType_PDP, tInstances.kPDP_REV); + } + SendableRegistry.addLW(this, "PowerDistribution", m_module); } From 892e062316d6d4d5b171e60840277bc3bc7ed6e0 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sat, 30 Nov 2024 20:33:09 -0800 Subject: [PATCH 6/8] [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 { From 1eecaaf337f1fc7de41df742021a31af92f849ed Mon Sep 17 00:00:00 2001 From: Thad House Date: Sun, 1 Dec 2024 06:21:41 +0000 Subject: [PATCH 7/8] [build] Update OpenCV to 2025 (#7468) --- shared/config.gradle | 4 ++-- shared/opencv.gradle | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/shared/config.gradle b/shared/config.gradle index 4612e5a3ca..6e68b00f93 100644 --- a/shared/config.gradle +++ b/shared/config.gradle @@ -13,9 +13,9 @@ nativeUtils.withCrossLinuxArm64() nativeUtils { wpi { configureDependencies { - opencvYear = "frc2024" + opencvYear = "frc2025" niLibVersion = "2025.0.0" - opencvVersion = "4.8.0-4" + opencvVersion = "4.8.0-1" } } } diff --git a/shared/opencv.gradle b/shared/opencv.gradle index dec6793c03..432a0658f2 100644 --- a/shared/opencv.gradle +++ b/shared/opencv.gradle @@ -1,4 +1,4 @@ -def opencvVersion = '4.8.0-4' +def opencvVersion = '4.8.0-1' if (project.hasProperty('useCpp') && project.useCpp) { model { @@ -22,12 +22,12 @@ if (project.hasProperty('useCpp') && project.useCpp) { if (project.hasProperty('useJava') && project.useJava) { dependencies { - implementation "edu.wpi.first.thirdparty.frc2024.opencv:opencv-java:${opencvVersion}" + implementation "edu.wpi.first.thirdparty.frc2025.opencv:opencv-java:${opencvVersion}" if (!project.hasProperty('skipDev') || !project.skipDev) { - devImplementation "edu.wpi.first.thirdparty.frc2024.opencv:opencv-java:${opencvVersion}" + devImplementation "edu.wpi.first.thirdparty.frc2025.opencv:opencv-java:${opencvVersion}" } if (project.hasProperty('useDocumentation') && project.useDocumentation) { - javaSource "edu.wpi.first.thirdparty.frc2024.opencv:opencv-java:${opencvVersion}:sources" + javaSource "edu.wpi.first.thirdparty.frc2025.opencv:opencv-java:${opencvVersion}:sources" } } } From 92f8c89267e65604e20673531139f8e6d82d6e7a Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sat, 30 Nov 2024 22:25:04 -0800 Subject: [PATCH 8/8] [hal] Add usage reporting for 2025 legal motor controllers (#7467) --- hal/src/generate/ResourceType.txt | 2 ++ hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java | 4 ++++ hal/src/generated/main/native/include/hal/FRCUsageReporting.h | 2 ++ hal/src/generated/main/native/include/hal/UsageReporting.h | 2 ++ 4 files changed, 10 insertions(+) diff --git a/hal/src/generate/ResourceType.txt b/hal/src/generate/ResourceType.txt index 9377926be4..c388b11b0f 100644 --- a/hal/src/generate/ResourceType.txt +++ b/hal/src/generate/ResourceType.txt @@ -120,3 +120,5 @@ kResourceType_LoggingFramework = 118 kResourceType_ChoreoTrajectory = 119 kResourceType_ChoreoTrigger = 120 kResourceType_PathWeaverTrajectory = 121 +kResourceType_Koors40 = 122 +kResourceType_ThriftyNova = 123 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 f10e1db739..51dd474856 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 @@ -263,6 +263,10 @@ public final class FRCNetComm { public static final int kResourceType_ChoreoTrigger = 120; /** kResourceType_PathWeaverTrajectory = 121. */ public static final int kResourceType_PathWeaverTrajectory = 121; + /** kResourceType_Koors40 = 122. */ + public static final int kResourceType_Koors40 = 122; + /** kResourceType_ThriftyNova = 123. */ + public static final int kResourceType_ThriftyNova = 123; } /** diff --git a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h index 432adfd9e8..11fb9a334f 100644 --- a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h +++ b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h @@ -173,6 +173,8 @@ namespace HALUsageReporting { kResourceType_ChoreoTrajectory = 119, kResourceType_ChoreoTrigger = 120, kResourceType_PathWeaverTrajectory = 121, + kResourceType_Koors40 = 122, + kResourceType_ThriftyNova = 123, }; 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 9775735bc6..01a32d389f 100644 --- a/hal/src/generated/main/native/include/hal/UsageReporting.h +++ b/hal/src/generated/main/native/include/hal/UsageReporting.h @@ -142,6 +142,8 @@ typedef enum kResourceType_ChoreoTrajectory = 119, kResourceType_ChoreoTrigger = 120, kResourceType_PathWeaverTrajectory = 121, + kResourceType_Koors40 = 122, + kResourceType_ThriftyNova = 123, // kResourceType_MaximumID = 255, } tResourceType;