HAL  v0.6.1
Hardware Abstraction Layer
Loading...
Searching...
No Matches
hal_can.h File Reference
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include "hal_gpio.h"
Include dependency graph for hal_can.h:

Data Structures

struct  can_channel_attr_t
 
struct  can_handle_t
 

Enumerations

enum  can_result_t {
  CAN_RESULT_OK ,
  CAN_RESULT_INVALID ,
  CAN_RESULT_UNSUPPORTED ,
  CAN_RESULT_BUSY ,
  CAN_RESULT_OVERFLOW ,
  CAN_RESULT_OVERLOAD ,
  CAN_RESULT_BIT_ERROR ,
  CAN_RESULT_BIT_STUFF_ERROR ,
  CAN_RESULT_FRAME_ERROR ,
  CAN_RESULT_ACK_ERROR ,
  CAN_RESULT_CRC_ERROR ,
  CAN_RESULT_ERR ,
  TOTAL_CAN_RESULT
}
 
enum  can_status_t {
  CAN_STATUS_UNKNOWN ,
  CAN_STATUS_OK ,
  CAN_STATUS_BUSY ,
  CAN_STATUS_STOP ,
  CAN_STATUS_SENDING ,
  CAN_STATUS_RECEIVING ,
  CAN_STATUS_ERR ,
  TOTAL_CAN_STATUS
}
 
enum  can_frame_t {
  CAN_FRAME_DATA ,
  CAN_FRAME_REMOTE ,
  CAN_FRAME_ERROR ,
  CAN_FRAME_OVERLOAD ,
  TOTAL_CAN_FRAME
}
 
enum  can_mode_t {
  CAN_MODE_CLASSIC ,
  CAN_MODE_FD ,
  CAN_MODE_LISTEN ,
  CAN_MODE_RESTRICTED ,
  CAN_MODE_INTERNAL_LOOP ,
  CAN_MODE_EXTERNAL_LOOP ,
  TOTAL_CAN_MODE
}
 
enum  can_baudrate_t {
  CAN_BAUDRATE_10KBPS ,
  CAN_BAUDRATE_20KBPS ,
  CAN_BAUDRATE_50KBPS ,
  CAN_BAUDRATE_125KBPS ,
  CAN_BAUDRATE_250KBPS ,
  CAN_BAUDRATE_500KBPS ,
  CAN_BAUDRATE_1MBPS ,
  CAN_BAUDRATE_2MBPS ,
  CAN_BAUDRATE_5MBPS ,
  CAN_BAUDRATE_8MBPS ,
  CAN_BAUDRATE_10MBPS ,
  CAN_BAUDRATE_12MBPS ,
  TOTAL_CAN_BAUDRATE
}
 

Functions

can_result_t hal_can_init (can_handle_t *handle, const can_channel_attr_t attr)
 Configure CAN channel with specific attributes.
 
can_result_t hal_can_write (can_handle_t *handle, const uint32_t id, const can_frame_t frame, const uint8_t *tx_buffer, const size_t len)
 Write data to CAN bus.
 
can_result_t hal_can_read (can_handle_t *handle, uint32_t *id, can_frame_t *frame, uint8_t *rx_buffer, const size_t len)
 Read data from CAN bus.
 
can_result_t hal_can_stop (can_handle_t *handle)
 Stop CAN bus operation.
 
can_result_t hal_can_mutex_take (const uint8_t channel, const uint32_t timeout_ms)
 Try acquire RTOS mutex for specified channel.
 
can_result_t hal_can_mutex_give (const uint8_t channel)
 Release RTOS mutex for specified channel.