Classes | |
class | Event |
Public Member Functions | |
VirtualCanDriver (unsigned arg_num_ifaces) | |
![]() | |
virtual const ICanIface * | getIface (uint8_t iface_index) const |
virtual ICanIface * | getIface (uint8_t iface_index)=0 |
virtual int16_t | select (CanSelectMasks &inout_masks, const CanFrame *(&pending_tx)[MaxCanIfaces], MonotonicTime blocking_deadline)=0 |
virtual | ~ICanDriver () |
![]() | |
virtual void | handleRxFrame (const CanRxFrame &frame, CanIOFlags flags)=0 |
virtual | ~IRxFrameListener () |
![]() | |
virtual | ~ITxQueueInjector () |
Private Member Functions | |
uavcan::ICanIface * | getIface (uint8_t iface_index) override |
uint8_t | getNumIfaces () const override |
void | handleRxFrame (const uavcan::CanRxFrame &frame, uavcan::CanIOFlags flags) override |
void | injectTxFramesInto (uavcan::INode &main_node) override |
int16_t | select (uavcan::CanSelectMasks &inout_masks, const uavcan::CanFrame *(&)[uavcan::MaxCanIfaces], uavcan::MonotonicTime blocking_deadline) override |
![]() | |
Noncopyable () | |
~Noncopyable () | |
Private Attributes | |
uavcan::PoolAllocator< SharedMemoryPoolSize, uavcan::MemPoolBlockSize > | allocator_ |
Shared across all ifaces. More... | |
uavcan_linux::SystemClock | clock_ |
Event | event_ |
Used to unblock the select() call when IO happens. More... | |
uavcan::LazyConstructor< VirtualCanIface > | ifaces_ [uavcan::MaxCanIfaces] |
std::mutex | mutex_ |
Shared across all ifaces. More... | |
const unsigned | num_ifaces_ |
Objects of this class are owned by the sub-node thread. This class does not use heap memory.
SharedMemoryPoolSize | Amount of memory, in bytes, that will be statically allocated for the memory pool that will be shared across all interfaces for RX/TX queues. Typically this value should be no less than 4K per interface. |
Definition at line 273 of file test_multithreading.cpp.
|
inline |
Definition at line 372 of file test_multithreading.cpp.
|
inlineoverrideprivate |
Definition at line 303 of file test_multithreading.cpp.
|
inlineoverrideprivatevirtual |
Total number of available CAN interfaces. This value shall not change after initialization.
Implements uavcan::ICanDriver.
Definition at line 308 of file test_multithreading.cpp.
|
inlineoverrideprivate |
This handler will be invoked by the main node thread.
Definition at line 349 of file test_multithreading.cpp.
|
inlineoverrideprivatevirtual |
This method will be invoked by the main node thread.
Implements ITxQueueInjector.
Definition at line 362 of file test_multithreading.cpp.
|
inlineoverrideprivate |
This and other methods of ICanDriver will be invoked by the sub-node thread.
Definition at line 313 of file test_multithreading.cpp.
|
private |
Shared across all ifaces.
Definition at line 298 of file test_multithreading.cpp.
|
private |
Definition at line 301 of file test_multithreading.cpp.
|
private |
Used to unblock the select() call when IO happens.
Definition at line 296 of file test_multithreading.cpp.
|
private |
Definition at line 299 of file test_multithreading.cpp.
|
private |
Shared across all ifaces.
Definition at line 297 of file test_multithreading.cpp.
|
private |
Definition at line 300 of file test_multithreading.cpp.