/*----------------------------------------------------------------------------*/ /* Copyright (c) 2018 FIRST. All Rights Reserved. */ /* Open Source Software - may be modified and shared by FRC teams. The code */ /* must be accompanied by the FIRST BSD license file in the root directory of */ /* the project. */ /*----------------------------------------------------------------------------*/ #pragma once #include "frc/shuffleboard/WidgetType.h" namespace frc { /** * The types of the widgets bundled with Shuffleboard. * *

For example, setting a number to be displayed with a slider: *

{@code
 * NetworkTableEntry example = Shuffleboard.getTab("My Tab")
 *   .add("My Number", 0)
 *   .withWidget(BuiltInWidgets.kNumberSlider)
 *   .getEntry();
 * }
* *

Each value in this enum goes into detail on what data types that widget * can support, as well as the custom properties that widget uses. */ enum class BuiltInWidgets { /** * Displays a value with a simple text field. *
Supported types: *

*
This widget has no custom properties. */ kTextView, /** * Displays a number with a controllable slider. *
Supported types: * *
Custom properties: * * * *
NameTypeDefault ValueNotes
MinNumber-1.0The minimum value of the * slider
MaxNumber1.0The maximum * value of the slider
Block * incrementNumber0.0625 How much to move the * slider by with the arrow keys
*/ kNumberSlider, /** * Displays a number with a view-only bar. *
Supported types: * *
Custom properties: * * * * *
NameTypeDefault ValueNotes
MinNumber-1.0The minimum value of the * bar
MaxNumber1.0The maximum * value of the bar
CenterNumber0The center ("zero") value * of the bar
*/ kNumberBar, /** * Displays a number with a view-only dial. Displayed values are rounded to * the nearest integer.
Supported types: *
Custom properties: * * * *
NameTypeDefault ValueNotes
MinNumber0The minimum value of the * dial
MaxNumber100The maximum * value of the dial
Show * valueBooleantrue Whether or not to show the * value as text
*/ kDial, /** * Displays a number with a graph. NOTE: graphs can be taxing * on the computer running the dashboard. Keep the number of visible data * points to a minimum. Making the widget smaller also helps with performance, * but may cause the graph to become difficult to read.
Supported types: * *
Custom properties: * * * * *
NameTypeDefault ValueNotes
Visible timeNumber30How long, in seconds, should past data be visible for
*/ kGraph, /** * Displays a boolean value as a large colored box. *
Supported types: * *
Custom properties: * * * * * * *
NameTypeDefault ValueNotes
Color when trueColor"green"Can be specified as a string ({@code "#00FF00"}) or a rgba integer * ({@code 0x00FF0000}) *
Color when falseColor"red"Can be specified as a string or a number
*/ kBooleanBox, /** * Displays a boolean with a large interactive toggle button. *
Supported types: * *
This widget has no custom properties. */ kToggleButton, /** * Displays a boolean with a fixed-size toggle switch. *
Supported types: * *
This widget has no custom properties. */ kToggleSwitch, /** * Displays an analog input or a raw number with a number bar. *
Supported types: * *
Custom properties: * * * * * * *
NameTypeDefault ValueNotes
MinNumber0The minimum value of the * bar
MaxNumber5The maximum * value of the bar
CenterNumber0The center ("zero") value * of the bar
OrientationString"HORIZONTAL"The orientation of the bar. One of {@code ["HORIZONTAL", * "VERTICAL"]}
Number of tick * marksNumber5 The number of discrete ticks on the * bar
*/ kVoltageView, /** * Displays a {@link edu.wpi.first.wpilibj.PowerDistributionPanel * PowerDistributionPanel}.
Supported types: *
Custom properties: * * * * *
NameTypeDefault ValueNotes
Show voltage and current valuesBooleantrueWhether or not to display the voltage and current draw
*/ kPowerDistributionPanel, /** * Displays a {@link edu.wpi.first.wpilibj.smartdashboard.SendableChooser * SendableChooser} with a dropdown combo box with a list of options. *
Supported types: * *
This widget has no custom properties. */ kComboBoxChooser, /** * Displays a {@link edu.wpi.first.wpilibj.smartdashboard.SendableChooser * SendableChooser} with a toggle button for each available option. *
Supported types: * *
This widget has no custom properties. */ kSplitButtonChooser, /** * Displays an {@link edu.wpi.first.wpilibj.Encoder} displaying its speed, * total travelled distance, and its distance per tick.
Supported types: * *
This widget has no custom properties. */ kEncoder, /** * Displays a {@link edu.wpi.first.wpilibj.SpeedController SpeedController}. * The speed controller will be controllable from the dashboard when test mode * is enabled, but will otherwise be view-only.
Supported types: *
Custom properties: * * * * *
NameTypeDefault ValueNotes
OrientationString"HORIZONTAL"One of {@code ["HORIZONTAL", "VERTICAL"]}
*/ kSpeedController, /** * Displays a command with a toggle button. Pressing the button will start the * command, and the button will automatically release when the command * completes.
Supported types: *
This widget has no custom properties. */ kCommand, /** * Displays a PID command with a checkbox and an editor for the PIDF * constants. Selecting the checkbox will start the command, and the checkbox * will automatically deselect when the command completes.
Supported * types: *
This widget has no custom properties. */ kPIDCommand, /** * Displays a PID controller with an editor for the PIDF constants and a * toggle switch for enabling and disabling the controller.
Supported * types: *
This widget has no custom properties. */ kPIDController, /** * Displays an accelerometer with a number bar displaying the magnitude of the * acceleration and text displaying the exact value.
Supported types: *
Custom properties: * * * * * * * * * * * * *
NameTypeDefault ValueNotes
MinNumber-1The minimum acceleration value to display
MaxNumber1The maximum acceleration value to display
Show textBooleantrueShow or hide the acceleration values
PrecisionNumber2How many numbers to display after the decimal point
Show tick marksBooleanfalseShow or hide the tick marks on the number bars
*/ kAccelerometer, /** * Displays a 3-axis accelerometer with a number bar for each axis' * accleration.
Supported types: *
Custom properties: * * * * * * * * *
NameTypeDefault ValueNotes
Range{@link Range}k16GThe accelerometer * range
Show valueBooleantrueShow or hide the acceleration values
PrecisionNumber2How many numbers to display after the decimal point
Show tick marksBooleanfalseShow or hide the tick marks on the number bars
*/ k3AxisAccelerometer, /** * Displays a gyro with a dial from 0 to 360 degrees. *
Supported types: * *
Custom properties: * * * * * * *
NameTypeDefault ValueNotes
Major tick * spacingNumber45Degrees
Starting angleNumber180How far to rotate the entire dial, in degrees
Show tick mark ringBooleantrue
*/ kGyro, /** * Displays a relay with toggle buttons for each supported mode (off, on, * forward, reverse).
Supported types: *
This widget has no custom properties. */ kRelay, /** * Displays a differential drive with a widget that displays the speed of each * side of the drivebase and a vector for the direction and rotation of the * drivebase. The widget will be controllable if the robot is in test mode. *
Supported types: * *
Custom properties: * * * * * *
NameTypeDefault ValueNotes
Number of wheelsNumber4Must be a * positive even integer *
Wheel diameterNumber80Pixels
Show velocity vectorsBooleantrue
*/ kDifferentialDrive, /** * Displays a mecanum drive with a widget that displays the speed of each * wheel, and vectors for the direction and rotation of the drivebase. The * widget will be controllable if the robot is in test mode.
Supported * types: *
Custom properties: * * * *
NameTypeDefault ValueNotes
Show velocity vectorsBooleantrue
*/ kMecanumDrive, /** * Displays a camera stream. *
Supported types: * *
Custom properties: * * * * * * * * * *
NameTypeDefault ValueNotes
Show crosshairBooleantrueShow or hide a crosshair on the image
Crosshair colorColor"white"Can be a string or a rgba integer
Show controlsBooleantrueShow or hide the * stream controls *
RotationString"NONE"Rotates the displayed image. One of {@code ["NONE", "QUARTER_CW", * "QUARTER_CCW", "HALF"]} *
*/ kCameraStream }; } // namespace frc