[wpilib] DriverStation: Change alliance station to use optional (#5229)

Many teams have issues trying to read the DS too early. By switching to an optional, we cause teams to check 2 things. Either 1) they explicitly check, and their code is correct, or 2) they just read .value() and their code reboots in a loop. However, because the DS will eventually connect, this 2nd case is ok, and should theoretically be undetectable on the field.
This commit is contained in:
Thad House
2023-07-22 15:19:28 -07:00
committed by GitHub
parent ef155438bd
commit fc56f8049a
17 changed files with 179 additions and 86 deletions

View File

@@ -4,6 +4,7 @@
#pragma once
#include <optional>
#include <string>
#include <units/time.h>
@@ -21,7 +22,7 @@ namespace frc {
*/
class DriverStation final {
public:
enum Alliance { kRed, kBlue, kInvalid };
enum Alliance { kRed, kBlue };
enum MatchType { kNone, kPractice, kQualification, kElimination };
static constexpr int kJoystickPorts = 6;
@@ -282,7 +283,7 @@ class DriverStation final {
*
* @return The Alliance enum (kRed, kBlue or kInvalid)
*/
static Alliance GetAlliance();
static std::optional<Alliance> GetAlliance();
/**
* Return the driver station location from the FMS.
@@ -294,7 +295,7 @@ class DriverStation final {
*
* @return The location of the driver station (1-3, 0 for invalid)
*/
static int GetLocation();
static std::optional<int> GetLocation();
/**
* Wait for a DS connection.