WPILibC++  2020.3.2-60-g3011ebe
Driver Station Functions

Classes

struct  HAL_ControlWord
 
struct  HAL_JoystickAxes
 
struct  HAL_JoystickPOVs
 
struct  HAL_JoystickButtons
 
struct  HAL_JoystickDescriptor
 
struct  HAL_MatchInfo
 

Macros

#define HAL_IO_CONFIG_DATA_SIZE   32
 
#define HAL_SYS_STATUS_DATA_SIZE   44
 
#define HAL_USER_STATUS_DATA_SIZE   (984 - HAL_IO_CONFIG_DATA_SIZE - HAL_SYS_STATUS_DATA_SIZE)
 
#define HALFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input   17
 
#define HALFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output   18
 
#define HALFRC_NetworkCommunication_DynamicType_Kinect_Header   19
 
#define HALFRC_NetworkCommunication_DynamicType_Kinect_Extra1   20
 
#define HALFRC_NetworkCommunication_DynamicType_Kinect_Vertices1   21
 
#define HALFRC_NetworkCommunication_DynamicType_Kinect_Extra2   22
 
#define HALFRC_NetworkCommunication_DynamicType_Kinect_Vertices2   23
 
#define HALFRC_NetworkCommunication_DynamicType_Kinect_Joystick   24
 
#define HALFRC_NetworkCommunication_DynamicType_Kinect_Custom   25
 
#define HAL_kMaxJoystickAxes   12
 
#define HAL_kMaxJoystickPOVs   12
 
#define HAL_kMaxJoysticks   6
 

Typedefs

typedef struct HAL_ControlWord HAL_ControlWord
 
typedef struct HAL_JoystickAxes HAL_JoystickAxes
 
typedef struct HAL_JoystickPOVs HAL_JoystickPOVs
 
typedef struct HAL_JoystickButtons HAL_JoystickButtons
 
typedef struct HAL_JoystickDescriptor HAL_JoystickDescriptor
 
typedef struct HAL_MatchInfo HAL_MatchInfo
 

Functions

 HAL_ENUM (HAL_AllianceStationID)
 
 HAL_ENUM (HAL_MatchType)
 
int32_t HAL_SendError (HAL_Bool isError, int32_t errorCode, HAL_Bool isLVCode, const char *details, const char *location, const char *callStack, HAL_Bool printMsg)
 Sends an error to the driver station. More...
 
int32_t HAL_SendConsoleLine (const char *line)
 Sends a line to the driver station console. More...
 
int32_t HAL_GetControlWord (HAL_ControlWord *controlWord)
 Gets the current control word of the driver station. More...
 
HAL_AllianceStationID HAL_GetAllianceStation (int32_t *status)
 Gets the current alliance station ID. More...
 
int32_t HAL_GetJoystickAxes (int32_t joystickNum, HAL_JoystickAxes *axes)
 Gets the axes of a specific joystick. More...
 
int32_t HAL_GetJoystickPOVs (int32_t joystickNum, HAL_JoystickPOVs *povs)
 Gets the POVs of a specific joystick. More...
 
int32_t HAL_GetJoystickButtons (int32_t joystickNum, HAL_JoystickButtons *buttons)
 Gets the buttons of a specific joystick. More...
 
int32_t HAL_GetJoystickDescriptor (int32_t joystickNum, HAL_JoystickDescriptor *desc)
 Retrieves the Joystick Descriptor for particular slot. More...
 
HAL_Bool HAL_GetJoystickIsXbox (int32_t joystickNum)
 Gets is a specific joystick is considered to be an XBox controller. More...
 
int32_t HAL_GetJoystickType (int32_t joystickNum)
 Gets the type of joystick connected. More...
 
char * HAL_GetJoystickName (int32_t joystickNum)
 Gets the name of a joystick. More...
 
void HAL_FreeJoystickName (char *name)
 Frees a joystick name received with HAL_GetJoystickName. More...
 
int32_t HAL_GetJoystickAxisType (int32_t joystickNum, int32_t axis)
 Gets the type of a specific joystick axis. More...
 
int32_t HAL_SetJoystickOutputs (int32_t joystickNum, int64_t outputs, int32_t leftRumble, int32_t rightRumble)
 Set joystick outputs. More...
 
double HAL_GetMatchTime (int32_t *status)
 Returns the approximate match time. More...
 
int32_t HAL_GetMatchInfo (HAL_MatchInfo *info)
 Gets info about a specific match. More...
 
void HAL_ReleaseDSMutex (void)
 Releases the DS Mutex to allow proper shutdown of any threads that are waiting on it.
 
void HAL_WaitForCachedControlData (void)
 Checks if new control data has arrived since the last HAL_WaitForCachedControlData or HAL_IsNewControlData call. More...
 
HAL_Bool HAL_WaitForCachedControlDataTimeout (double timeout)
 Checks if new control data has arrived since the last HAL_WaitForCachedControlData or HAL_IsNewControlData call. More...
 
HAL_Bool HAL_IsNewControlData (void)
 Has a new control packet from the driver station arrived since the last time this function was called? More...
 
void HAL_WaitForDSData (void)
 Waits for the newest DS packet to arrive. More...
 
HAL_Bool HAL_WaitForDSDataTimeout (double timeout)
 Waits for the newest DS packet to arrive. More...
 
void HAL_InitializeDriverStation (void)
 Initializes the driver station communication. More...
 
void HAL_ObserveUserProgramStarting (void)
 Sets the program starting flag in the DS. More...
 
void HAL_ObserveUserProgramDisabled (void)
 Sets the disabled flag in the DS. More...
 
void HAL_ObserveUserProgramAutonomous (void)
 Sets the autonomous enabled flag in the DS. More...
 
void HAL_ObserveUserProgramTeleop (void)
 Sets the teleoperated enabled flag in the DS. More...
 
void HAL_ObserveUserProgramTest (void)
 Sets the test mode flag in the DS. More...
 

Detailed Description

Function Documentation

◆ HAL_FreeJoystickName()

void HAL_FreeJoystickName ( char *  name)

Frees a joystick name received with HAL_GetJoystickName.

Parameters
namethe name storage

◆ HAL_GetAllianceStation()

HAL_AllianceStationID HAL_GetAllianceStation ( int32_t *  status)

Gets the current alliance station ID.

Parameters
statusthe error code, or 0 for success
Returns
the alliance station ID

◆ HAL_GetControlWord()

int32_t HAL_GetControlWord ( HAL_ControlWord controlWord)

Gets the current control word of the driver station.

The control work contains the robot state.

Parameters
controlWordthe control word (out)
Returns
the error code, or 0 for success

◆ HAL_GetJoystickAxes()

int32_t HAL_GetJoystickAxes ( int32_t  joystickNum,
HAL_JoystickAxes axes 
)

Gets the axes of a specific joystick.

Parameters
joystickNumthe joystick number
axesthe axes values (output)
Returns
the error code, or 0 for success

◆ HAL_GetJoystickAxisType()

int32_t HAL_GetJoystickAxisType ( int32_t  joystickNum,
int32_t  axis 
)

Gets the type of a specific joystick axis.

This is device specific, and different depending on what system input type the joystick uses.

Parameters
joystickNumthe joystick number
axisthe axis number
Returns
the enumerated axis type

◆ HAL_GetJoystickButtons()

int32_t HAL_GetJoystickButtons ( int32_t  joystickNum,
HAL_JoystickButtons buttons 
)

Gets the buttons of a specific joystick.

Parameters
joystickNumthe joystick number
buttonsthe button values (output)
Returns
the error code, or 0 for success

◆ HAL_GetJoystickDescriptor()

int32_t HAL_GetJoystickDescriptor ( int32_t  joystickNum,
HAL_JoystickDescriptor desc 
)

Retrieves the Joystick Descriptor for particular slot.

Parameters
desc[out] descriptor (data transfer object) to fill in. desc is filled in regardless of success. In other words, if descriptor is not available, desc is filled in with default values matching the init-values in Java and C++ Driverstation for when caller requests a too-large joystick index.
Returns
error code reported from Network Comm back-end. Zero is good, nonzero is bad.

◆ HAL_GetJoystickIsXbox()

HAL_Bool HAL_GetJoystickIsXbox ( int32_t  joystickNum)

Gets is a specific joystick is considered to be an XBox controller.

Parameters
joystickNumthe joystick number
Returns
true if xbox, false otherwise

◆ HAL_GetJoystickName()

char* HAL_GetJoystickName ( int32_t  joystickNum)

Gets the name of a joystick.

The returned array must be freed with HAL_FreeJoystickName.

Will be null terminated.

Parameters
joystickNumthe joystick number
Returns
the joystick name

◆ HAL_GetJoystickPOVs()

int32_t HAL_GetJoystickPOVs ( int32_t  joystickNum,
HAL_JoystickPOVs povs 
)

Gets the POVs of a specific joystick.

Parameters
joystickNumthe joystick number
povsthe POV values (output)
Returns
the error code, or 0 for success

◆ HAL_GetJoystickType()

int32_t HAL_GetJoystickType ( int32_t  joystickNum)

Gets the type of joystick connected.

This is device specific, and different depending on what system input type the joystick uses.

Parameters
joystickNumthe joystick number
Returns
the enumerated joystick type

◆ HAL_GetMatchInfo()

int32_t HAL_GetMatchInfo ( HAL_MatchInfo info)

Gets info about a specific match.

Parameters
infothe match info (output)
Returns
the error code, or 0 for success

◆ HAL_GetMatchTime()

double HAL_GetMatchTime ( int32_t *  status)

Returns the approximate match time.

The FMS does not send an official match time to the robots, but does send an approximate match time. The value will count down the time remaining in the current period (auto or teleop).

Warning: This is not an official time (so it cannot be used to dispute ref calls or guarantee that a function will trigger before the match ends).

The Practice Match function of the DS approximates the behaviour seen on the field.

Parameters
statusthe error code, or 0 for success
Returns
time remaining in current match period (auto or teleop)

◆ HAL_InitializeDriverStation()

void HAL_InitializeDriverStation ( void  )

Initializes the driver station communication.

This will properly handle multiple calls. However note that this CANNOT be called from a library that interfaces with LabVIEW.

◆ HAL_IsNewControlData()

HAL_Bool HAL_IsNewControlData ( void  )

Has a new control packet from the driver station arrived since the last time this function was called?

Returns
true if the control data has been updated since the last call

◆ HAL_ObserveUserProgramAutonomous()

void HAL_ObserveUserProgramAutonomous ( void  )

Sets the autonomous enabled flag in the DS.

This is used for the DS to ensure the robot is properly responding to its state request. Ensure this get called about every 50ms, or the robot will be disabled by the DS.

◆ HAL_ObserveUserProgramDisabled()

void HAL_ObserveUserProgramDisabled ( void  )

Sets the disabled flag in the DS.

This is used for the DS to ensure the robot is properly responding to its state request. Ensure this get called about every 50ms, or the robot will be disabled by the DS.

◆ HAL_ObserveUserProgramStarting()

void HAL_ObserveUserProgramStarting ( void  )

Sets the program starting flag in the DS.

This is what changes the DS to showing robot code ready.

◆ HAL_ObserveUserProgramTeleop()

void HAL_ObserveUserProgramTeleop ( void  )

Sets the teleoperated enabled flag in the DS.

This is used for the DS to ensure the robot is properly responding to its state request. Ensure this get called about every 50ms, or the robot will be disabled by the DS.

◆ HAL_ObserveUserProgramTest()

void HAL_ObserveUserProgramTest ( void  )

Sets the test mode flag in the DS.

This is used for the DS to ensure the robot is properly responding to its state request. Ensure this get called about every 50ms, or the robot will be disabled by the DS.

◆ HAL_SendConsoleLine()

int32_t HAL_SendConsoleLine ( const char *  line)

Sends a line to the driver station console.

Parameters
linethe line to send (null terminated)

◆ HAL_SendError()

int32_t HAL_SendError ( HAL_Bool  isError,
int32_t  errorCode,
HAL_Bool  isLVCode,
const char *  details,
const char *  location,
const char *  callStack,
HAL_Bool  printMsg 
)

Sends an error to the driver station.

Parameters
isErrortrue for error, false for warning
errorCodethe error code
isLVCodetrue for a LV error code, false for a standard error code
detailsthe details of the error
locationthe file location of the errror
callstackthe callstack of the error
printMsgtrue to print the error message to stdout as well as to the DS

◆ HAL_SetJoystickOutputs()

int32_t HAL_SetJoystickOutputs ( int32_t  joystickNum,
int64_t  outputs,
int32_t  leftRumble,
int32_t  rightRumble 
)

Set joystick outputs.

Parameters
joystickNumthe joystick numer
outputsbitmask of outputs, 1 for on 0 for off
leftRumblethe left rumble value (0-FFFF)
rightRumblethe right rumble value (0-FFFF)
Returns
the error code, or 0 for success

◆ HAL_WaitForCachedControlData()

void HAL_WaitForCachedControlData ( void  )

Checks if new control data has arrived since the last HAL_WaitForCachedControlData or HAL_IsNewControlData call.

If new data has not arrived, waits for new data to arrive. Otherwise, returns immediately.

◆ HAL_WaitForCachedControlDataTimeout()

HAL_Bool HAL_WaitForCachedControlDataTimeout ( double  timeout)

Checks if new control data has arrived since the last HAL_WaitForCachedControlData or HAL_IsNewControlData call.

If new data has not arrived, waits for new data to arrive, or a timeout. Otherwise, returns immediately.

Parameters
timeouttimeout in seconds
Returns
true for new data, false for timeout

◆ HAL_WaitForDSData()

void HAL_WaitForDSData ( void  )

Waits for the newest DS packet to arrive.

Note that this is a blocking call.

◆ HAL_WaitForDSDataTimeout()

HAL_Bool HAL_WaitForDSDataTimeout ( double  timeout)

Waits for the newest DS packet to arrive.

If timeout is <= 0, this will wait forever. Otherwise, it will wait until either a new packet, or the timeout time has passed.

Parameters
timeouttimeout in seconds
Returns
true for new data, false for timeout