WPILibC++ 2027.0.0-alpha-5
Loading...
Searching...
No Matches
DriverStationBackend.hpp
Go to the documentation of this file.
1// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5#pragma once
6
7#include <optional>
8#include <string>
9#include <string_view>
10
20#include "wpi/units/time.hpp"
22
23namespace wpi::log {
24class DataLog;
25} // namespace wpi::log
26
27namespace wpi::util {
28class Color;
29} // namespace wpi::util
30
31namespace wpi::internal {
32
34
35/**
36 * Provide access to the network communication data to / from the Driver
37 * Station.
38 */
39class DriverStationBackend final {
40 public:
41 /// Number of Joystick ports.
42 static constexpr int JOYSTICK_PORTS = 6;
43
44 /**
45 * The state of one joystick button. Button indexes begin at 0.
46 *
47 * @param stick The joystick to read.
48 * @param button The button index, beginning at 0.
49 * @return The state of the joystick button.
50 */
51 static bool GetStickButton(int stick, int button);
52
53 /**
54 * The state of one joystick button, only if available. Button indexes begin
55 * at 0.
56 *
57 * @param stick The joystick to read.
58 * @param button The button index, beginning at 0.
59 * @return The state of the joystick button, or empty if unavailable.
60 */
61 static std::optional<bool> GetStickButtonIfAvailable(int stick, int button);
62
63 /**
64 * Whether one joystick button was pressed since the last check. %Button
65 * indexes begin at 1.
66 *
67 * @param stick The joystick to read.
68 * @param button The button index, beginning at 0.
69 * @return Whether the joystick button was pressed since the last check.
70 */
71 static bool GetStickButtonPressed(int stick, int button);
72
73 /**
74 * Whether one joystick button was released since the last check. %Button
75 * indexes begin at 1.
76 *
77 * @param stick The joystick to read.
78 * @param button The button index, beginning at 0.
79 * @return Whether the joystick button was released since the last check.
80 */
81 static bool GetStickButtonReleased(int stick, int button);
82
83 /**
84 * Get the value of the axis on a joystick.
85 *
86 * This depends on the mapping of the joystick connected to the specified
87 * port.
88 *
89 * @param stick The joystick to read.
90 * @param axis The analog axis value to read from the joystick.
91 * @return The value of the axis on the joystick.
92 */
93 static double GetStickAxis(int stick, int axis);
94
95 /**
96 * Get the finger data of a touchpad on a joystick, if available.
97 *
98 * @param stick The joystick to read.
99 * @param touchpad The touchpad index to read from the joystick.
100 * @param finger The finger index to read from the touchpad.
101 * @return The finger data of the touchpad on the joystick.
102 */
103 static TouchpadFinger GetStickTouchpadFinger(int stick, int touchpad,
104 int finger);
105
106 /**
107 * Whether a finger on a touchpad is available.
108 *
109 * @param stick The joystick to read.
110 * @param touchpad The touchpad index to read from the joystick.
111 * @param finger The finger index to read from the touchpad.
112 * @return True if the finger data is available.
113 */
114 static bool GetStickTouchpadFingerAvailable(int stick, int touchpad,
115 int finger);
116
117 /**
118 * Get the value of the axis on a joystick, if available.
119 *
120 * This depends on the mapping of the joystick connected to the specified
121 * port.
122 *
123 * @param stick The joystick to read.
124 * @param axis The analog axis value to read from the joystick.
125 * @return The value of the axis on the joystick, or empty if not available.
126 */
127 static std::optional<double> GetStickAxisIfAvailable(int stick, int axis);
128
129 /**
130 * Get the state of a POV on the joystick.
131 *
132 * @return the angle of the POV.
133 */
134 static POVDirection GetStickPOV(int stick, int pov);
135
136 /**
137 * The state of the buttons on the joystick.
138 *
139 * @param stick The joystick to read.
140 * @return The state of the buttons on the joystick.
141 */
142 static uint64_t GetStickButtons(int stick);
143
144 /**
145 * Returns the maximum axis index on a given joystick port.
146 *
147 * @param stick The joystick port number
148 * @return The maximum axis index on the indicated joystick
149 */
150 static int GetStickAxesMaximumIndex(int stick);
151
152 /**
153 * Returns the mask of available axes on a given joystick port.
154 *
155 * @param stick The joystick port number
156 * @return The mask of available axes on the indicated joystick
157 */
158 static int GetStickAxesAvailable(int stick);
159
160 /**
161 * Returns the maximum POV index on a given joystick port.
162 *
163 * @param stick The joystick port number
164 * @return The maximum POV index on the indicated joystick
165 */
166 static int GetStickPOVsMaximumIndex(int stick);
167
168 /**
169 * Returns the mask of available POVs on a given joystick port.
170 *
171 * @param stick The joystick port number
172 * @return The mask of available POVs on the indicated joystick
173 */
174 static int GetStickPOVsAvailable(int stick);
175
176 /**
177 * Returns the maximum button index on a given joystick port.
178 *
179 * @param stick The joystick port number
180 * @return The maximum button index on the indicated joystick
181 */
182 static int GetStickButtonsMaximumIndex(int stick);
183
184 /**
185 * Returns the mask of available buttons on a given joystick port.
186 *
187 * @param stick The joystick port number
188 * @return The mask of available buttons on the indicated joystick
189 */
190 static uint64_t GetStickButtonsAvailable(int stick);
191
192 /**
193 * Returns a boolean indicating if the controller is an xbox controller.
194 *
195 * @param stick The joystick port number
196 * @return A boolean that is true if the controller is an xbox controller.
197 */
198 static bool GetJoystickIsGamepad(int stick);
199
200 /**
201 * Returns the type of joystick at a given port.
202 *
203 * This maps to SDL_GamepadType
204 *
205 * @param stick The joystick port number
206 * @return The HID type of joystick at the given port
207 */
208 static int GetJoystickGamepadType(int stick);
209
210 /**
211 * Returns the number of outputs supported by the joystick at the given
212 * port.
213 *
214 * @param stick The joystick port number
215 * @return The number of outputs supported by the joystick at the given port
216 */
217 static int GetJoystickSupportedOutputs(int stick);
218
219 /**
220 * Returns the name of the joystick at the given port.
221 *
222 * @param stick The joystick port number
223 * @return The name of the joystick at the given port
224 */
225 static std::string GetJoystickName(int stick);
226
227 /**
228 * Returns if a joystick is connected to the Driver Station.
229 *
230 * This makes a best effort guess by looking at the reported number of axis,
231 * buttons, and POVs attached.
232 *
233 * @param stick The joystick port number
234 * @return true if a joystick is connected
235 */
236 static bool IsJoystickConnected(int stick);
237
238 /**
239 * Check if the DS has enabled the robot.
240 *
241 * @return True if the robot is enabled and the DS is connected
242 */
243 static bool IsEnabled() {
244 hal::ControlWord controlWord = GetControlWord();
245 return controlWord.IsEnabled() && controlWord.IsDSAttached();
246 }
247
248 /**
249 * Check if the robot is disabled.
250 *
251 * @return True if the robot is explicitly disabled or the DS is not connected
252 */
253 static bool IsDisabled() { return !IsEnabled(); }
254
255 /**
256 * Check if the robot is e-stopped.
257 *
258 * @return True if the robot is e-stopped
259 */
260 static bool IsEStopped() { return GetControlWord().IsEStopped(); }
261
262 /**
263 * Gets the current robot mode.
264 *
265 * <p>Note that this does not indicate whether the robot is enabled or
266 * disabled.
267 *
268 * @return robot mode
269 */
271
272 /**
273 * Check if the DS is commanding autonomous mode.
274 *
275 * @return True if the robot is being commanded to be in autonomous mode
276 */
277 static bool IsAutonomous() { return GetControlWord().IsAutonomous(); }
278
279 /**
280 * Check if the DS is commanding autonomous mode and if it has enabled the
281 * robot.
282 *
283 * @return True if the robot is being commanded to be in autonomous mode and
284 * enabled.
285 */
286 static bool IsAutonomousEnabled() {
288 }
289
290 /**
291 * Check if the DS is commanding teleop mode.
292 *
293 * @return True if the robot is being commanded to be in teleop mode
294 */
295 static bool IsTeleop() { return GetControlWord().IsTeleop(); }
296
297 /**
298 * Check if the DS is commanding teleop mode and if it has enabled the robot.
299 *
300 * @return True if the robot is being commanded to be in teleop mode and
301 * enabled.
302 */
303 static bool IsTeleopEnabled() { return GetControlWord().IsTeleopEnabled(); }
304
305 /**
306 * Check if the DS is commanding utility mode.
307 *
308 * @return True if the robot is being commanded to be in utility mode
309 */
310 static bool IsUtility() { return GetControlWord().IsUtility(); }
311
312 /**
313 * Check if the DS is commanding Utility mode and if it has enabled the robot.
314 *
315 * @return True if the robot is being commanded to be in Utility mode and
316 * enabled.
317 */
319
320 /**
321 * Adds an operating mode option. It's necessary to call PublishOpModes() to
322 * make the added modes visible to the driver station.
323 *
324 * @param mode robot mode
325 * @param name name of the operating mode
326 * @param group group of the operating mode
327 * @param description description of the operating mode
328 * @param textColor text color
329 * @param backgroundColor background color
330 * @return unique ID used to later identify the operating mode; if a blank
331 * name is passed, 0 is returned; identical names for the same robot
332 * mode result in a 0 return value
333 */
334 static int64_t AddOpMode(RobotMode mode, std::string_view name,
335 std::string_view group, std::string_view description,
336 const wpi::util::Color& textColor,
337 const wpi::util::Color& backgroundColor);
338
339 /**
340 * Adds an operating mode option. It's necessary to call PublishOpModes() to
341 * make the added modes visible to the driver station.
342 *
343 * @param mode robot mode
344 * @param name name of the operating mode
345 * @param group group of the operating mode
346 * @param description description of the operating mode
347 * @return unique ID used to later identify the operating mode; if a blank
348 * name is passed, 0 is returned; identical names for the same robot
349 * mode result in a 0 return value
350 */
351 static int64_t AddOpMode(RobotMode mode, std::string_view name,
352 std::string_view group = {},
353 std::string_view description = {});
354
355 /**
356 * Removes an operating mode option. It's necessary to call PublishOpModes()
357 * to make the removed mode no longer visible to the driver station.
358 *
359 * @param mode robot mode
360 * @param name name of the operating mode
361 * @return unique ID for the opmode, or 0 if not found
362 */
363 static int64_t RemoveOpMode(RobotMode mode, std::string_view name);
364
365 /**
366 * Publishes the operating mode options to the driver station.
367 */
368 static void PublishOpModes();
369
370 /**
371 * Clears all operating mode options and publishes an empty list to the driver
372 * station.
373 */
374 static void ClearOpModes();
375
376 /**
377 * Sets the program starting flag in the DS. This will also allow
378 * getOpModeId() and getOpMode() to return values for the selected
379 * OpMode in the DS application, if the DS is connected by the time this
380 * method is called.
381 *
382 * <p>Most users will not need to use this method; the TimedRobot and
383 * OpModeRobot robot framework classes will call it automatically after
384 * the main robot class is instantiated.
385 *
386 * <p>This is what changes the DS to showing robot code ready.
387 */
389
390 /**
391 * Gets the operating mode selected on the driver station. Note this does not
392 * mean the robot is enabled; use IsEnabled() for that. In a match, this will
393 * indicate the operating mode selected for auto before the match starts
394 * (i.e., while the robot is disabled in auto mode); after the auto period
395 * ends, this will change to reflect the operating mode selected for teleop.
396 *
397 * @return the unique ID provided by the AddOpMode() function; may return 0 or
398 * a unique ID not added, so callers should be prepared to handle that case
399 */
400 static int64_t GetOpModeId();
401
402 /**
403 * Gets the operating mode selected on the driver station. Note this does not
404 * mean the robot is enabled; use IsEnabled() for that. In a match, this will
405 * indicate the operating mode selected for auto before the match starts
406 * (i.e., while the robot is disabled in auto mode); after the auto period
407 * ends, this will change to reflect the operating mode selected for teleop.
408 *
409 * @return Operating mode string; may return a string not in the list of
410 * options, so callers should be prepared to handle that case
411 */
412 static std::string GetOpMode();
413
414 /**
415 * Check to see if the selected operating mode is a particular value. Note
416 * this does not mean the robot is enabled; use IsEnabled() for that.
417 *
418 * @param id operating mode unique ID
419 * @return True if that mode is the current mode
420 */
421 static bool IsOpMode(int64_t id) { return GetOpModeId() == id; }
422
423 /**
424 * Check to see if the selected operating mode is a particular value. Note
425 * this does not mean the robot is enabled; use IsEnabled() for that.
426 *
427 * @param mode operating mode
428 * @return True if that mode is the current mode
429 */
430 static bool IsOpMode(std::string_view mode) { return GetOpMode() == mode; }
431
432 /**
433 * Check if the DS is attached.
434 *
435 * @return True if the DS is connected to the robot
436 */
437 static bool IsDSAttached() { return GetControlWord().IsDSAttached(); }
438
439 /**
440 * Is the driver station attached to a Field Management System?
441 *
442 * @return True if the robot is competing on a field being controlled by a
443 * Field Management System
444 */
445 static bool IsFMSAttached() { return GetControlWord().IsFMSAttached(); }
446
447 /**
448 * Returns the game specific message provided by the FMS.
449 *
450 * If the FMS is not connected, it is set from the game data setting on the
451 * driver station.
452 *
453 * @return A string containing the game specific message.
454 */
455 static std::optional<std::string> GetGameData();
456
457 /**
458 * Returns the name of the competition event provided by the FMS.
459 *
460 * @return A string containing the event name
461 */
462 static std::string GetEventName();
463
464 /**
465 * Returns the type of match being played provided by the FMS.
466 *
467 * @return The match type enum (kNone, kPractice, kQualification,
468 * kElimination)
469 */
471
472 /**
473 * Returns the match number provided by the FMS.
474 *
475 * @return The number of the match
476 */
477 static int GetMatchNumber();
478
479 /**
480 * Returns the number of times the current match has been replayed from the
481 * FMS.
482 *
483 * @return The number of replays
484 */
485 static int GetReplayNumber();
486
487 /**
488 * Get the current alliance from the FMS.
489 *
490 * If the FMS is not connected, it is set from the team alliance setting on
491 * the driver station.
492 *
493 * @return The alliance (red or blue) or an empty optional if the alliance is
494 * invalid
495 */
496 static std::optional<Alliance> GetAlliance();
497
498 /**
499 * Return the driver station location from the FMS.
500 *
501 * If the FMS is not connected, it is set from the team alliance setting on
502 * the driver station.
503 *
504 * This could return 1, 2, or 3.
505 *
506 * @return The location of the driver station (1-3, 0 for invalid)
507 */
508 static std::optional<int> GetLocation();
509
510 /**
511 * Return the approximate match time. The FMS does not send an official match
512 * time to the robots, but does send an approximate match time. The value will
513 * count down the time remaining in the current period (auto or teleop).
514 * Warning: This is not an official time (so it cannot be used to dispute ref
515 * calls or guarantee that a function will trigger before the match ends).
516 *
517 * <p>When connected to the real field, this number only changes in full
518 * integer increments, and always counts down.
519 *
520 * <p>When the DS is in practice mode, this number is a floating point number,
521 * and counts down.
522 *
523 * <p>When the DS is in teleop or autonomous mode, this number returns -1.0.
524 *
525 * <p>Simulation matches DS behavior without an FMS connected.
526 *
527 * @return Time remaining in current match period (auto or teleop) in seconds
528 */
529 static wpi::units::second_t GetMatchTime();
530
531 /**
532 * Read the battery voltage.
533 *
534 * @return The battery voltage in Volts.
535 */
536 static double GetBatteryVoltage();
537
538 /**
539 * Get the current control word.
540 *
541 * @return control word
542 */
544
545 /**
546 * Copy data from the DS task for the user. If no new data exists, it will
547 * just be returned, otherwise the data will be copied from the DS polling
548 * loop.
549 */
550 static void RefreshData();
551
552 /**
553 * Registers the given handle for DS data refresh notifications.
554 *
555 * @param handle The event handle.
556 */
558
559 /**
560 * Unregisters the given handle from DS data refresh notifications.
561 *
562 * @param handle The event handle.
563 */
565
566 /**
567 * Allows the user to specify whether they want joystick connection warnings
568 * to be printed to the console. This setting is ignored when the FMS is
569 * connected -- warnings will always be on in that scenario.
570 *
571 * @param silence Whether warning messages should be silenced.
572 */
573 static void SilenceJoystickConnectionWarning(bool silence);
574
575 /**
576 * Returns whether joystick connection warnings are silenced. This will
577 * always return false when connected to the FMS.
578 *
579 * @return Whether joystick connection warnings are silenced.
580 */
582
583 /**
584 * Starts logging DriverStation data to data log. Repeated calls are ignored.
585 *
586 * @param log data log
587 * @param logJoysticks if true, log joystick data
588 */
589 static void StartDataLog(wpi::log::DataLog& log, bool logJoysticks = true);
590
591 private:
592 DriverStationBackend() = default;
593};
594
595} // namespace wpi::internal
WPI_Handle WPI_EventHandle
An event handle.
Definition Synchronization.h:18
@ name
Definition base.h:690
A wrapper around Driver Station control word.
Definition DriverStationTypes.hpp:29
bool IsTeleopEnabled() const
Check if the DS is commanding teleop mode and if it has enabled the robot.
Definition DriverStationTypes.hpp:172
bool IsEnabled() const
Check if the DS has enabled the robot.
Definition DriverStationTypes.hpp:91
RobotMode GetRobotMode() const
Gets the current robot mode.
Definition DriverStationTypes.hpp:101
bool IsUtility() const
Check if the DS is commanding utility mode.
Definition DriverStationTypes.hpp:181
bool IsAutonomousEnabled() const
Check if the DS is commanding autonomous mode and if it has enabled the robot.
Definition DriverStationTypes.hpp:155
bool IsAutonomous() const
Check if the DS is commanding autonomous mode.
Definition DriverStationTypes.hpp:146
bool IsDSAttached() const
Check if the DS is attached.
Definition DriverStationTypes.hpp:139
bool IsFMSAttached() const
Is the driver station attached to a Field Management System?
Definition DriverStationTypes.hpp:132
bool IsEStopped() const
Check if the robot is e-stopped.
Definition DriverStationTypes.hpp:124
bool IsUtilityEnabled() const
Check if the DS is commanding utility mode and if it has enabled the robot.
Definition DriverStationTypes.hpp:189
bool IsTeleop() const
Check if the DS is commanding teleop mode.
Definition DriverStationTypes.hpp:164
static bool IsDisabled()
Check if the robot is disabled.
Definition DriverStationBackend.hpp:253
static RobotMode GetRobotMode()
Gets the current robot mode.
Definition DriverStationBackend.hpp:270
static bool GetJoystickIsGamepad(int stick)
Returns a boolean indicating if the controller is an xbox controller.
static bool IsEStopped()
Check if the robot is e-stopped.
Definition DriverStationBackend.hpp:260
static bool IsAutonomous()
Check if the DS is commanding autonomous mode.
Definition DriverStationBackend.hpp:277
static int GetStickButtonsMaximumIndex(int stick)
Returns the maximum button index on a given joystick port.
static bool GetStickButtonReleased(int stick, int button)
Whether one joystick button was released since the last check.
static uint64_t GetStickButtons(int stick)
The state of the buttons on the joystick.
static bool IsTeleop()
Check if the DS is commanding teleop mode.
Definition DriverStationBackend.hpp:295
static int64_t AddOpMode(RobotMode mode, std::string_view name, std::string_view group, std::string_view description, const wpi::util::Color &textColor, const wpi::util::Color &backgroundColor)
Adds an operating mode option.
static std::string GetEventName()
Returns the name of the competition event provided by the FMS.
static bool IsUtility()
Check if the DS is commanding utility mode.
Definition DriverStationBackend.hpp:310
static int GetReplayNumber()
Returns the number of times the current match has been replayed from the FMS.
static std::string GetJoystickName(int stick)
Returns the name of the joystick at the given port.
static TouchpadFinger GetStickTouchpadFinger(int stick, int touchpad, int finger)
Get the finger data of a touchpad on a joystick, if available.
static int GetStickAxesAvailable(int stick)
Returns the mask of available axes on a given joystick port.
static void ObserveUserProgramStarting()
Sets the program starting flag in the DS.
static constexpr int JOYSTICK_PORTS
Number of Joystick ports.
Definition DriverStationBackend.hpp:42
static bool IsTeleopEnabled()
Check if the DS is commanding teleop mode and if it has enabled the robot.
Definition DriverStationBackend.hpp:303
static bool IsEnabled()
Check if the DS has enabled the robot.
Definition DriverStationBackend.hpp:243
static std::optional< std::string > GetGameData()
Returns the game specific message provided by the FMS.
static int GetJoystickGamepadType(int stick)
Returns the type of joystick at a given port.
static double GetStickAxis(int stick, int axis)
Get the value of the axis on a joystick.
static bool GetStickTouchpadFingerAvailable(int stick, int touchpad, int finger)
Whether a finger on a touchpad is available.
static bool GetStickButton(int stick, int button)
The state of one joystick button.
static int GetMatchNumber()
Returns the match number provided by the FMS.
static void StartDataLog(wpi::log::DataLog &log, bool logJoysticks=true)
Starts logging DriverStation data to data log.
static bool IsJoystickConnected(int stick)
Returns if a joystick is connected to the Driver Station.
static std::optional< int > GetLocation()
Return the driver station location from the FMS.
static int64_t GetOpModeId()
Gets the operating mode selected on the driver station.
static void ProvideRefreshedDataEventHandle(WPI_EventHandle handle)
Registers the given handle for DS data refresh notifications.
static std::optional< double > GetStickAxisIfAvailable(int stick, int axis)
Get the value of the axis on a joystick, if available.
static int64_t RemoveOpMode(RobotMode mode, std::string_view name)
Removes an operating mode option.
static bool IsUtilityEnabled()
Check if the DS is commanding Utility mode and if it has enabled the robot.
Definition DriverStationBackend.hpp:318
static std::string GetOpMode()
Gets the operating mode selected on the driver station.
static int GetStickAxesMaximumIndex(int stick)
Returns the maximum axis index on a given joystick port.
static bool GetStickButtonPressed(int stick, int button)
Whether one joystick button was pressed since the last check.
static void ClearOpModes()
Clears all operating mode options and publishes an empty list to the driver station.
static bool IsOpMode(int64_t id)
Check to see if the selected operating mode is a particular value.
Definition DriverStationBackend.hpp:421
static bool IsJoystickConnectionWarningSilenced()
Returns whether joystick connection warnings are silenced.
static wpi::units::second_t GetMatchTime()
Return the approximate match time.
static bool IsFMSAttached()
Is the driver station attached to a Field Management System?
Definition DriverStationBackend.hpp:445
static bool IsOpMode(std::string_view mode)
Check to see if the selected operating mode is a particular value.
Definition DriverStationBackend.hpp:430
static void SilenceJoystickConnectionWarning(bool silence)
Allows the user to specify whether they want joystick connection warnings to be printed to the consol...
static double GetBatteryVoltage()
Read the battery voltage.
static int GetStickPOVsAvailable(int stick)
Returns the mask of available POVs on a given joystick port.
static std::optional< Alliance > GetAlliance()
Get the current alliance from the FMS.
static int GetStickPOVsMaximumIndex(int stick)
Returns the maximum POV index on a given joystick port.
static int64_t AddOpMode(RobotMode mode, std::string_view name, std::string_view group={}, std::string_view description={})
Adds an operating mode option.
static uint64_t GetStickButtonsAvailable(int stick)
Returns the mask of available buttons on a given joystick port.
static bool IsAutonomousEnabled()
Check if the DS is commanding autonomous mode and if it has enabled the robot.
Definition DriverStationBackend.hpp:286
static void PublishOpModes()
Publishes the operating mode options to the driver station.
static hal::ControlWord GetControlWord()
Get the current control word.
Definition DriverStationBackend.hpp:543
static void RemoveRefreshedDataEventHandle(WPI_EventHandle handle)
Unregisters the given handle from DS data refresh notifications.
static void RefreshData()
Copy data from the DS task for the user.
static bool IsDSAttached()
Check if the DS is attached.
Definition DriverStationBackend.hpp:437
static int GetJoystickSupportedOutputs(int stick)
Returns the number of outputs supported by the joystick at the given port.
static POVDirection GetStickPOV(int stick, int pov)
Get the state of a POV on the joystick.
static std::optional< bool > GetStickButtonIfAvailable(int stick, int button)
The state of one joystick button, only if available.
static MatchType GetMatchType()
Returns the type of match being played provided by the FMS.
A data log for high-speed writing of data values.
Definition DataLog.hpp:69
Represents colors that can be used with Addressable LEDs.
Definition Color.hpp:42
Locale::id format_facet< Locale >::id
Definition format-inl.h:148
RobotMode
The overall robot mode (not including enabled state).
Definition DriverStationTypes.hpp:15
ControlWord GetControlWord()
Definition DriverStation.hpp:11
Definition DriverStationModeThread.hpp:13
Definition DataLogReader.hpp:17
Definition raw_os_ostream.hpp:19
POVDirection
A controller POV direction.
Definition POVDirection.hpp:18
MatchType
The type of robot match that the robot is part of.
Definition MatchType.hpp:12
Touchpad finger data from a joystick.
Definition TouchpadFinger.hpp:12