16 #include <hal/DriverStationTypes.h>
17 #include <wpi/Twine.h>
18 #include <wpi/condition_variable.h>
19 #include <wpi/deprecated.h>
20 #include <wpi/mutex.h>
22 #include "frc/ErrorBase.h"
23 #include "frc/RobotState.h"
27 class MatchDataSender;
35 enum Alliance { kRed, kBlue, kInvalid };
36 enum MatchType { kNone, kPractice, kQualification, kElimination };
72 static constexpr
int kJoystickPorts = 6;
256 WPI_DEPRECATED(
"Use RobotController static class method")
265 WPI_DEPRECATED(
"Use RobotController static class method")
383 void InDisabled(
bool entering) { m_userInDisabled = entering; }
409 void InTest(
bool entering) { m_userInTest = entering; }
433 void ReportJoystickUnpluggedError(
const wpi::Twine& message);
440 void ReportJoystickUnpluggedWarning(
const wpi::Twine& message);
444 void SendMatchData();
446 std::unique_ptr<MatchDataSender> m_matchDataSender;
449 wpi::mutex m_buttonEdgeMutex;
450 std::array<HAL_JoystickButtons, kJoystickPorts> m_previousButtonStates;
451 std::array<uint32_t, kJoystickPorts> m_joystickButtonsPressed;
452 std::array<uint32_t, kJoystickPorts> m_joystickButtonsReleased;
455 std::thread m_dsThread;
456 std::atomic<bool> m_isRunning{
false};
458 wpi::mutex m_waitForDataMutex;
459 wpi::condition_variable m_waitForDataCond;
460 int m_waitForDataCounter;
463 bool m_userInDisabled =
false;
464 bool m_userInAutonomous =
false;
465 bool m_userInTeleop =
false;
466 bool m_userInTest =
false;
468 double m_nextMessageTime = 0;
double GetBatteryVoltage() const
Read the battery voltage.
int GetReplayNumber() const
Returns the number of times the current match has been replayed from the FMS.
WPILib FRC namespace.
Definition: SPIAccelerometerSim.h:18
int GetStickAxisCount(int stick) const
Returns the number of axes on a given joystick port.
int GetMatchNumber() const
Returns the match number provided by the FMS.
double GetStickAxis(int stick, int axis)
Get the value of the axis on a joystick.
void InOperatorControl(bool entering)
Only to be used to tell the Driver Station what code you claim to be executing for diagnostic purpose...
Definition: DriverStation.h:401
static DriverStation & GetInstance()
Return a reference to the singleton DriverStation.
bool GetStickButton(int stick, int button)
The state of one joystick button.
bool IsTest() const
Check if the DS is commanding test mode.
bool GetStickButtonReleased(int stick, int button)
Whether one joystick button was released since the last check.
int GetStickPOVCount(int stick) const
Returns the number of POVs on a given joystick port.
bool IsDisabled() const
Check if the robot is disabled.
Provide access to the network communication data to / from the Driver Station.
Definition: DriverStation.h:33
static void ReportWarning(const wpi::Twine &error)
Report a warning to the DriverStation messages window.
MatchType GetMatchType() const
Returns the type of match being played provided by the FMS.
std::string GetGameSpecificMessage() const
Returns the game specific message provided by the FMS.
bool IsDSAttached() const
Check if the DS is attached.
double GetMatchTime() const
Return the approximate match time.
void InDisabled(bool entering)
Only to be used to tell the Driver Station what code you claim to be executing for diagnostic purpose...
Definition: DriverStation.h:383
int GetStickButtonCount(int stick) const
Returns the number of buttons on a given joystick port.
int GetStickPOV(int stick, int pov)
Get the state of a POV on the joystick.
int GetLocation() const
Return the driver station location on the field.
bool IsBrownedOut() const
Check if the system is browned out.
int GetJoystickType(int stick) const
Returns the type of joystick at a given port.
void GetData()
Copy data from the DS task for the user.
bool IsEnabled() const
Check if the DS has enabled the robot.
int GetStickButtons(int stick) const
The state of the buttons on the joystick.
Base class for most objects.
Definition: ErrorBase.h:74
Alliance GetAlliance() const
Return the alliance that the driver station says it is on.
bool GetStickButtonPressed(int stick, int button)
Whether one joystick button was pressed since the last check.
std::string GetJoystickName(int stick) const
Returns the name of the joystick at the given port.
bool IsNewControlData() const
Has a new control packet from the driver station arrived since the last time this function was called...
void InTest(bool entering)
Only to be used to tell the Driver Station what code you claim to be executing for diagnostic purpose...
Definition: DriverStation.h:409
void WaitForData()
Wait until a new packet comes from the driver station.
bool IsSysActive() const
Check if the FPGA outputs are enabled.
static void ReportError(const wpi::Twine &error)
Report an error to the DriverStation messages window.
std::string GetEventName() const
Returns the name of the competition event provided by the FMS.
bool IsAutonomous() const
Check if the DS is commanding autonomous mode.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition: Twine.h:79
bool IsFMSAttached() const
Is the driver station attached to a Field Management System?
int GetJoystickAxisType(int stick, int axis) const
Returns the types of Axes on a given joystick port.
void InAutonomous(bool entering)
Only to be used to tell the Driver Station what code you claim to be executing for diagnostic purpose...
Definition: DriverStation.h:392
bool IsOperatorControl() const
Check if the DS is commanding teleop mode.
bool GetJoystickIsXbox(int stick) const
Returns a boolean indicating if the controller is an xbox controller.