WPILibC++  2020.3.2-60-g3011ebe
hal Namespace Reference

WPILib Hardware Abstraction Layer (HAL) namespace. More...

Classes

class  DigitalHandleResource
 The DigitalHandleResource class is a way to track handles. More...
 
struct  DIOSetProxy
 Proxy class for directly manipulating the DIO pins. More...
 
class  fpga_clock
 A std::chrono compatible wrapper around the FPGA Timer. More...
 
class  HandleBase
 Base for all HAL Handles. More...
 
class  IndexedClassedHandleResource
 The IndexedClassedHandleResource class is a way to track handles. More...
 
class  IndexedHandleResource
 The IndexedHandleResource class is a way to track handles. More...
 
class  LimitedClassedHandleResource
 The LimitedClassedHandleResource class is a way to track handles. More...
 
class  LimitedHandleResource
 The LimitedHandleResource class is a way to track handles. More...
 
class  SerialHelper
 A class for deterministically getting information about Serial Ports. More...
 
class  SimCallbackRegistry
 Simulation callback registry. More...
 
class  SimDataValue
 Simulation data value wrapper. More...
 
class  UnlimitedHandleResource
 The UnlimitedHandleResource class is a way to track handles. More...
 

Enumerations

enum  HAL_HandleEnum {
  Undefined = 0, DIO = 1, Port = 2, Notifier = 3,
  Interrupt = 4, AnalogOutput = 5, AnalogInput = 6, AnalogTrigger = 7,
  Relay = 8, PWM = 9, DigitalPWM = 10, Counter = 11,
  FPGAEncoder = 12, Encoder = 13, Compressor = 14, Solenoid = 15,
  AnalogGyro = 16, Vendor = 17, SimulationJni = 18, CAN = 19,
  SerialPort = 20, DutyCycle = 21, DMA = 22, AddressableLED = 23
}
 Enum of HAL handle types. More...
 

Functions

template<typename Functor >
void UnsafeManipulateDIO (HAL_DigitalHandle handle, int32_t *status, Functor func)
 Unsafe digital output set function This function can be used to perform fast and determinstically set digital outputs. More...
 
static int16_t getHandleIndex (HAL_Handle handle)
 Get the handle index from a handle. More...
 
static HAL_HandleEnum getHandleType (HAL_Handle handle)
 Get the handle type from a handle. More...
 
static bool isHandleType (HAL_Handle handle, HAL_HandleEnum handleType)
 Get if the handle is a specific type. More...
 
static bool isHandleCorrectVersion (HAL_Handle handle, int16_t version)
 Get if the version of the handle is correct. More...
 
static int16_t getHandleTypedIndex (HAL_Handle handle, HAL_HandleEnum enumType, int16_t version)
 Get if the handle is a correct type and version. More...
 
static int16_t getPortHandleChannel (HAL_PortHandle handle)
 Gets the port channel of a port handle. More...
 
static int16_t getPortHandleModule (HAL_PortHandle handle)
 Gets the port module of a port handle. More...
 
static int16_t getPortHandleSPIEnable (HAL_PortHandle handle)
 Gets the SPI channel of a port handle. More...
 
HAL_PortHandle createPortHandle (uint8_t channel, uint8_t module)
 Create a port handle. More...
 
HAL_PortHandle createPortHandleForSPI (uint8_t channel)
 Create a port handle for SPI. More...
 
HAL_Handle createHandle (int16_t index, HAL_HandleEnum handleType, int16_t version)
 Create a handle for a specific index, type and version. More...
 

Variables

constexpr int16_t InvalidHandleIndex = -1
 

Detailed Description

WPILib Hardware Abstraction Layer (HAL) namespace.

Enumeration Type Documentation

◆ HAL_HandleEnum

enum hal::HAL_HandleEnum
strong

Enum of HAL handle types.

Vendors/Teams should use Vendor (17).

Function Documentation

◆ createHandle()

HAL_Handle hal::createHandle ( int16_t  index,
HAL_HandleEnum  handleType,
int16_t  version 
)

Create a handle for a specific index, type and version.

Note the version is not checked on the roboRIO.

Parameters
indexthe index
handleTypethe handle type
versionthe handle version
Returns
the created handle

◆ createPortHandle()

HAL_PortHandle hal::createPortHandle ( uint8_t  channel,
uint8_t  module 
)

Create a port handle.

Parameters
channelthe channel
modulethe module
Returns
port handle for the module and channel

◆ createPortHandleForSPI()

HAL_PortHandle hal::createPortHandleForSPI ( uint8_t  channel)

Create a port handle for SPI.

Parameters
channelthe SPI channel
Returns
port handle for the channel

◆ getHandleIndex()

static int16_t hal::getHandleIndex ( HAL_Handle  handle)
inlinestatic

Get the handle index from a handle.

Parameters
handlethe handle
Returns
the index

◆ getHandleType()

static HAL_HandleEnum hal::getHandleType ( HAL_Handle  handle)
inlinestatic

Get the handle type from a handle.

Parameters
handlethe handle
Returns
the type

◆ getHandleTypedIndex()

static int16_t hal::getHandleTypedIndex ( HAL_Handle  handle,
HAL_HandleEnum  enumType,
int16_t  version 
)
inlinestatic

Get if the handle is a correct type and version.

Note the version is not checked on the roboRIO.

Parameters
handlethe handle
handleTypethe type to check
versionthe handle version to check
Returns
true if the handle is proper version and type, otherwise false.

◆ getPortHandleChannel()

static int16_t hal::getPortHandleChannel ( HAL_PortHandle  handle)
inlinestatic

Gets the port channel of a port handle.

Parameters
handlethe port handle
Returns
the port channel

◆ getPortHandleModule()

static int16_t hal::getPortHandleModule ( HAL_PortHandle  handle)
inlinestatic

Gets the port module of a port handle.

Parameters
handlethe port handle
Returns
the port module

◆ getPortHandleSPIEnable()

static int16_t hal::getPortHandleSPIEnable ( HAL_PortHandle  handle)
inlinestatic

Gets the SPI channel of a port handle.

Parameters
handlethe port handle
Returns
the port SPI channel

◆ isHandleCorrectVersion()

static bool hal::isHandleCorrectVersion ( HAL_Handle  handle,
int16_t  version 
)
inlinestatic

Get if the version of the handle is correct.

Do not use on the roboRIO, used specifically for the sim to handle resets.

Parameters
handlethe handle
versionthe handle version to check
Returns
true if the handle is the right version, otherwise false

◆ isHandleType()

static bool hal::isHandleType ( HAL_Handle  handle,
HAL_HandleEnum  handleType 
)
inlinestatic

Get if the handle is a specific type.

Parameters
handlethe handle
handleTypethe type to check
Returns
true if the type is correct, otherwise false

◆ UnsafeManipulateDIO()

template<typename Functor >
void hal::UnsafeManipulateDIO ( HAL_DigitalHandle  handle,
int32_t *  status,
Functor  func 
)

Unsafe digital output set function This function can be used to perform fast and determinstically set digital outputs.

This function holds the DIO lock, so calling anyting other then functions on the Proxy object passed as a parameter can deadlock your program.

Parameters
handlethe HAL digital handle of the pin to toggle.
statusstatus check
funcA functor taking a ref to a DIOSetProxy object.