[wpilib] Split DriverStation into smaller classes (#8628)

This commit is contained in:
Thad House
2026-04-18 19:56:45 -07:00
committed by GitHub
parent 58ad633ae2
commit ab2aef2c29
108 changed files with 4406 additions and 3211 deletions

View File

@@ -2,14 +2,13 @@
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
#include "wpi/driverstation/DriverStation.hpp"
#include <string>
#include <tuple>
#include <gtest/gtest.h>
#include "wpi/driverstation/Joystick.hpp"
#include "wpi/driverstation/internal/DriverStationBackend.hpp"
#include "wpi/simulation/DriverStationSim.hpp"
#include "wpi/simulation/SimHooks.hpp"
@@ -26,7 +25,7 @@ TEST_P(IsJoystickConnectedParametersTest, IsJoystickConnected) {
wpi::sim::DriverStationSim::NotifyNewData();
ASSERT_EQ(std::get<3>(GetParam()),
wpi::DriverStation::IsJoystickConnected(1));
wpi::internal::DriverStationBackend::IsJoystickConnected(1));
}
INSTANTIATE_TEST_SUITE_P(IsConnectedTests, IsJoystickConnectedParametersTest,
@@ -47,14 +46,16 @@ TEST_P(JoystickConnectionWarningTest, JoystickConnectionWarnings) {
// Set FMS and Silence settings
wpi::sim::DriverStationSim::SetFmsAttached(std::get<0>(GetParam()));
wpi::sim::DriverStationSim::NotifyNewData();
wpi::DriverStation::SilenceJoystickConnectionWarning(std::get<1>(GetParam()));
wpi::internal::DriverStationBackend::SilenceJoystickConnectionWarning(
std::get<1>(GetParam()));
// Create joystick and attempt to retrieve button.
wpi::Joystick joystick(0);
joystick.GetRawButton(1);
wpi::sim::StepTiming(1_s);
EXPECT_EQ(wpi::DriverStation::IsJoystickConnectionWarningSilenced(),
EXPECT_EQ(wpi::internal::DriverStationBackend::
IsJoystickConnectionWarningSilenced(),
std::get<2>(GetParam()));
EXPECT_EQ(::testing::internal::GetCapturedStderr().substr(
0, std::get<3>(GetParam()).size()),

View File

@@ -7,7 +7,9 @@
#include <gtest/gtest.h>
#include "callback_helpers/TestCallbackHelpers.hpp"
#include "wpi/driverstation/DriverStation.hpp"
#include "wpi/driverstation/MatchState.hpp"
#include "wpi/driverstation/RobotState.hpp"
#include "wpi/driverstation/internal/DriverStationBackend.hpp"
#include "wpi/hal/DriverStationTypes.h"
#include "wpi/hal/HAL.h"
@@ -18,7 +20,7 @@ TEST(DriverStationTest, Enabled) {
HAL_Initialize(500, 0);
DriverStationSim::ResetData();
EXPECT_FALSE(DriverStation::IsEnabled());
EXPECT_FALSE(RobotState::IsEnabled());
BooleanCallback callback;
auto cb =
DriverStationSim::RegisterEnabledCallback(callback.GetCallback(), false);
@@ -26,7 +28,7 @@ TEST(DriverStationTest, Enabled) {
DriverStationSim::SetEnabled(true);
DriverStationSim::NotifyNewData();
EXPECT_TRUE(DriverStationSim::GetEnabled());
EXPECT_TRUE(DriverStation::IsEnabled());
EXPECT_TRUE(RobotState::IsEnabled());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_TRUE(callback.GetLastValue());
}
@@ -35,15 +37,15 @@ TEST(DriverStationTest, AutonomousMode) {
HAL_Initialize(500, 0);
DriverStationSim::ResetData();
EXPECT_FALSE(DriverStation::IsAutonomous());
EXPECT_FALSE(RobotState::IsAutonomous());
EnumCallback callback;
auto cb = DriverStationSim::RegisterRobotModeCallback(callback.GetCallback(),
false);
DriverStationSim::SetRobotMode(HAL_ROBOT_MODE_AUTONOMOUS);
DriverStationSim::NotifyNewData();
EXPECT_EQ(DriverStationSim::GetRobotMode(), HAL_ROBOT_MODE_AUTONOMOUS);
EXPECT_TRUE(DriverStation::IsAutonomous());
EXPECT_EQ(DriverStation::GetRobotMode(), RobotMode::AUTONOMOUS);
EXPECT_TRUE(RobotState::IsAutonomous());
EXPECT_EQ(RobotState::GetRobotMode(), RobotMode::AUTONOMOUS);
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(callback.GetLastValue(), HAL_ROBOT_MODE_AUTONOMOUS);
}
@@ -52,15 +54,15 @@ TEST(DriverStationTest, Mode) {
HAL_Initialize(500, 0);
DriverStationSim::ResetData();
EXPECT_FALSE(DriverStation::IsTest());
EXPECT_FALSE(RobotState::IsTest());
EnumCallback callback;
auto cb = DriverStationSim::RegisterRobotModeCallback(callback.GetCallback(),
false);
DriverStationSim::SetRobotMode(HAL_ROBOT_MODE_TEST);
DriverStationSim::NotifyNewData();
EXPECT_EQ(DriverStationSim::GetRobotMode(), HAL_ROBOT_MODE_TEST);
EXPECT_TRUE(DriverStation::IsTest());
EXPECT_EQ(DriverStation::GetRobotMode(), RobotMode::TEST);
EXPECT_TRUE(RobotState::IsTest());
EXPECT_EQ(RobotState::GetRobotMode(), RobotMode::TEST);
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(callback.GetLastValue(), HAL_ROBOT_MODE_TEST);
}
@@ -69,14 +71,14 @@ TEST(DriverStationTest, Estop) {
HAL_Initialize(500, 0);
DriverStationSim::ResetData();
EXPECT_FALSE(DriverStation::IsEStopped());
EXPECT_FALSE(RobotState::IsEStopped());
BooleanCallback callback;
auto cb =
DriverStationSim::RegisterEStopCallback(callback.GetCallback(), false);
DriverStationSim::SetEStop(true);
DriverStationSim::NotifyNewData();
EXPECT_TRUE(DriverStationSim::GetEStop());
EXPECT_TRUE(DriverStation::IsEStopped());
EXPECT_TRUE(RobotState::IsEStopped());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_TRUE(callback.GetLastValue());
}
@@ -85,14 +87,14 @@ TEST(DriverStationTest, FmsAttached) {
HAL_Initialize(500, 0);
DriverStationSim::ResetData();
EXPECT_FALSE(DriverStation::IsFMSAttached());
EXPECT_FALSE(RobotState::IsFMSAttached());
BooleanCallback callback;
auto cb = DriverStationSim::RegisterFmsAttachedCallback(
callback.GetCallback(), false);
DriverStationSim::SetFmsAttached(true);
DriverStationSim::NotifyNewData();
EXPECT_TRUE(DriverStationSim::GetFmsAttached());
EXPECT_TRUE(DriverStation::IsFMSAttached());
EXPECT_TRUE(RobotState::IsFMSAttached());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_TRUE(callback.GetLastValue());
}
@@ -100,21 +102,21 @@ TEST(DriverStationTest, FmsAttached) {
TEST(DriverStationTest, DsAttached) {
HAL_Initialize(500, 0);
DriverStationSim::ResetData();
DriverStation::RefreshData();
wpi::internal::DriverStationBackend::RefreshData();
EXPECT_FALSE(DriverStationSim::GetDsAttached());
EXPECT_FALSE(DriverStation::IsDSAttached());
EXPECT_FALSE(RobotState::IsDSAttached());
DriverStationSim::NotifyNewData();
EXPECT_TRUE(DriverStationSim::GetDsAttached());
EXPECT_TRUE(DriverStation::IsDSAttached());
EXPECT_TRUE(RobotState::IsDSAttached());
BooleanCallback callback;
auto cb = DriverStationSim::RegisterDsAttachedCallback(callback.GetCallback(),
false);
DriverStationSim::SetDsAttached(false);
DriverStation::RefreshData();
wpi::internal::DriverStationBackend::RefreshData();
EXPECT_FALSE(DriverStationSim::GetDsAttached());
EXPECT_FALSE(DriverStation::IsDSAttached());
EXPECT_FALSE(RobotState::IsDSAttached());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_FALSE(callback.GetLastValue());
}
@@ -136,8 +138,8 @@ TEST(DriverStationTest, AllianceStationId) {
DriverStationSim::SetAllianceStationId(allianceStation);
wpi::sim::DriverStationSim::NotifyNewData();
EXPECT_EQ(allianceStation, DriverStationSim::GetAllianceStationId());
EXPECT_FALSE(DriverStation::GetAlliance().has_value());
EXPECT_FALSE(DriverStation::GetLocation().has_value());
EXPECT_FALSE(MatchState::GetAlliance().has_value());
EXPECT_FALSE(MatchState::GetLocation().has_value());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(allianceStation, callback.GetLastValue());
@@ -146,8 +148,8 @@ TEST(DriverStationTest, AllianceStationId) {
DriverStationSim::SetAllianceStationId(allianceStation);
wpi::sim::DriverStationSim::NotifyNewData();
EXPECT_EQ(allianceStation, DriverStationSim::GetAllianceStationId());
EXPECT_EQ(DriverStation::Alliance::BLUE, DriverStation::GetAlliance());
EXPECT_EQ(1, DriverStation::GetLocation());
EXPECT_EQ(Alliance::BLUE, MatchState::GetAlliance());
EXPECT_EQ(1, MatchState::GetLocation());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(allianceStation, callback.GetLastValue());
@@ -156,8 +158,8 @@ TEST(DriverStationTest, AllianceStationId) {
DriverStationSim::SetAllianceStationId(allianceStation);
wpi::sim::DriverStationSim::NotifyNewData();
EXPECT_EQ(allianceStation, DriverStationSim::GetAllianceStationId());
EXPECT_EQ(DriverStation::Alliance::BLUE, DriverStation::GetAlliance());
EXPECT_EQ(2, DriverStation::GetLocation());
EXPECT_EQ(Alliance::BLUE, MatchState::GetAlliance());
EXPECT_EQ(2, MatchState::GetLocation());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(allianceStation, callback.GetLastValue());
@@ -166,8 +168,8 @@ TEST(DriverStationTest, AllianceStationId) {
DriverStationSim::SetAllianceStationId(allianceStation);
wpi::sim::DriverStationSim::NotifyNewData();
EXPECT_EQ(allianceStation, DriverStationSim::GetAllianceStationId());
EXPECT_EQ(DriverStation::Alliance::BLUE, DriverStation::GetAlliance());
EXPECT_EQ(3, DriverStation::GetLocation());
EXPECT_EQ(Alliance::BLUE, MatchState::GetAlliance());
EXPECT_EQ(3, MatchState::GetLocation());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(allianceStation, callback.GetLastValue());
@@ -176,8 +178,8 @@ TEST(DriverStationTest, AllianceStationId) {
DriverStationSim::SetAllianceStationId(allianceStation);
wpi::sim::DriverStationSim::NotifyNewData();
EXPECT_EQ(allianceStation, DriverStationSim::GetAllianceStationId());
EXPECT_EQ(DriverStation::Alliance::RED, DriverStation::GetAlliance());
EXPECT_EQ(1, DriverStation::GetLocation());
EXPECT_EQ(Alliance::RED, MatchState::GetAlliance());
EXPECT_EQ(1, MatchState::GetLocation());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(allianceStation, callback.GetLastValue());
@@ -186,8 +188,8 @@ TEST(DriverStationTest, AllianceStationId) {
DriverStationSim::SetAllianceStationId(allianceStation);
wpi::sim::DriverStationSim::NotifyNewData();
EXPECT_EQ(allianceStation, DriverStationSim::GetAllianceStationId());
EXPECT_EQ(DriverStation::Alliance::RED, DriverStation::GetAlliance());
EXPECT_EQ(2, DriverStation::GetLocation());
EXPECT_EQ(Alliance::RED, MatchState::GetAlliance());
EXPECT_EQ(2, MatchState::GetLocation());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(allianceStation, callback.GetLastValue());
@@ -196,8 +198,8 @@ TEST(DriverStationTest, AllianceStationId) {
DriverStationSim::SetAllianceStationId(allianceStation);
wpi::sim::DriverStationSim::NotifyNewData();
EXPECT_EQ(allianceStation, DriverStationSim::GetAllianceStationId());
EXPECT_EQ(DriverStation::Alliance::RED, DriverStation::GetAlliance());
EXPECT_EQ(3, DriverStation::GetLocation());
EXPECT_EQ(Alliance::RED, MatchState::GetAlliance());
EXPECT_EQ(3, MatchState::GetLocation());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(allianceStation, callback.GetLastValue());
}
@@ -208,7 +210,7 @@ TEST(DriverStationTest, ReplayNumber) {
DriverStationSim::SetReplayNumber(4);
DriverStationSim::NotifyNewData();
EXPECT_EQ(4, DriverStation::GetReplayNumber());
EXPECT_EQ(4, MatchState::GetReplayNumber());
}
TEST(DriverStationTest, MatchNumber) {
@@ -217,7 +219,7 @@ TEST(DriverStationTest, MatchNumber) {
DriverStationSim::SetMatchNumber(3);
DriverStationSim::NotifyNewData();
EXPECT_EQ(3, DriverStation::GetMatchNumber());
EXPECT_EQ(3, MatchState::GetMatchNumber());
}
TEST(DriverStationTest, MatchTime) {
@@ -231,7 +233,7 @@ TEST(DriverStationTest, MatchTime) {
DriverStationSim::SetMatchTime(kTestTime);
wpi::sim::DriverStationSim::NotifyNewData();
EXPECT_EQ(kTestTime, DriverStationSim::GetMatchTime());
EXPECT_EQ(kTestTime, DriverStation::GetMatchTime().value());
EXPECT_EQ(kTestTime, MatchState::GetMatchTime().value());
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(kTestTime, callback.GetLastValue());
}
@@ -243,7 +245,7 @@ TEST(DriverStationTest, SetGameData) {
constexpr auto message = "Hello";
DriverStationSim::SetGameData(message);
DriverStationSim::NotifyNewData();
auto gameData = DriverStation::GetGameData();
auto gameData = MatchState::GetGameData();
ASSERT_TRUE(gameData.has_value());
EXPECT_EQ(message, gameData.value());
}
@@ -254,7 +256,7 @@ TEST(DriverStationTest, SetGameDataEmpty) {
DriverStationSim::SetGameData("");
DriverStationSim::NotifyNewData();
auto gameData = DriverStation::GetGameData();
auto gameData = MatchState::GetGameData();
EXPECT_FALSE(gameData.has_value());
}
@@ -265,5 +267,5 @@ TEST(DriverStationTest, SetEventName) {
constexpr auto message = "The Best Event";
DriverStationSim::SetEventName(message);
DriverStationSim::NotifyNewData();
EXPECT_EQ(message, DriverStation::GetEventName());
EXPECT_EQ(message, MatchState::GetEventName());
}

View File

@@ -3,7 +3,7 @@ import threading
from wpilib import simulation as wsim
from wpimath.units import seconds
from wpilib.opmoderobot import OpModeRobot
from wpilib import OpMode, DriverStation
from wpilib import OpMode, RobotState
from hal._wpiHal import RobotMode
from wpiutil import Color
@@ -55,7 +55,7 @@ def sim_timing_setup():
wsim.setProgramStarted(False)
yield
wsim.resumeTiming()
DriverStation.clearOpModes()
RobotState.clearOpModes()
def test_add_op_mode():