PER Firmware
Loading...
Searching...
No Matches
can_common.h File Reference

Common functions and data structures used in every node in the CAN library. More...

#include <stdint.h>
#include "common/freertos/freertos.h"
#include "common/phal/can.h"
#include "common/can_library/generated/can_router.h"

Go to the source code of this file.

Classes

struct  can_peripheral_stats_t
 
struct  can_stats_t
 

Macros

#define CAN_TX_BACKPRESSURE_MS   (2)
 
#define CAN_TX_QUEUE_LENGTH   (64)
 
#define CAN_RX_QUEUE_LENGTH   (64)
 
#define CAN_TX_MAILBOX_CNT   (3)
 
#define CAN_TX_TIMEOUT_MS   (15)
 
#define CAN_TX_BLOCK_TIMEOUT   (30 * 16000)
 
#define CAN_MAILBOX_HIGH_PRIO   0
 
#define CAN_MAILBOX_MED_PRIO   1
 
#define CAN_MAILBOX_LOW_PRIO   2
 
#define CAN_EFF_FLAG   0x80000000U /* EFF/SFF is set in the MSB */
 
#define CAN_RTR_FLAG   0x40000000U /* remote transmission request */
 
#define CAN_ERR_FLAG   0x20000000U /* error message frame */
 
#define CAN_SFF_MASK   0x000007FFU /* standard frame format (SFF) */
 
#define CAN_EFF_MASK   0x1FFFFFFFU /* extended frame format (EFF) */
 
#define CAN_ERR_MASK   0x1FFFFFFFU /* omit EFF, RTR, ERR flags */
 
#define CAN1_IDX   0
 
#define CAN2_IDX   1
 
#define CAN3_IDX   2
 
#define GET_PERIPH_IDX(bus)
 
#define NUM_CAN_PERIPHERALS_MAX   2
 

Functions

void CAN_enqueue_tx (CanMsgTypeDef_t *msg)
 
void CAN_tx_update ()
 
void CAN_rx_update ()
 
bool CAN_library_init ()
 
void CAN_handle_irq (CAN_TypeDef *bus, uint8_t fifo)
 

Variables

can_stats_t can_stats
 
volatile uint32_t last_can_rx_time_ms
 
QueueHandle_t q_rx_can
 

Detailed Description

Common functions and data structures used in every node in the CAN library.

Author
Irving Wang (irvin.nosp@m.gw@p.nosp@m.urdue.nosp@m..edu)
Ronak Jain (jain7.nosp@m.17@p.nosp@m.urdue.nosp@m..edu)

Macro Definition Documentation

◆ GET_PERIPH_IDX

#define GET_PERIPH_IDX ( bus)
Value:
((bus == CAN1) ? CAN1_IDX : CAN2_IDX)