WPILibC++ 2027.0.0-alpha-4
Loading...
Searching...
No Matches
CAN.h
Go to the documentation of this file.
1// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5#pragma once
6
7#include <stdint.h>
8
10#include "wpi/hal/Types.h"
11
12/**
13 * @defgroup hal_can CAN Functions
14 * @ingroup hal_capi
15 * @{
16 */
17// These are copies of defines located in CANSessionMux.h prepended with HAL_
18
19#define HAL_ERR_CANSessionMux_BufferTooLong -44085
20#define HAL_ERR_CANSessionMux_InvalidBuffer -44086
21#define HAL_ERR_CANSessionMux_MessageNotFound -44087
22#define HAL_WARN_CANSessionMux_NoToken 44087
23#define HAL_WARN_CANSessionMux_TxQueueFull 44086
24#define HAL_WARN_CANSessionMux_SocketBufferFull 44088
25#define HAL_ERR_CANSessionMux_NotAllowed -44088
26#define HAL_ERR_CANSessionMux_NotInitialized -44089
27#define HAL_ERR_CANSessionMux_SessionOverrun 44050
28/** @} */
29
30/**
31 * @defgroup hal_canstream CAN Stream Functions
32 * @ingroup hal_capi
33 * @{
34 */
35
36/**
37 * Storage for CAN Stream Messages.
38 */
40 /** The message ID */
41 uint32_t messageId;
42 /** The message */
44};
45
46/** @} */
47#ifdef __cplusplus
48extern "C" {
49#endif
50/**
51 * @ingroup hal_can
52 * @{
53 */
54/**
55 * Sends a CAN message.
56 *
57 * @param[in] busId the CAN bus number
58 * @param[in] messageId the message id
59 * @param[in] message the CAN message
60 * @param[in] periodMs the repeat period
61 * @param[out] status Error status variable. 0 on success.
62 */
63void HAL_CAN_SendMessage(int32_t busId, uint32_t messageId,
64 const struct HAL_CANMessage* message, int32_t periodMs,
65 int32_t* status);
66
67/**
68 * Receives a CAN message.
69 *
70 * @param[in] busId The CAN bus number
71 * @param[in] messageId the message id
72 * @param[out] message The CAN message
73 * @param[out] status Error status variable. 0 on success.
74 */
75void HAL_CAN_ReceiveMessage(int32_t busId, uint32_t messageId,
77 int32_t* status);
78/**
79 * Gets CAN status information.
80 *
81 * @param[in] busId the bus number
82 * @param[out] percentBusUtilization the bus utilization
83 * @param[out] busOffCount the number of bus off errors
84 * @param[out] txFullCount the number of tx full errors
85 * @param[out] receiveErrorCount the number of receive errors
86 * @param[out] transmitErrorCount the number of transmit errors
87 * @param[out] status Error status variable. 0 on success.
88 */
89void HAL_CAN_GetCANStatus(int32_t busId, float* percentBusUtilization,
90 uint32_t* busOffCount, uint32_t* txFullCount,
91 uint32_t* receiveErrorCount,
92 uint32_t* transmitErrorCount, int32_t* status);
93/** @} */
94/**
95 * @ingroup hal_canstream
96 * @{
97 */
98/**
99 * Opens a CAN stream.
100 *
101 * @param[in] busId the bus number
102 * @param[in] messageId the message ID to read
103 * @param[in] messageIDMask the message ID mask
104 * @param[in] maxMessages the maximum number of messages to stream
105 * @param[out] status Error status variable. 0 on success.
106 * @return the stream handle
107 */
108HAL_CANStreamHandle HAL_CAN_OpenStreamSession(int32_t busId, uint32_t messageId,
109 uint32_t messageIDMask,
110 uint32_t maxMessages,
111 int32_t* status);
112
113/**
114 * Closes a CAN stream.
115 *
116 * @param sessionHandle the session to close
117 */
119
120/**
121 * Reads a CAN stream message.
122 *
123 * @param[in] sessionHandle the session handle
124 * @param[in] messages array of messages
125 * @param[in] messagesToRead the max number of messages to read
126 * @param[out] messagesRead the number of messages actually read
127 * @param[out] status Error status variable. 0 on success.
128 */
130 struct HAL_CANStreamMessage* messages,
131 uint32_t messagesToRead, uint32_t* messagesRead,
132 int32_t* status);
133#ifdef __cplusplus
134} // extern "C"
135#endif
136/** @} */
void HAL_CAN_GetCANStatus(int32_t busId, float *percentBusUtilization, uint32_t *busOffCount, uint32_t *txFullCount, uint32_t *receiveErrorCount, uint32_t *transmitErrorCount, int32_t *status)
Gets CAN status information.
void HAL_CAN_ReceiveMessage(int32_t busId, uint32_t messageId, struct HAL_CANReceiveMessage *message, int32_t *status)
Receives a CAN message.
void HAL_CAN_SendMessage(int32_t busId, uint32_t messageId, const struct HAL_CANMessage *message, int32_t periodMs, int32_t *status)
Sends a CAN message.
void HAL_CAN_ReadStreamSession(HAL_CANStreamHandle sessionHandle, struct HAL_CANStreamMessage *messages, uint32_t messagesToRead, uint32_t *messagesRead, int32_t *status)
Reads a CAN stream message.
void HAL_CAN_CloseStreamSession(HAL_CANStreamHandle sessionHandle)
Closes a CAN stream.
HAL_CANStreamHandle HAL_CAN_OpenStreamSession(int32_t busId, uint32_t messageId, uint32_t messageIDMask, uint32_t maxMessages, int32_t *status)
Opens a CAN stream.
HAL_Handle HAL_CANStreamHandle
Definition Types.h:73
Definition CANAPITypes.h:139
Definition CANAPITypes.h:148
struct HAL_CANMessage message
The received message.
Definition CANAPITypes.h:152
Storage for CAN Stream Messages.
Definition CAN.h:39
uint32_t messageId
The message ID.
Definition CAN.h:41
struct HAL_CANReceiveMessage message
The message.
Definition CAN.h:43