Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
uavcan::Dispatcher Class Reference

#include <dispatcher.hpp>

Inheritance diagram for uavcan::Dispatcher:
Inheritance graph
[legend]

Classes

class  ListenerRegistry
 

Public Member Functions

void cleanup (MonotonicTime ts)
 
 Dispatcher (ICanDriver &driver, IPoolAllocator &allocator, ISystemClock &sysclock)
 
CanIOManagergetCanIOManager ()
 
const CanIOManagergetCanIOManager () const
 
LoopbackFrameListenerRegistrygetLoopbackFrameListenerRegistry ()
 
NodeID getNodeID () const
 
unsigned getNumMessageListeners () const
 
unsigned getNumServiceRequestListeners () const
 
unsigned getNumServiceResponseListeners () const
 
OutgoingTransferRegistrygetOutgoingTransferRegistry ()
 
IRxFrameListenergetRxFrameListener () const
 
ISystemClockgetSystemClock ()
 
const ISystemClockgetSystemClock () const
 
TransferPerfCountergetTransferPerfCounter ()
 
const TransferPerfCountergetTransferPerfCounter () const
 
bool hasPublisher (DataTypeID dtid) const
 
bool hasServer (DataTypeID dtid) const
 
bool hasSubscriber (DataTypeID dtid) const
 
void installRxFrameListener (IRxFrameListener *listener)
 
bool isPassiveMode () const
 
bool registerMessageListener (TransferListener *listener)
 
bool registerServiceRequestListener (TransferListener *listener)
 
bool registerServiceResponseListener (TransferListener *listener)
 
void removeRxFrameListener ()
 
int send (const Frame &frame, MonotonicTime tx_deadline, MonotonicTime blocking_deadline, CanIOFlags flags, uint8_t iface_mask)
 
bool setNodeID (NodeID nid)
 
int spin (MonotonicTime deadline)
 
int spinOnce ()
 
void unregisterMessageListener (TransferListener *listener)
 
void unregisterServiceRequestListener (TransferListener *listener)
 
void unregisterServiceResponseListener (TransferListener *listener)
 
const LinkedListRoot< TransferListener > & getListOfMessageListeners () const
 
const LinkedListRoot< TransferListener > & getListOfServiceRequestListeners () const
 
const LinkedListRoot< TransferListener > & getListOfServiceResponseListeners () const
 

Private Member Functions

void handleFrame (const CanRxFrame &can_frame)
 
void handleLoopbackFrame (const CanRxFrame &can_frame)
 
void notifyRxFrameListener (const CanRxFrame &can_frame, CanIOFlags flags)
 
- Private Member Functions inherited from uavcan::Noncopyable
 Noncopyable ()
 
 ~Noncopyable ()
 

Private Attributes

CanIOManager canio_
 
ListenerRegistry lmsg_
 
LoopbackFrameListenerRegistry loopback_listeners_
 
ListenerRegistry lsrv_req_
 
ListenerRegistry lsrv_resp_
 
OutgoingTransferRegistry outgoing_transfer_reg_
 
TransferPerfCounter perf_
 
IRxFrameListenerrx_listener_
 
NodeID self_node_id_
 
bool self_node_id_is_set_
 
ISystemClocksysclock_
 

Detailed Description

This class performs low-level CAN frame routing.

Definition at line 80 of file dispatcher.hpp.

Constructor & Destructor Documentation

◆ Dispatcher()

uavcan::Dispatcher::Dispatcher ( ICanDriver driver,
IPoolAllocator allocator,
ISystemClock sysclock 
)
inline

Definition at line 136 of file dispatcher.hpp.

Member Function Documentation

◆ cleanup()

void uavcan::Dispatcher::cleanup ( MonotonicTime  ts)

Definition at line 306 of file uc_dispatcher.cpp.

◆ getCanIOManager() [1/2]

CanIOManager& uavcan::Dispatcher::getCanIOManager ( )
inline

Definition at line 234 of file dispatcher.hpp.

◆ getCanIOManager() [2/2]

const CanIOManager& uavcan::Dispatcher::getCanIOManager ( ) const
inline

Definition at line 233 of file dispatcher.hpp.

◆ getListOfMessageListeners()

const LinkedListRoot<TransferListener>& uavcan::Dispatcher::getListOfMessageListeners ( ) const
inline

These methods can be used to retreive lists of messages, service requests and service responses the dispatcher is currently listening to. Note that the list of service response listeners is very volatile, because a response listener will be removed from this list as soon as the corresponding service call is complete.

Definition at line 188 of file dispatcher.hpp.

◆ getListOfServiceRequestListeners()

const LinkedListRoot<TransferListener>& uavcan::Dispatcher::getListOfServiceRequestListeners ( ) const
inline

Definition at line 192 of file dispatcher.hpp.

◆ getListOfServiceResponseListeners()

const LinkedListRoot<TransferListener>& uavcan::Dispatcher::getListOfServiceResponseListeners ( ) const
inline

Definition at line 196 of file dispatcher.hpp.

◆ getLoopbackFrameListenerRegistry()

LoopbackFrameListenerRegistry& uavcan::Dispatcher::getLoopbackFrameListenerRegistry ( )
inline

Definition at line 207 of file dispatcher.hpp.

◆ getNodeID()

NodeID uavcan::Dispatcher::getNodeID ( ) const
inline

Node ID can be set only once. Non-unicast Node ID puts the node into passive mode.

Definition at line 222 of file dispatcher.hpp.

◆ getNumMessageListeners()

unsigned uavcan::Dispatcher::getNumMessageListeners ( ) const
inline

Definition at line 177 of file dispatcher.hpp.

◆ getNumServiceRequestListeners()

unsigned uavcan::Dispatcher::getNumServiceRequestListeners ( ) const
inline

Definition at line 178 of file dispatcher.hpp.

◆ getNumServiceResponseListeners()

unsigned uavcan::Dispatcher::getNumServiceResponseListeners ( ) const
inline

Definition at line 179 of file dispatcher.hpp.

◆ getOutgoingTransferRegistry()

OutgoingTransferRegistry& uavcan::Dispatcher::getOutgoingTransferRegistry ( )
inline

Definition at line 204 of file dispatcher.hpp.

◆ getRxFrameListener()

IRxFrameListener* uavcan::Dispatcher::getRxFrameListener ( ) const
inline

Definition at line 209 of file dispatcher.hpp.

◆ getSystemClock() [1/2]

ISystemClock& uavcan::Dispatcher::getSystemClock ( )
inline

Definition at line 231 of file dispatcher.hpp.

◆ getSystemClock() [2/2]

const ISystemClock& uavcan::Dispatcher::getSystemClock ( ) const
inline

Definition at line 230 of file dispatcher.hpp.

◆ getTransferPerfCounter() [1/2]

TransferPerfCounter& uavcan::Dispatcher::getTransferPerfCounter ( )
inline

Definition at line 237 of file dispatcher.hpp.

◆ getTransferPerfCounter() [2/2]

const TransferPerfCounter& uavcan::Dispatcher::getTransferPerfCounter ( ) const
inline

Definition at line 236 of file dispatcher.hpp.

◆ handleFrame()

void uavcan::Dispatcher::handleFrame ( const CanRxFrame can_frame)
private

Definition at line 149 of file uc_dispatcher.cpp.

◆ handleLoopbackFrame()

void uavcan::Dispatcher::handleLoopbackFrame ( const CanRxFrame can_frame)
private

Definition at line 199 of file uc_dispatcher.cpp.

◆ hasPublisher()

bool uavcan::Dispatcher::hasPublisher ( DataTypeID  dtid) const

Definition at line 364 of file uc_dispatcher.cpp.

◆ hasServer()

bool uavcan::Dispatcher::hasServer ( DataTypeID  dtid) const

Definition at line 369 of file uc_dispatcher.cpp.

◆ hasSubscriber()

bool uavcan::Dispatcher::hasSubscriber ( DataTypeID  dtid) const

Definition at line 359 of file uc_dispatcher.cpp.

◆ installRxFrameListener()

void uavcan::Dispatcher::installRxFrameListener ( IRxFrameListener listener)
inline

Definition at line 211 of file dispatcher.hpp.

◆ isPassiveMode()

bool uavcan::Dispatcher::isPassiveMode ( ) const
inline

Refer to the specs to learn more about passive mode.

Definition at line 228 of file dispatcher.hpp.

◆ notifyRxFrameListener()

void uavcan::Dispatcher::notifyRxFrameListener ( const CanRxFrame can_frame,
CanIOFlags  flags 
)
private

Definition at line 212 of file uc_dispatcher.cpp.

◆ registerMessageListener()

bool uavcan::Dispatcher::registerMessageListener ( TransferListener listener)

Definition at line 314 of file uc_dispatcher.cpp.

◆ registerServiceRequestListener()

bool uavcan::Dispatcher::registerServiceRequestListener ( TransferListener listener)

Definition at line 324 of file uc_dispatcher.cpp.

◆ registerServiceResponseListener()

bool uavcan::Dispatcher::registerServiceResponseListener ( TransferListener listener)

Definition at line 334 of file uc_dispatcher.cpp.

◆ removeRxFrameListener()

void uavcan::Dispatcher::removeRxFrameListener ( )
inline

Definition at line 210 of file dispatcher.hpp.

◆ send()

int uavcan::Dispatcher::send ( const Frame frame,
MonotonicTime  tx_deadline,
MonotonicTime  blocking_deadline,
CanIOFlags  flags,
uint8_t  iface_mask 
)

Refer to CanIOManager::send() for the parameter description

Definition at line 287 of file uc_dispatcher.cpp.

◆ setNodeID()

bool uavcan::Dispatcher::setNodeID ( NodeID  nid)

Definition at line 374 of file uc_dispatcher.cpp.

◆ spin()

int uavcan::Dispatcher::spin ( MonotonicTime  deadline)

This version returns strictly when the deadline is reached.

Definition at line 221 of file uc_dispatcher.cpp.

◆ spinOnce()

int uavcan::Dispatcher::spinOnce ( )

This version does not return until all available frames are processed.

Definition at line 252 of file uc_dispatcher.cpp.

◆ unregisterMessageListener()

void uavcan::Dispatcher::unregisterMessageListener ( TransferListener listener)

Definition at line 344 of file uc_dispatcher.cpp.

◆ unregisterServiceRequestListener()

void uavcan::Dispatcher::unregisterServiceRequestListener ( TransferListener listener)

Definition at line 349 of file uc_dispatcher.cpp.

◆ unregisterServiceResponseListener()

void uavcan::Dispatcher::unregisterServiceResponseListener ( TransferListener listener)

Definition at line 354 of file uc_dispatcher.cpp.

Member Data Documentation

◆ canio_

CanIOManager uavcan::Dispatcher::canio_
private

Definition at line 82 of file dispatcher.hpp.

◆ lmsg_

ListenerRegistry uavcan::Dispatcher::lmsg_
private

Definition at line 117 of file dispatcher.hpp.

◆ loopback_listeners_

LoopbackFrameListenerRegistry uavcan::Dispatcher::loopback_listeners_
private

Definition at line 122 of file dispatcher.hpp.

◆ lsrv_req_

ListenerRegistry uavcan::Dispatcher::lsrv_req_
private

Definition at line 118 of file dispatcher.hpp.

◆ lsrv_resp_

ListenerRegistry uavcan::Dispatcher::lsrv_resp_
private

Definition at line 119 of file dispatcher.hpp.

◆ outgoing_transfer_reg_

OutgoingTransferRegistry uavcan::Dispatcher::outgoing_transfer_reg_
private

Definition at line 84 of file dispatcher.hpp.

◆ perf_

TransferPerfCounter uavcan::Dispatcher::perf_
private

Definition at line 85 of file dispatcher.hpp.

◆ rx_listener_

IRxFrameListener* uavcan::Dispatcher::rx_listener_
private

Definition at line 123 of file dispatcher.hpp.

◆ self_node_id_

NodeID uavcan::Dispatcher::self_node_id_
private

Definition at line 126 of file dispatcher.hpp.

◆ self_node_id_is_set_

bool uavcan::Dispatcher::self_node_id_is_set_
private

Definition at line 127 of file dispatcher.hpp.

◆ sysclock_

ISystemClock& uavcan::Dispatcher::sysclock_
private

Definition at line 83 of file dispatcher.hpp.


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


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