From 4595f84719759d71491e11e8df55d60ce2a6154c Mon Sep 17 00:00:00 2001 From: Starlight220 <53231611+Starlight220@users.noreply.github.com> Date: Fri, 5 Jan 2024 21:57:14 +0200 Subject: [PATCH] [wpilib] Report LiveWindow-enabled-in-test (#6158) --- hal/src/generate/Instances.txt | 1 + .../generated/main/java/edu/wpi/first/hal/FRCNetComm.java | 2 ++ .../generated/main/native/include/hal/FRCUsageReporting.h | 1 + wpilibc/src/main/native/cpp/IterativeRobotBase.cpp | 7 +++++++ .../java/edu/wpi/first/wpilibj/IterativeRobotBase.java | 8 ++++++++ 5 files changed, 19 insertions(+) diff --git a/hal/src/generate/Instances.txt b/hal/src/generate/Instances.txt index d136bc0f52..fc27682eea 100644 --- a/hal/src/generate/Instances.txt +++ b/hal/src/generate/Instances.txt @@ -45,6 +45,7 @@ kADXL345_I2C = 2 kCommand_Scheduler = 1 kCommand2_Scheduler = 2 kSmartDashboard_Instance = 1 +kSmartDashboard_LiveWindow = 2 kKinematics_DifferentialDrive = 1 kKinematics_MecanumDrive = 2 kKinematics_SwerveDrive = 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 0a0daa0d06..0814a3d0fc 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 @@ -354,6 +354,8 @@ public final class FRCNetComm { public static final int kCommand2_Scheduler = 2; /** kSmartDashboard_Instance = 1. */ public static final int kSmartDashboard_Instance = 1; + /** kSmartDashboard_LiveWindow = 2. */ + public static final int kSmartDashboard_LiveWindow = 2; /** kKinematics_DifferentialDrive = 1. */ public static final int kKinematics_DifferentialDrive = 1; /** kKinematics_MecanumDrive = 2. */ diff --git a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h index b25a37e21d..024ff13eb4 100644 --- a/hal/src/generated/main/native/include/hal/FRCUsageReporting.h +++ b/hal/src/generated/main/native/include/hal/FRCUsageReporting.h @@ -216,6 +216,7 @@ namespace HALUsageReporting { kCommand_Scheduler = 1, kCommand2_Scheduler = 2, kSmartDashboard_Instance = 1, + kSmartDashboard_LiveWindow = 2, kKinematics_DifferentialDrive = 1, kKinematics_MecanumDrive = 2, kKinematics_SwerveDrive = 3, diff --git a/wpilibc/src/main/native/cpp/IterativeRobotBase.cpp b/wpilibc/src/main/native/cpp/IterativeRobotBase.cpp index ee941b61cc..3669bce78e 100644 --- a/wpilibc/src/main/native/cpp/IterativeRobotBase.cpp +++ b/wpilibc/src/main/native/cpp/IterativeRobotBase.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include "frc/DSControlWord.h" @@ -97,10 +98,16 @@ void IterativeRobotBase::SetNetworkTablesFlushEnabled(bool enabled) { } void IterativeRobotBase::EnableLiveWindowInTest(bool testLW) { + static bool hasReported; if (IsTestEnabled()) { throw FRC_MakeError(err::IncompatibleMode, "Can't configure test mode while in test mode!"); } + if (!hasReported && testLW) { + HAL_Report(HALUsageReporting::kResourceType_SmartDashboard, + HALUsageReporting::kSmartDashboard_LiveWindow); + hasReported = true; + } m_lwEnabledInTest = testLW; } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/IterativeRobotBase.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/IterativeRobotBase.java index f042545b61..12433930e5 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/IterativeRobotBase.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/IterativeRobotBase.java @@ -5,6 +5,8 @@ package edu.wpi.first.wpilibj; import edu.wpi.first.hal.DriverStationJNI; +import edu.wpi.first.hal.FRCNetComm.tInstances; +import edu.wpi.first.hal.FRCNetComm.tResourceType; import edu.wpi.first.hal.HAL; import edu.wpi.first.networktables.NetworkTableInstance; import edu.wpi.first.wpilibj.livewindow.LiveWindow; @@ -257,6 +259,8 @@ public abstract class IterativeRobotBase extends RobotBase { m_ntFlushEnabled = enabled; } + private boolean m_reportedLw; + /** * Sets whether LiveWindow operation is enabled during test mode. Calling * @@ -267,6 +271,10 @@ public abstract class IterativeRobotBase extends RobotBase { if (isTestEnabled()) { throw new ConcurrentModificationException("Can't configure test mode while in test mode!"); } + if (!m_reportedLw && testLW) { + HAL.report(tResourceType.kResourceType_SmartDashboard, tInstances.kSmartDashboard_LiveWindow); + m_reportedLw = true; + } m_lwEnabledInTest = testLW; }