Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
VirtualCanIface Class Reference
Inheritance diagram for VirtualCanIface:
Inheritance graph
[legend]

Classes

struct  RxItem
 

Public Member Functions

void addRxFrame (const uavcan::CanRxFrame &frame, uavcan::CanIOFlags flags)
 
void flushTxQueueTo (uavcan::INode &main_node, std::uint8_t iface_index)
 
bool hasDataInRxQueue () const
 
 VirtualCanIface (uavcan::IPoolAllocator &allocator, uavcan::ISystemClock &clock, std::mutex &arg_mutex, unsigned quota_per_queue)
 
- Public Member Functions inherited from uavcan::ICanIface
virtual int16_t receive (CanFrame &out_frame, MonotonicTime &out_ts_monotonic, UtcTime &out_ts_utc, CanIOFlags &out_flags)=0
 
virtual int16_t send (const CanFrame &frame, MonotonicTime tx_deadline, CanIOFlags flags)=0
 
virtual ~ICanIface ()
 

Private Member Functions

int16_t configureFilters (const uavcan::CanFilterConfig *, std::uint16_t) override
 
uint64_t getErrorCount () const override
 
uint16_t getNumFilters () const override
 
int16_t receive (uavcan::CanFrame &out_frame, uavcan::MonotonicTime &out_ts_monotonic, uavcan::UtcTime &out_ts_utc, uavcan::CanIOFlags &out_flags) override
 
int16_t send (const uavcan::CanFrame &frame, uavcan::MonotonicTime tx_deadline, uavcan::CanIOFlags flags) override
 
- Private Member Functions inherited from uavcan::Noncopyable
 Noncopyable ()
 
 ~Noncopyable ()
 

Private Attributes

std::mutex & mutex_
 
uavcan::CanTxQueue prioritized_tx_queue_
 
Queue< RxItemrx_queue_
 

Detailed Description

Objects of this class are owned by the sub-node thread. This class does not use heap memory.

Definition at line 140 of file test_multithreading.cpp.

Constructor & Destructor Documentation

◆ VirtualCanIface()

VirtualCanIface::VirtualCanIface ( uavcan::IPoolAllocator allocator,
uavcan::ISystemClock clock,
std::mutex &  arg_mutex,
unsigned  quota_per_queue 
)
inline

Definition at line 191 of file test_multithreading.cpp.

Member Function Documentation

◆ addRxFrame()

void VirtualCanIface::addRxFrame ( const uavcan::CanRxFrame frame,
uavcan::CanIOFlags  flags 
)
inline

Note that RX queue overwrites oldest items when overflowed. Call this from the main thread only. No additional locking is required.

Definition at line 203 of file test_multithreading.cpp.

◆ configureFilters()

int16_t VirtualCanIface::configureFilters ( const uavcan::CanFilterConfig filter_configs,
std::uint16_t  num_configs 
)
inlineoverrideprivatevirtual

Configure the hardware CAN filters. CanFilterConfig.

Returns
0 = success, negative for error.

Implements uavcan::ICanIface.

Definition at line 186 of file test_multithreading.cpp.

◆ flushTxQueueTo()

void VirtualCanIface::flushTxQueueTo ( uavcan::INode main_node,
std::uint8_t  iface_index 
)
inline

Call this from the main thread only. No additional locking is required.

Definition at line 217 of file test_multithreading.cpp.

◆ getErrorCount()

uint64_t VirtualCanIface::getErrorCount ( ) const
inlineoverrideprivatevirtual

Continuously incrementing counter of hardware errors. Arbitration lost should not be treated as a hardware error.

Implements uavcan::ICanIface.

Definition at line 188 of file test_multithreading.cpp.

◆ getNumFilters()

uint16_t VirtualCanIface::getNumFilters ( ) const
inlineoverrideprivatevirtual

Number of available hardware filters.

Implements uavcan::ICanIface.

Definition at line 187 of file test_multithreading.cpp.

◆ hasDataInRxQueue()

bool VirtualCanIface::hasDataInRxQueue ( ) const
inline

Call this from the sub-node thread only. No additional locking is required.

Definition at line 242 of file test_multithreading.cpp.

◆ receive()

int16_t VirtualCanIface::receive ( uavcan::CanFrame out_frame,
uavcan::MonotonicTime out_ts_monotonic,
uavcan::UtcTime out_ts_utc,
uavcan::CanIOFlags out_flags 
)
inlineoverrideprivate

Definition at line 165 of file test_multithreading.cpp.

◆ send()

int16_t VirtualCanIface::send ( const uavcan::CanFrame frame,
uavcan::MonotonicTime  tx_deadline,
uavcan::CanIOFlags  flags 
)
inlineoverrideprivate

Definition at line 158 of file test_multithreading.cpp.

Member Data Documentation

◆ mutex_

std::mutex& VirtualCanIface::mutex_
private

Definition at line 154 of file test_multithreading.cpp.

◆ prioritized_tx_queue_

uavcan::CanTxQueue VirtualCanIface::prioritized_tx_queue_
private

Definition at line 155 of file test_multithreading.cpp.

◆ rx_queue_

Queue<RxItem> VirtualCanIface::rx_queue_
private

Definition at line 156 of file test_multithreading.cpp.


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


uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:04