16 #include <hal/DriverStation.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")
268 std::string GetGameSpecificMessage()
const;
269 std::string GetEventName()
const;
270 MatchType GetMatchType()
const;
271 int GetMatchNumber()
const;
272 int GetReplayNumber()
const;
352 void InDisabled(
bool entering) { m_userInDisabled = entering; }
378 void InTest(
bool entering) { m_userInTest = entering; }
402 void ReportJoystickUnpluggedError(
const wpi::Twine& message);
409 void ReportJoystickUnpluggedWarning(
const wpi::Twine& message);
413 void SendMatchData();
415 std::unique_ptr<MatchDataSender> m_matchDataSender;
418 wpi::mutex m_buttonEdgeMutex;
419 std::array<HAL_JoystickButtons, kJoystickPorts> m_previousButtonStates;
420 std::array<uint32_t, kJoystickPorts> m_joystickButtonsPressed;
421 std::array<uint32_t, kJoystickPorts> m_joystickButtonsReleased;
424 std::thread m_dsThread;
425 std::atomic<bool> m_isRunning{
false};
427 wpi::mutex m_waitForDataMutex;
428 wpi::condition_variable m_waitForDataCond;
429 int m_waitForDataCounter;
432 bool m_userInDisabled =
false;
433 bool m_userInAutonomous =
false;
434 bool m_userInTeleop =
false;
435 bool m_userInTest =
false;
437 double m_nextMessageTime = 0;
double GetBatteryVoltage() const
Read the battery voltage.
WPILib FRC namespace.
Definition: SPIAccelerometerSim.h:18
int GetStickAxisCount(int stick) const
Returns the number of axes on a given joystick port.
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:370
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.
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:352
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:378
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.
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:361
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.