| 
    Zephyr Project API
    3.4.0
    
   A Scalable Open Source RTOS 
   | 
 
#include <errno.h>#include <zephyr/types.h>#include <zephyr/device.h>#include <zephyr/kernel.h>#include <string.h>#include <zephyr/sys_clock.h>#include <zephyr/sys/util.h>#include <zephyr/stats/stats.h>#include <syscalls/can.h>Go to the source code of this file.
Data Structures | |
| struct | can_frame | 
| CAN frame structure.  More... | |
| struct | can_filter | 
| CAN filter structure.  More... | |
| struct | can_bus_err_cnt | 
| CAN controller error counters.  More... | |
| struct | can_timing | 
| CAN bus timing structure.  More... | |
| struct | can_device_state | 
| CAN specific device state which allows for CAN device class specific additions.  More... | |
Macros | |
| #define | CAN_SJW_NO_CHANGE 0 | 
| #define | CAN_STATS_BIT0_ERROR_INC(dev_) STATS_INC(Z_CAN_GET_STATS(dev_), bit0_error) | 
| Increment the bit0 error counter for a CAN device.  More... | |
| #define | CAN_STATS_BIT1_ERROR_INC(dev_) STATS_INC(Z_CAN_GET_STATS(dev_), bit1_error) | 
| Increment the bit1 (recessive) error counter for a CAN device.  More... | |
| #define | CAN_STATS_STUFF_ERROR_INC(dev_) STATS_INC(Z_CAN_GET_STATS(dev_), stuff_error) | 
| Increment the stuffing error counter for a CAN device.  More... | |
| #define | CAN_STATS_CRC_ERROR_INC(dev_) STATS_INC(Z_CAN_GET_STATS(dev_), crc_error) | 
| Increment the CRC error counter for a CAN device.  More... | |
| #define | CAN_STATS_FORM_ERROR_INC(dev_) STATS_INC(Z_CAN_GET_STATS(dev_), form_error) | 
| Increment the form error counter for a CAN device.  More... | |
| #define | CAN_STATS_ACK_ERROR_INC(dev_) STATS_INC(Z_CAN_GET_STATS(dev_), ack_error) | 
| Increment the acknowledge error counter for a CAN device.  More... | |
| #define | CAN_STATS_RX_OVERRUN_INC(dev_) STATS_INC(Z_CAN_GET_STATS(dev_), rx_overrun) | 
| Increment the RX overrun counter for a CAN device.  More... | |
| #define | CAN_STATS_RESET(dev_) stats_reset(&(Z_CAN_GET_STATS(dev_).s_hdr)) | 
| Zero all statistics for a CAN device.  More... | |
| #define | CAN_DEVICE_DT_DEFINE(node_id, init_fn, pm, data, config, level, prio, api, ...) | 
| Like DEVICE_DT_DEFINE() with CAN device specifics.  More... | |
| #define | CAN_DEVICE_DT_INST_DEFINE(inst, ...) CAN_DEVICE_DT_DEFINE(DT_DRV_INST(inst), __VA_ARGS__) | 
| Like CAN_DEVICE_DT_DEFINE() for an instance of a DT_DRV_COMPAT compatible.  More... | |
CAN frame definitions  | |
| #define | CAN_STD_ID_MASK 0x7FFU | 
| Bit mask for a standard (11-bit) CAN identifier.  More... | |
| #define | CAN_MAX_STD_ID CAN_STD_ID_MASK | 
| Maximum value for a standard (11-bit) CAN identifier.  More... | |
| #define | CAN_EXT_ID_MASK 0x1FFFFFFFU | 
| Bit mask for an extended (29-bit) CAN identifier.  More... | |
| #define | CAN_MAX_EXT_ID CAN_EXT_ID_MASK | 
| Maximum value for an extended (29-bit) CAN identifier.  More... | |
| #define | CAN_MAX_DLC 8U | 
| Maximum data length code for CAN 2.0A/2.0B.  More... | |
| #define | CANFD_MAX_DLC 15U | 
| Maximum data length code for CAN-FD.  More... | |
CAN controller mode flags  | |
| #define | CAN_MODE_NORMAL 0 | 
| #define | CAN_MODE_LOOPBACK BIT(0) | 
| #define | CAN_MODE_LISTENONLY BIT(1) | 
| #define | CAN_MODE_FD BIT(2) | 
| #define | CAN_MODE_ONE_SHOT BIT(3) | 
| #define | CAN_MODE_3_SAMPLES BIT(4) | 
CAN frame flags  | |
| #define | CAN_FRAME_IDE BIT(0) | 
| #define | CAN_FRAME_RTR BIT(1) | 
| #define | CAN_FRAME_FDF BIT(2) | 
| #define | CAN_FRAME_BRS BIT(3) | 
| #define | CAN_FRAME_ESI BIT(4) | 
CAN filter flags  | |
| #define | CAN_FILTER_IDE BIT(0) | 
| #define | CAN_FILTER_RTR BIT(1) | 
| #define | CAN_FILTER_DATA BIT(2) | 
| #define | CAN_FILTER_FDF BIT(3) | 
Typedefs | |
| typedef uint32_t | can_mode_t | 
| Provides a type to hold CAN controller configuration flags.  More... | |
| typedef void(* | can_tx_callback_t) (const struct device *dev, int error, void *user_data) | 
| Defines the application callback handler function signature.  More... | |
| typedef void(* | can_rx_callback_t) (const struct device *dev, struct can_frame *frame, void *user_data) | 
| Defines the application callback handler function signature for receiving.  More... | |
| typedef void(* | can_state_change_callback_t) (const struct device *dev, enum can_state state, struct can_bus_err_cnt err_cnt, void *user_data) | 
| Defines the state change callback handler function signature.  More... | |
Enumerations | |
| enum | can_state {  CAN_STATE_ERROR_ACTIVE , CAN_STATE_ERROR_WARNING , CAN_STATE_ERROR_PASSIVE , CAN_STATE_BUS_OFF , CAN_STATE_STOPPED }  | 
| Defines the state of the CAN controller.  More... | |
Functions | |
CAN controller configuration  | |
| int | can_get_core_clock (const struct device *dev, uint32_t *rate) | 
| Get the CAN core clock rate.  More... | |
| int | can_get_max_bitrate (const struct device *dev, uint32_t *max_bitrate) | 
| Get maximum supported bitrate.  More... | |
| const struct can_timing * | can_get_timing_min (const struct device *dev) | 
| Get the minimum supported timing parameter values.  More... | |
| const struct can_timing * | can_get_timing_max (const struct device *dev) | 
| Get the maximum supported timing parameter values.  More... | |
| int | can_calc_timing (const struct device *dev, struct can_timing *res, uint32_t bitrate, uint16_t sample_pnt) | 
| Calculate timing parameters from bitrate and sample point.  More... | |
| const struct can_timing * | can_get_timing_data_min (const struct device *dev) | 
| Get the minimum supported timing parameter values for the data phase.  More... | |
| const struct can_timing * | can_get_timing_data_max (const struct device *dev) | 
| Get the maximum supported timing parameter values for the data phase.  More... | |
| int | can_calc_timing_data (const struct device *dev, struct can_timing *res, uint32_t bitrate, uint16_t sample_pnt) | 
| Calculate timing parameters for the data phase.  More... | |
| int | can_set_timing_data (const struct device *dev, const struct can_timing *timing_data) | 
| Configure the bus timing for the data phase of a CAN-FD controller.  More... | |
| int | can_set_bitrate_data (const struct device *dev, uint32_t bitrate_data) | 
| Set the bitrate for the data phase of the CAN-FD controller.  More... | |
| int | can_calc_prescaler (const struct device *dev, struct can_timing *timing, uint32_t bitrate) | 
| Fill in the prescaler value for a given bitrate and timing.  More... | |
| int | can_set_timing (const struct device *dev, const struct can_timing *timing) | 
| Configure the bus timing of a CAN controller.  More... | |
| int | can_get_capabilities (const struct device *dev, can_mode_t *cap) | 
| Get the supported modes of the CAN controller.  More... | |
| int | can_start (const struct device *dev) | 
| Start the CAN controller.  More... | |
| int | can_stop (const struct device *dev) | 
| Stop the CAN controller.  More... | |
| int | can_set_mode (const struct device *dev, can_mode_t mode) | 
| Set the CAN controller to the given operation mode.  More... | |
| int | can_set_bitrate (const struct device *dev, uint32_t bitrate) | 
| Set the bitrate of the CAN controller.  More... | |
Transmitting CAN frames  | |
| int | can_send (const struct device *dev, const struct can_frame *frame, k_timeout_t timeout, can_tx_callback_t callback, void *user_data) | 
| Queue a CAN frame for transmission on the CAN bus.  More... | |
CAN bus error reporting and handling  | |
| int | can_get_state (const struct device *dev, enum can_state *state, struct can_bus_err_cnt *err_cnt) | 
| Get current CAN controller state.  More... | |
| int | can_recover (const struct device *dev, k_timeout_t timeout) | 
| Recover from bus-off state.  More... | |
| static void | can_set_state_change_callback (const struct device *dev, can_state_change_callback_t callback, void *user_data) | 
| Set a callback for CAN controller state change events.  More... | |
CAN utility functions  | |
| static uint8_t | can_dlc_to_bytes (uint8_t dlc) | 
| Convert from Data Length Code (DLC) to the number of data bytes.  More... | |
| static uint8_t | can_bytes_to_dlc (uint8_t num_bytes) | 
| Convert from number of bytes to Data Length Code (DLC)  More... | |
| static bool | can_frame_matches_filter (const struct can_frame *frame, const struct can_filter *filter) | 
| Check if a CAN frame matches a CAN filter.  More... | |
Receiving CAN frames | |
| #define | CAN_MSGQ_DEFINE(name, max_frames) K_MSGQ_DEFINE(name, sizeof(struct can_frame), max_frames, 4) | 
| Statically define and initialize a CAN RX message queue.  More... | |
| static int | can_add_rx_filter (const struct device *dev, can_rx_callback_t callback, void *user_data, const struct can_filter *filter) | 
| Add a callback function for a given CAN filter.  More... | |
| int | can_add_rx_filter_msgq (const struct device *dev, struct k_msgq *msgq, const struct can_filter *filter) | 
| Simple wrapper function for adding a message queue for a given filter.  More... | |
| void | can_remove_rx_filter (const struct device *dev, int filter_id) | 
| Remove a CAN RX filter.  More... | |
| int | can_get_max_filters (const struct device *dev, bool ide) | 
| Get maximum number of RX filters.  More... | |