APM:Libraries
Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
Linux::CAN Class Reference

#include <CAN.h>

Inheritance diagram for Linux::CAN:
[legend]
Collaboration diagram for Linux::CAN:
[legend]

Classes

struct  RxItem
 
struct  TxItem
 

Public Member Functions

 CAN (int socket_fd=0)
 
 ~CAN ()
 
bool begin (uint32_t bitrate) override
 
void end () override
 
void reset () override
 
bool is_initialized () override
 
int32_t tx_pending () override
 
int32_t available () override
 
int getFileDescriptor () const
 
int16_t send (const uavcan::CanFrame &frame, uavcan::MonotonicTime tx_deadline, uavcan::CanIOFlags flags) override
 
int16_t receive (uavcan::CanFrame &out_frame, uavcan::MonotonicTime &out_ts_monotonic, uavcan::UtcTime &out_ts_utc, uavcan::CanIOFlags &out_flags) override
 
bool hasReadyTx () const
 
bool hasReadyRx () const
 
void poll (bool read, bool write)
 
int16_t configureFilters (const uavcan::CanFilterConfig *filter_configs, uint16_t num_configs) override
 
uint16_t getNumFilters () const override
 
uint64_t getErrorCount () const override
 

Static Public Member Functions

static int openSocket (const std::string &iface_name)
 

Private Member Functions

void _pollWrite ()
 
void _pollRead ()
 
int _write (const uavcan::CanFrame &frame) const
 
int _read (uavcan::CanFrame &frame, uavcan::UtcTime &ts_utc, bool &loopback) const
 
void _incrementNumFramesInSocketTxQueue ()
 
void _confirmSentFrame ()
 
bool _wasInPendingLoopbackSet (const uavcan::CanFrame &frame)
 
bool _checkHWFilters (const can_frame &frame) const
 
void _registerError (SocketCanError e)
 

Private Attributes

uint32_t _bitrate
 
bool _initialized
 
int _fd
 
const unsigned _max_frames_in_socket_tx_queue
 
unsigned _frames_in_socket_tx_queue
 
uint64_t _tx_frame_counter
 
std::map< SocketCanError, uint64_t > _errors
 
std::priority_queue< TxItem_tx_queue
 
std::queue< RxItem_rx_queue
 
std::unordered_multiset< uint32_t > _pending_loopback_ids
 
std::vector< can_filter > _hw_filters_container
 

Detailed Description

Definition at line 54 of file CAN.h.

Constructor & Destructor Documentation

◆ CAN()

Linux::CAN::CAN ( int  socket_fd = 0)
inline

Definition at line 56 of file CAN.h.

◆ ~CAN()

Linux::CAN::~CAN ( )
inline

Definition at line 61 of file CAN.h.

Here is the call graph for this function:

Member Function Documentation

◆ _checkHWFilters()

bool Linux::CAN::_checkHWFilters ( const can_frame &  frame) const
private

◆ _confirmSentFrame()

void Linux::CAN::_confirmSentFrame ( )
private

◆ _incrementNumFramesInSocketTxQueue()

void Linux::CAN::_incrementNumFramesInSocketTxQueue ( )
private

◆ _pollRead()

void Linux::CAN::_pollRead ( )
private

◆ _pollWrite()

void Linux::CAN::_pollWrite ( )
private

◆ _read()

int Linux::CAN::_read ( uavcan::CanFrame &  frame,
uavcan::UtcTime &  ts_utc,
bool &  loopback 
) const
private

◆ _registerError()

void Linux::CAN::_registerError ( SocketCanError  e)
inlineprivate

Definition at line 154 of file CAN.h.

◆ _wasInPendingLoopbackSet()

bool Linux::CAN::_wasInPendingLoopbackSet ( const uavcan::CanFrame &  frame)
private

◆ _write()

int Linux::CAN::_write ( const uavcan::CanFrame &  frame) const
private

◆ available()

int32_t Linux::CAN::available ( )
override

◆ begin()

bool Linux::CAN::begin ( uint32_t  bitrate)
override

◆ configureFilters()

int16_t Linux::CAN::configureFilters ( const uavcan::CanFilterConfig *  filter_configs,
uint16_t  num_configs 
)
override

◆ end()

void Linux::CAN::end ( )
override

◆ getErrorCount()

uint64_t Linux::CAN::getErrorCount ( ) const
override

◆ getFileDescriptor()

int Linux::CAN::getFileDescriptor ( ) const
inline

Definition at line 77 of file CAN.h.

Here is the call graph for this function:

◆ getNumFilters()

uint16_t Linux::CAN::getNumFilters ( ) const
override

◆ hasReadyRx()

bool Linux::CAN::hasReadyRx ( ) const

◆ hasReadyTx()

bool Linux::CAN::hasReadyTx ( ) const

◆ is_initialized()

bool Linux::CAN::is_initialized ( )
override

◆ openSocket()

static int Linux::CAN::openSocket ( const std::string &  iface_name)
static

◆ poll()

void Linux::CAN::poll ( bool  read,
bool  write 
)

◆ receive()

int16_t Linux::CAN::receive ( uavcan::CanFrame &  out_frame,
uavcan::MonotonicTime &  out_ts_monotonic,
uavcan::UtcTime &  out_ts_utc,
uavcan::CanIOFlags &  out_flags 
)
override

◆ reset()

void Linux::CAN::reset ( )
override

◆ send()

int16_t Linux::CAN::send ( const uavcan::CanFrame &  frame,
uavcan::MonotonicTime  tx_deadline,
uavcan::CanIOFlags  flags 
)
override

◆ tx_pending()

int32_t Linux::CAN::tx_pending ( )
override

Member Data Documentation

◆ _bitrate

uint32_t Linux::CAN::_bitrate
private

Definition at line 156 of file CAN.h.

◆ _errors

std::map<SocketCanError, uint64_t> Linux::CAN::_errors
private

Definition at line 166 of file CAN.h.

◆ _fd

int Linux::CAN::_fd
private

Definition at line 160 of file CAN.h.

◆ _frames_in_socket_tx_queue

unsigned Linux::CAN::_frames_in_socket_tx_queue
private

Definition at line 163 of file CAN.h.

◆ _hw_filters_container

std::vector<can_filter> Linux::CAN::_hw_filters_container
private

Definition at line 170 of file CAN.h.

◆ _initialized

bool Linux::CAN::_initialized
private

Definition at line 158 of file CAN.h.

◆ _max_frames_in_socket_tx_queue

const unsigned Linux::CAN::_max_frames_in_socket_tx_queue
private

Definition at line 162 of file CAN.h.

◆ _pending_loopback_ids

std::unordered_multiset<uint32_t> Linux::CAN::_pending_loopback_ids
private

Definition at line 169 of file CAN.h.

◆ _rx_queue

std::queue<RxItem> Linux::CAN::_rx_queue
private

Definition at line 168 of file CAN.h.

◆ _tx_frame_counter

uint64_t Linux::CAN::_tx_frame_counter
private

Definition at line 164 of file CAN.h.

◆ _tx_queue

std::priority_queue<TxItem> Linux::CAN::_tx_queue
private

Definition at line 167 of file CAN.h.


The documentation for this class was generated from the following file: