WPILibC++ 2023.4.3-108-ge5452e3
|
Hardware Abstraction Layer (HAL) to hardware or simulator. More...
Enumerations | |
enum | HAL_RuntimeType : int32_t { HAL_Runtime_RoboRIO , HAL_Runtime_RoboRIO2 , HAL_Runtime_Simulation } |
Functions | |
const char * | HAL_GetLastError (int32_t *status) |
Gets the last error set on this thread, or the message for the status code. More... | |
const char * | HAL_GetErrorMessage (int32_t code) |
Gets the error message for a specific status code. More... | |
int32_t | HAL_GetFPGAVersion (int32_t *status) |
Returns the FPGA Version number. More... | |
int64_t | HAL_GetFPGARevision (int32_t *status) |
Returns the FPGA Revision number. More... | |
size_t | HAL_GetSerialNumber (char *buffer, size_t size) |
Returns the roboRIO serial number. More... | |
size_t | HAL_GetComments (char *buffer, size_t size) |
Returns the comments from the roboRIO web interface. More... | |
HAL_RuntimeType | HAL_GetRuntimeType (void) |
Returns the runtime type of the HAL. More... | |
HAL_Bool | HAL_GetFPGAButton (int32_t *status) |
Gets the state of the "USER" button on the roboRIO. More... | |
HAL_Bool | HAL_GetSystemActive (int32_t *status) |
Gets if the system outputs are currently active. More... | |
HAL_Bool | HAL_GetBrownedOut (int32_t *status) |
Gets if the system is in a browned out state. More... | |
HAL_PortHandle | HAL_GetPort (int32_t channel) |
Gets a port handle for a specific channel. More... | |
HAL_PortHandle | HAL_GetPortWithModule (int32_t module, int32_t channel) |
Gets a port handle for a specific channel and module. More... | |
uint64_t | HAL_GetFPGATime (int32_t *status) |
Reads the microsecond-resolution timer on the FPGA. More... | |
uint64_t | HAL_ExpandFPGATime (uint32_t unexpandedLower, int32_t *status) |
Given an 32 bit FPGA time, expand it to the nearest likely 64 bit FPGA time. More... | |
HAL_Bool | HAL_GetRSLState (int32_t *status) |
Gets the current state of the Robot Signal Light (RSL). More... | |
HAL_Bool | HAL_Initialize (int32_t timeout, int32_t mode) |
Call this to start up HAL. More... | |
void | HAL_Shutdown (void) |
Call this to shut down HAL. More... | |
void | HAL_SimPeriodicBefore (void) |
Calls registered SimPeriodic "before" callbacks (only in simulation mode). More... | |
void | HAL_SimPeriodicAfter (void) |
Calls registered SimPeriodic "after" callbacks (only in simulation mode). More... | |
Hardware Abstraction Layer (HAL) to hardware or simulator.
enum HAL_RuntimeType : int32_t |
uint64_t HAL_ExpandFPGATime | ( | uint32_t | unexpandedLower, |
int32_t * | status | ||
) |
Given an 32 bit FPGA time, expand it to the nearest likely 64 bit FPGA time.
Note: This is making the assumption that the timestamp being converted is always in the past. If you call this with a future timestamp, it probably will make it in the past. If you wait over 70 minutes between capturing the bottom 32 bits of the timestamp and expanding it, you will be off by multiples of 1<<32 microseconds.
[in] | unexpandedLower | 32 bit FPGA time |
[out] | status | the error code, or 0 for success |
HAL_Bool HAL_GetBrownedOut | ( | int32_t * | status | ) |
Gets if the system is in a browned out state.
[out] | status | the error code, or 0 for success |
size_t HAL_GetComments | ( | char * | buffer, |
size_t | size | ||
) |
Returns the comments from the roboRIO web interface.
[out] | buffer | The comments string. |
size | The maximum characters to copy into buffer. |
const char * HAL_GetErrorMessage | ( | int32_t | code | ) |
Gets the error message for a specific status code.
code | the status code |
HAL_Bool HAL_GetFPGAButton | ( | int32_t * | status | ) |
Gets the state of the "USER" button on the roboRIO.
[out] | status | the error code, or 0 for success |
int64_t HAL_GetFPGARevision | ( | int32_t * | status | ) |
Returns the FPGA Revision number.
The format of the revision is 3 numbers. The 12 most significant bits are the Major Revision. the next 8 bits are the Minor Revision. The 12 least significant bits are the Build Number.
[out] | status | the error code, or 0 for success |
uint64_t HAL_GetFPGATime | ( | int32_t * | status | ) |
Reads the microsecond-resolution timer on the FPGA.
[out] | status | the error code, or 0 for success |
int32_t HAL_GetFPGAVersion | ( | int32_t * | status | ) |
Returns the FPGA Version number.
For now, expect this to be competition year.
[out] | status | the error code, or 0 for success |
const char * HAL_GetLastError | ( | int32_t * | status | ) |
Gets the last error set on this thread, or the message for the status code.
If passed HAL_USE_LAST_ERROR, the last error set on the thread will be returned.
[out] | status | the status code, set to the error status code if input is HAL_USE_LAST_ERROR |
HAL_PortHandle HAL_GetPort | ( | int32_t | channel | ) |
Gets a port handle for a specific channel.
The created handle does not need to be freed.
channel | the channel number |
HAL_PortHandle HAL_GetPortWithModule | ( | int32_t | module, |
int32_t | channel | ||
) |
Gets a port handle for a specific channel and module.
This is expected to be used for PCMs, as the roboRIO does not work with modules anymore.
The created handle does not need to be freed.
module | the module number |
channel | the channel number |
HAL_Bool HAL_GetRSLState | ( | int32_t * | status | ) |
Gets the current state of the Robot Signal Light (RSL).
[out] | status | the error code, or 0 for success |
HAL_RuntimeType HAL_GetRuntimeType | ( | void | ) |
Returns the runtime type of the HAL.
size_t HAL_GetSerialNumber | ( | char * | buffer, |
size_t | size | ||
) |
Returns the roboRIO serial number.
[out] | buffer | The roboRIO serial number. |
size | The maximum characters to copy into buffer. |
HAL_Bool HAL_GetSystemActive | ( | int32_t * | status | ) |
Gets if the system outputs are currently active.
[out] | status | the error code, or 0 for success |
HAL_Bool HAL_Initialize | ( | int32_t | timeout, |
int32_t | mode | ||
) |
Call this to start up HAL.
This is required for robot programs.
This must be called before any other HAL functions. Failure to do so will result in undefined behavior, and likely segmentation faults. This means that any statically initialized variables in a program MUST call this function in their constructors if they want to use other HAL calls.
The common parameters are 500 for timeout and 0 for mode.
This function is safe to call from any thread, and as many times as you wish. It internally guards from any reentrancy.
The applicable modes are: 0: Try to kill an existing HAL from another program, if not successful, error. 1: Force kill a HAL from another program. 2: Just warn if another hal exists and cannot be killed. Will likely result in undefined behavior.
timeout | the initialization timeout (ms) |
mode | the initialization mode (see remarks) |
void HAL_Shutdown | ( | void | ) |
Call this to shut down HAL.
This must be called at termination of the robot program to avoid potential segmentation faults with simulation extensions at exit.
void HAL_SimPeriodicAfter | ( | void | ) |
Calls registered SimPeriodic "after" callbacks (only in simulation mode).
This should be called after user code periodic simulation functions.
void HAL_SimPeriodicBefore | ( | void | ) |
Calls registered SimPeriodic "before" callbacks (only in simulation mode).
This should be called prior to user code periodic simulation functions.