[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

@@ -533,7 +533,7 @@ int DriverStation::GetReplayNumber() {
return info.replayNumber;
}
DriverStation::Alliance DriverStation::GetAlliance() {
std::optional<DriverStation::Alliance> DriverStation::GetAlliance() {
int32_t status = 0;
auto allianceStationID = HAL_GetAllianceStation(&status);
switch (allianceStationID) {
@@ -546,11 +546,11 @@ DriverStation::Alliance DriverStation::GetAlliance() {
case HAL_AllianceStationID_kBlue3:
return kBlue;
default:
return kInvalid;
return {};
}
}
int DriverStation::GetLocation() {
std::optional<int> DriverStation::GetLocation() {
int32_t status = 0;
auto allianceStationID = HAL_GetAllianceStation(&status);
switch (allianceStationID) {
@@ -564,7 +564,7 @@ int DriverStation::GetLocation() {
case HAL_AllianceStationID_kBlue3:
return 3;
default:
return 0;
return {};
}
}