WPILibC++  2018.4.1-20180819050225-1157-gb44f27d
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
CAN API Functions

Functions

 HAL_ENUM (HAL_CANDeviceType)
 The CAN device type. More...
 
 HAL_ENUM (HAL_CANManufacturer)
 The CAN manufacturer ID. More...
 
HAL_CANHandle HAL_InitializeCAN (HAL_CANManufacturer manufacturer, int32_t deviceId, HAL_CANDeviceType deviceType, int32_t *status)
 Initializes a CAN device. More...
 
void HAL_CleanCAN (HAL_CANHandle handle)
 Frees a CAN device. More...
 
void HAL_WriteCANPacket (HAL_CANHandle handle, const uint8_t *data, int32_t length, int32_t apiId, int32_t *status)
 Writes a packet to the CAN device with a specific ID. More...
 
void HAL_WriteCANPacketRepeating (HAL_CANHandle handle, const uint8_t *data, int32_t length, int32_t apiId, int32_t repeatMs, int32_t *status)
 Writes a repeating packet to the CAN device with a specific ID. More...
 
void HAL_StopCANPacketRepeating (HAL_CANHandle handle, int32_t apiId, int32_t *status)
 Stops a repeating packet with a specific ID. More...
 
void HAL_ReadCANPacketNew (HAL_CANHandle handle, int32_t apiId, uint8_t *data, int32_t *length, uint64_t *receivedTimestamp, int32_t *status)
 Reads a new CAN packet. More...
 
void HAL_ReadCANPacketLatest (HAL_CANHandle handle, int32_t apiId, uint8_t *data, int32_t *length, uint64_t *receivedTimestamp, int32_t *status)
 Reads a CAN packet. More...
 
void HAL_ReadCANPacketTimeout (HAL_CANHandle handle, int32_t apiId, uint8_t *data, int32_t *length, uint64_t *receivedTimestamp, int32_t timeoutMs, int32_t *status)
 Reads a CAN packet. More...
 
void HAL_ReadCANPeriodicPacket (HAL_CANHandle handle, int32_t apiId, uint8_t *data, int32_t *length, uint64_t *receivedTimestamp, int32_t timeoutMs, int32_t periodMs, int32_t *status)
 Reads a CAN packet. More...
 

Detailed Description

Function Documentation

void HAL_CleanCAN ( HAL_CANHandle  handle)

Frees a CAN device.

Parameters
handlethe CAN handle
HAL_ENUM ( HAL_CANDeviceType  )

The CAN device type.

Teams should use HAL_CAN_Dev_kMiscellaneous

HAL_ENUM ( HAL_CANManufacturer  )

The CAN manufacturer ID.

Teams should use HAL_CAN_Man_kTeamUse.

HAL_CANHandle HAL_InitializeCAN ( HAL_CANManufacturer  manufacturer,
int32_t  deviceId,
HAL_CANDeviceType  deviceType,
int32_t *  status 
)

Initializes a CAN device.

These follow the FIRST standard CAN layout. Link TBD

Parameters
manufacturerthe can manufacturer
deviceIdthe device ID (0-63)
deviceTypethe device type
Returns
the created CAN handle
void HAL_ReadCANPacketLatest ( HAL_CANHandle  handle,
int32_t  apiId,
uint8_t *  data,
int32_t *  length,
uint64_t *  receivedTimestamp,
int32_t *  status 
)

Reads a CAN packet.

The will continuously return the last packet received, without accounting for packet age.

Parameters
handlethe CAN handle
apiIdthe ID to read (0-1023)
datathe packet data (8 bytes)
lengththe received length (0-8 bytes)
receivedTimestampthe packet received timestamp (based off of CLOCK_MONOTONIC)
void HAL_ReadCANPacketNew ( HAL_CANHandle  handle,
int32_t  apiId,
uint8_t *  data,
int32_t *  length,
uint64_t *  receivedTimestamp,
int32_t *  status 
)

Reads a new CAN packet.

This will only return properly once per packet received. Multiple calls without receiving another packet will return an error code.

Parameters
handlethe CAN handle
apiIdthe ID to read (0-1023)
datathe packet data (8 bytes)
lengththe received length (0-8 bytes)
receivedTimestampthe packet received timestamp (based off of CLOCK_MONOTONIC)
void HAL_ReadCANPacketTimeout ( HAL_CANHandle  handle,
int32_t  apiId,
uint8_t *  data,
int32_t *  length,
uint64_t *  receivedTimestamp,
int32_t  timeoutMs,
int32_t *  status 
)

Reads a CAN packet.

The will return the last packet received until the packet is older then the requested timeout. Then it will return an error code.

Parameters
handlethe CAN handle
apiIdthe ID to read (0-1023)
datathe packet data (8 bytes)
lengththe received length (0-8 bytes)
receivedTimestampthe packet received timestamp (based off of CLOCK_MONOTONIC)
timeoutMsthe timeout time for the packet
void HAL_ReadCANPeriodicPacket ( HAL_CANHandle  handle,
int32_t  apiId,
uint8_t *  data,
int32_t *  length,
uint64_t *  receivedTimestamp,
int32_t  timeoutMs,
int32_t  periodMs,
int32_t *  status 
)

Reads a CAN packet.

The will return the last packet received until the packet is older then the requested timeout. Then it will return an error code. The period parameter is used when you know the packet is sent at specific intervals, so calls will not attempt to read a new packet from the network until that period has passed. We do not recommend users use this API unless they know the implications.

Parameters
handlethe CAN handle
apiIdthe ID to read (0-1023)
datathe packet data (8 bytes)
lengththe received length (0-8 bytes)
receivedTimestampthe packet received timestamp (based off of CLOCK_MONOTONIC)
timeoutMsthe timeout time for the packet
periodMsthe standard period for the packet
void HAL_StopCANPacketRepeating ( HAL_CANHandle  handle,
int32_t  apiId,
int32_t *  status 
)

Stops a repeating packet with a specific ID.

This ID is 10 bits.

Parameters
handlethe CAN handle
apiIdthe ID to stop repeating (0-1023)
void HAL_WriteCANPacket ( HAL_CANHandle  handle,
const uint8_t *  data,
int32_t  length,
int32_t  apiId,
int32_t *  status 
)

Writes a packet to the CAN device with a specific ID.

This ID is 10 bits.

Parameters
handlethe CAN handle
datathe data to write (0-8 bytes)
lengththe length of data (0-8)
apiIdthe ID to write (0-1023 bits)
void HAL_WriteCANPacketRepeating ( HAL_CANHandle  handle,
const uint8_t *  data,
int32_t  length,
int32_t  apiId,
int32_t  repeatMs,
int32_t *  status 
)

Writes a repeating packet to the CAN device with a specific ID.

This ID is 10 bits.

The RoboRIO will automatically repeat the packet at the specified interval

Parameters
handlethe CAN handle
datathe data to write (0-8 bytes)
lengththe length of data (0-8)
apiIdthe ID to write (0-1023)
repeatMsthe period to repeat in ms