From adab2f680967fb9e85e399b159ffe180356e7ca1 Mon Sep 17 00:00:00 2001 From: 702roboticsmember <123431864+702roboticsmember@users.noreply.github.com> Date: Wed, 2 Sep 2026 16:32:28 -0700 Subject: [PATCH 1/3] getAlliance() moved to DriverStationBackend This was changed in the alpha version. updated to use DriverStationBackend and proper alliance constants --- source/docs/software/basic-programming/alliancecolor.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/docs/software/basic-programming/alliancecolor.rst b/source/docs/software/basic-programming/alliancecolor.rst index a5fed5ac77..050986cebd 100644 --- a/source/docs/software/basic-programming/alliancecolor.rst +++ b/source/docs/software/basic-programming/alliancecolor.rst @@ -9,12 +9,12 @@ Note that there are three cases: red, blue, and no color yet. It is important t .. tab-set-code:: ```java - Optional ally = DriverStation.getAlliance(); + Optional ally = DriverStationBackend.getAlliance(); if (ally.isPresent()) { - if (ally.get() == Alliance.Red) { + if (ally.get() == Alliance.RED) { } - if (ally.get() == Alliance.Blue) { + if (ally.get() == Alliance.BLUE) { } } From 39f2131edeacfc20a467e41824783a4ad59f2be8 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sat, 19 Sep 2026 20:44:43 -0700 Subject: [PATCH 2/3] Update Java and C++ and use MatchState --- .../basic-programming/alliancecolor.rst | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/source/docs/software/basic-programming/alliancecolor.rst b/source/docs/software/basic-programming/alliancecolor.rst index 050986cebd..453130d95c 100644 --- a/source/docs/software/basic-programming/alliancecolor.rst +++ b/source/docs/software/basic-programming/alliancecolor.rst @@ -1,6 +1,6 @@ # Get Alliance Color -The ``DriverStation`` class ([Java](https://github.wpilib.org/allwpilib/docs/beta/java/org/wpilib/driverstation/DriverStation.html), [C++](https://github.wpilib.org/allwpilib/docs/beta/cpp/classwpi_1_1_driver_station.html), :py:class:`Python `) has many useful features for getting data from the Driver Station computer. One of the most important features is ``getAlliance`` (Java & Python) / ``GetAlliance`` (C++). +The ``MatchState`` class ([Java](https://github.wpilib.org/allwpilib/docs/beta/java/org/wpilib/driverstation/MatchState.html), [C++](https://github.wpilib.org/allwpilib/docs/beta/cpp/classwpi_1_1_match_state.html), :py:class:`Python `) has many useful features for getting data from the Driver Station computer. One of the most important features is ``getAlliance`` (Java) / ``GetAlliance`` (C++) / ``get_alliance`` (Python). Note that there are three cases: red, blue, and no color yet. It is important that code handles the third case correctly because the alliance color will not be available until the Driver Station connects. In particular, code should not assume that the alliance color will be available during constructor methods, but it should be available by the time `autoInit` or `teleopInit` is called. FMS will set the alliance color automatically; when not connected to FMS, the alliance color can be set from the Driver Station (see :ref:`"Team Station" on the Operation Tab `). @@ -9,7 +9,7 @@ Note that there are three cases: red, blue, and no color yet. It is important t .. tab-set-code:: ```java - Optional ally = DriverStationBackend.getAlliance(); + Optional ally = MatchState.getAlliance(); if (ally.isPresent()) { if (ally.get() == Alliance.RED) { @@ -24,12 +24,11 @@ Note that there are three cases: red, blue, and no color yet. It is important t ``` ```c++ - using wpi::DriverStation::Alliance; - if (auto ally = wpi::DriverStation::GetAlliance()) { - if (ally.value() == Alliance::kRed) { + if (auto ally = wpi::MatchState::GetAlliance()) { + if (ally.value() == wpi::Alliance::RED) { } - if (ally.value() == Alliance::kBlue) { + if (ally.value() == wpi::Alliance::BLUE) { } } @@ -39,12 +38,12 @@ Note that there are three cases: red, blue, and no color yet. It is important t ``` ```Python - from wpilib import DriverStation - ally = DriverStation.get_alliance() + from wpilib import MatchState + ally = MatchState.get_alliance() if ally is not None: - if ally == DriverStation.Alliance.kRed: + if ally == MatchState.Alliance.RED: - elif ally == DriverStation.Alliance.kBlue: + elif ally == MatchState.Alliance.BLUE: else: From d38d4527f806b21f95430a4d75a6373e6c089939 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sun, 20 Sep 2026 17:08:12 -0700 Subject: [PATCH 3/3] Update Game Data article --- .../docs/yearly-overview/2026-game-data.rst | 389 ++++++++++-------- .../images/2020-Game-Data/ds-game-data.png | Bin 4550 -> 31619 bytes 2 files changed, 210 insertions(+), 179 deletions(-) diff --git a/source/docs/yearly-overview/2026-game-data.rst b/source/docs/yearly-overview/2026-game-data.rst index 76ffe65597..666f06257e 100644 --- a/source/docs/yearly-overview/2026-game-data.rst +++ b/source/docs/yearly-overview/2026-game-data.rst @@ -16,89 +16,75 @@ The alliance will be provided as a single character representing the color of th ## Testing Game Specific Data -You can test your Game Specific Data code without :term:`FMS` by using the Driver Station. Click on the Setup tab of the Driver Station, then enter the desired test string into the Game Data text field. The data will be transmitted to the robot in one of two conditions: Enable the robot in Teleop mode, or when the DS reaches the End Game time in a Practice Match (times are configurable on the Setup tab). It is recommended to run at least one match using the Practice functionality to verify that your code works correctly in a full match flow. +You can test your Game Specific Data code without :term:`FMS` by using the Driver Station. Click on the Settings tab of the Driver Station, then enter the desired test string into the :guilabel:`Game Data` text field. The data will be transmitted to the robot in one of two conditions: Enable the robot in Teleop mode, or when the DS reaches the End Game time in a Practice Match (times are configurable on the Settings tab). It is recommended to run at least one match using the Practice functionality to verify that your code works correctly in a full match flow. .. image:: images/2020-Game-Data/ds-game-data.png :alt: Game Data text box on the Driver Station. -.. note:: For 2026, the match timings have changed and do not match the driver station defaults. To match the 2026 game, change the values to: - - - Autonomous: 20 seconds - - Teleoperated: 110 seconds - - End Game: 30 seconds - ## Accessing the Data -The data is accessed using the Game Data methods or VIs in each language. Below are descriptions and examples of how to access the data from each of the three languages. As the data is provided to the Robot during the Teleop period, teams will likely want to query the data in Teleop periodic code. +The data is accessed using the Game Data methods in each language. Below are descriptions and examples of how to access the data from each of the three languages. As the data is provided to the Robot during the Teleop period, teams will likely want to query the data in Teleop periodic code. ### C++/Java/Python -In C++, Java, and Python the Game Data is accessed by using the GetGameSpecificMessage method of the DriverStation class. Teams likely want to query the data in a Teleop method such as Teleop Periodic in order to receive the data after it is sent during the match. Make sure to handle the case where the data is an empty string as this is what the data will be until the selected alliance is sent. +In C++, Java, and Python the Game Data is accessed by using the ``GetGameData`` method of the MatchState class ([Java](https://github.wpilib.org/allwpilib/docs/beta/java/org/wpilib/driverstation/MatchState.html), [C++](https://github.wpilib.org/allwpilib/docs/beta/cpp/classwpi_1_1_match_state.html), :py:class:`Python `). ``GetGameData`` returns an ``Optional`` type so Teams know that Game Data has been received. Teams likely want to query the data in a Teleop method such as Teleop Periodic in order to receive the data after it is sent during the match. Make sure to handle the case where the data has not been received. .. tab-set-code:: ```java - import edu.wpi.first.wpilibj.DriverStation; - String gameData; - gameData = DriverStation.getGameSpecificMessage(); - if(gameData.length() > 0) - { - switch (gameData.charAt(0)) - { - case 'B' : - //Blue case code - break; - case 'R' : - //Red case code - break; - default : - //This is corrupt data - break; - } - } else { - //Code for no data received yet - } + Optional gameData = MatchState.getGameData(); + if (gameData.isPresent() && gameData.get().length() > 0) { + switch (gameData.get().charAt(0)) { + case 'B': + // Blue case code + break; + case 'R': + // Red case code + break; + default: + // This is corrupt data + break; + } + } else { + // Code for no data received yet + } ``` ```c++ - #include - std::string gameData; - gameData = wpi::DriverStation::GetGameSpecificMessage(); - if(gameData.length() > 0) - { - switch (gameData[0]) - { - case 'B' : - //Blue case code - break; - case 'R' : - //Red case code - break; - default : - //This is corrupt data - break; - } - } else { - //Code for no data received yet - } + auto gameData = wpi::MatchState::GetGameData(); + if (gameData.has_value() && gameData->length() > 0) { + switch (gameData->at(0)) { + case 'B': + // Blue case code + break; + case 'R': + // Red case code + break; + default: + // This is corrupt data + break; + } + } else { + // Code for no data received yet + } ``` ```python - data = wpilib.DriverStation.getGameSpecificMessage() - if data: - match data: - case "B": - # Blue case code - ... - case "R": - # Red case code - ... - case _: - # This is corrupt data - ... - else: - # Code for no data received yet - ... + data = wpilib.MatchState.get_game_data() + if data: + match data: + case "B": + # Blue case code + ... + case "R": + # Red case code + ... + case _: + # This is corrupt data + ... + else: + # Code for no data received yet + ... ``` You can combine the Game Data with the current match time to determine whether your own alliance's hub is currently active. Note however the FMS doesn't send an official match time to robots, only an approximate match time. @@ -108,123 +94,168 @@ For example: .. tab-set-code:: ```java - public boolean isHubActive() { - Optional alliance = DriverStation.getAlliance(); - // If we have no alliance, we cannot be enabled, therefore no hub. - if (alliance.isEmpty()) { - return false; - } - // Hub is always enabled in autonomous. - if (DriverStation.isAutonomousEnabled()) { - return true; - } - // At this point, if we're not teleop enabled, there is no hub. - if (!DriverStation.isTeleopEnabled()) { - return false; - } - - // We're teleop enabled, compute. - double matchTime = DriverStation.getMatchTime(); - String gameData = DriverStation.getGameSpecificMessage(); - // If we have no game data, we cannot compute, assume hub is active, as its likely early in teleop. - if (gameData.isEmpty()) { - return true; - } - boolean redInactiveFirst = false; - switch (gameData.charAt(0)) { - case 'R' -> redInactiveFirst = true; - case 'B' -> redInactiveFirst = false; - default -> { - // If we have invalid game data, assume hub is active. - return true; - } - } - - // Shift was is active for blue if red won auto, or red if blue won auto. - boolean shift1Active = switch (alliance.get()) { - case Red -> !redInactiveFirst; - case Blue -> redInactiveFirst; - }; - - if (matchTime > 130) { - // Transition shift, hub is active. - return true; - } else if (matchTime > 105) { - // Shift 1 - return shift1Active; - } else if (matchTime > 80) { - // Shift 2 - return !shift1Active; - } else if (matchTime > 55) { - // Shift 3 - return shift1Active; - } else if (matchTime > 30) { - // Shift 4 - return !shift1Active; - } else { - // End game, hub always active. - return true; - } - } + public boolean isHubActive() { + Optional alliance = MatchState.getAlliance(); + // If we have no alliance, we cannot be enabled, therefore no hub. + if (alliance.isEmpty()) { + return false; + } + // Hub is always enabled in autonomous. + if (RobotState.isAutonomousEnabled()) { + return true; + } + // At this point, if we're not teleop enabled, there is no hub. + if (!RobotState.isTeleopEnabled()) { + return false; + } + + // We're teleop enabled, compute. + double matchTime = MatchState.getMatchTime(); + Optional gameData = MatchState.getGameData(); + // If we have no game data, we cannot compute, assume hub is active, as its + // likely early in teleop + if (!gameData.isPresent() || gameData.get().isEmpty()) { + return true; + } + boolean redInactiveFirst = false; + switch (gameData.get().charAt(0)) { + case 'R' -> redInactiveFirst = true; + case 'B' -> redInactiveFirst = false; + default -> { + // If we have invalid game data, assume hub is active. + return true; + } + } + + // Shift was is active for blue if red won auto, or red if blue won auto. + boolean shift1Active = + switch (alliance.get()) { + case Alliance.RED -> !redInactiveFirst; + case Alliance.BLUE -> redInactiveFirst; + }; + + if (matchTime > 130) { + // Transition shift, hub is active. + return true; + } else if (matchTime > 105) { + // Shift 1 + return shift1Active; + } else if (matchTime > 80) { + // Shift 2 + return !shift1Active; + } else if (matchTime > 55) { + // Shift 3 + return shift1Active; + } else if (matchTime > 30) { + // Shift 4 + return !shift1Active; + } else { + // End game, hub always active. + return true; + } + } ``` - ```python - from wpilib import DriverStation - - - def is_hub_active() -> bool: - alliance = DriverStation.get_alliance() - # If we have no alliance, we cannot be enabled, therefore no hub. - if alliance is None: - return False - - # Hub is always enabled in autonomous. - if DriverStation.isAutonomousEnabled(): - return True - - # At this point if we're not teleop enabled, there is no hub. - if not DriverStation.isTeleopEnabled(): - return False - - # We're teleop enabled, compute. - match_time = DriverStation.get_match_time() - game_data = DriverStation.getGameSpecificMessage() - - match game_data: - case "R": - red_inactive_first = True - case "B": - red_inactive_first = False - case _: - # No or invalid game data, assume hub is active. - return True - - # Shift 1 is active for blue if red won auto, or red if blue won auto. - shift1_active = not red_inactive_first if alliance == DriverStation.Alliance.kRed else red_inactive_first - - if match_time > 130: - return True # Transition shift, hub is active - elif match_time > 105: - # Shift 1 - return shift1_active - elif match_time > 80: - # Shift 2 - return not shift1_active - elif match_time > 55: - # Shift 3 - return shift1_active - elif match_time > 30: - # Shift 4 - return not shift1_active - else: - return True # End game, hub always active + ```c++ + bool IsHubActive() { + auto alliance = wpi::MatchState::GetAlliance(); + if (!alliance.has_value()) { + return false; + } + if (wpi::RobotState::IsAutonomousEnabled()) { + return true; + } + if (!wpi::RobotState::IsTeleopEnabled()) { + return false; + } + + auto matchTime = wpi::MatchState::GetMatchTime().value(); + auto gameData = wpi::MatchState::GetGameData(); + if (!gameData.has_value() || gameData->empty()) { + return true; + } + + bool redInactiveFirst; + switch ((*gameData)[0]) { + case 'R': + redInactiveFirst = true; + break; + case 'B': + redInactiveFirst = false; + break; + default: + return true; + } + + bool shift1Active = + *alliance == wpi::Alliance::RED ? !redInactiveFirst : redInactiveFirst; + + if (matchTime > 130) { + return true; + } else if (matchTime > 105) { + return shift1Active; + } else if (matchTime > 80) { + return !shift1Active; + } else if (matchTime > 55) { + return shift1Active; + } else if (matchTime > 30) { + return !shift1Active; + } else { + return true; + } + } ``` -### LabVIEW - -The Game Data in LabVIEW is accessed from the Game Specific Data VI. This VI can be found in the WPI Robotics Library -> Driver Station palette. - -LabVIEW teams will likely want to query the data in the Teleop or PeriodicTasks VIs and may choose to gate the query behind a button press or other action. The code below reads the data and then uses a case structure to react differently to each of the 3 possible cases (empty, or either of the 2 letters). + ```python + def is_hub_active() -> bool: + alliance = wpilib.MatchState.get_alliance() + # If we have no alliance, we cannot be enabled, therefore no hub. + if alliance is None: + return False + + # Hub is always enabled in autonomous. + if wpilib.RobotState.is_autonomous_enabled(): + return True + + # At this point if we're not teleop enabled, there is no hub. + if not wpilib.RobotState.is_teleop_enabled(): + return False + + # We're teleop enabled, compute. + match_time = wpilib.MatchState.get_match_time() + game_data = wpilib.MatchState.get_game_data() + + match game_data: + case "R": + red_inactive_first = True + case "B": + red_inactive_first = False + case _: + # No or invalid game data, assume hub is active. + return True + + # Shift 1 is active for blue if red won auto, or red if blue won auto. + shift1_active = ( + not red_inactive_first + if alliance == wpilib.Alliance.RED + else red_inactive_first + ) + + if match_time > 130: + return True # Transition shift, hub is active + elif match_time > 105: + # Shift 1 + return shift1_active + elif match_time > 80: + # Shift 2 + return not shift1_active + elif match_time > 55: + # Shift 3 + return shift1_active + elif match_time > 30: + # Shift 4 + return not shift1_active + else: + return True # End game, hub always active + ``` -.. image:: images/2020-Game-Data/labview-game-data-code2026.png - :alt: Making a decision what to do about the game data received using a case structure. diff --git a/source/docs/yearly-overview/images/2020-Game-Data/ds-game-data.png b/source/docs/yearly-overview/images/2020-Game-Data/ds-game-data.png index 2b391f836239702c9adafa33237e1afbfc9deecb..53727cbe8812d1f87d0ba05683657da905c676ad 100644 GIT binary patch literal 31619 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 P`w!K7ns*Bo9tHg`0SZB& literal 4550 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