Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
uavcan::Node< MemPoolSize > Class Template Reference

#include <node.hpp>

Inheritance diagram for uavcan::Node< MemPoolSize >:
Inheritance graph
[legend]

Public Member Functions

virtual RemoveReference< Allocator >::Type & getAllocator ()
 
const protocol::HardwareVersion & getHardwareVersion () const
 
uint64_t getInternalFailureCount () const
 
LoggergetLogger ()
 
const NodeStatusProvider::NodeNamegetName () const
 
NodeStatusProvidergetNodeStatusProvider ()
 
RestartRequestServergetRestartRequestServer ()
 
virtual SchedulergetScheduler ()
 
virtual const SchedulergetScheduler () const
 
const protocol::SoftwareVersion & getSoftwareVersion () const
 
bool isStarted () const
 
 Node (ICanDriver &can_driver, ISystemClock &system_clock)
 
 Node (ICanDriver &can_driver, ISystemClock &system_clock, IPoolAllocator &allocator)
 
void setHardwareVersion (const protocol::HardwareVersion &version)
 
void setHealthCritical ()
 
void setHealthError ()
 
void setHealthOk ()
 
void setHealthWarning ()
 
void setModeInitialization ()
 
void setModeMaintenance ()
 
void setModeOfflineAndPublish ()
 
void setModeOperational ()
 
void setModeSoftwareUpdate ()
 
void setName (const NodeStatusProvider::NodeName &name)
 
void setRestartRequestHandler (IRestartRequestHandler *handler)
 
void setSoftwareVersion (const protocol::SoftwareVersion &version)
 
void setVendorSpecificStatusCode (NodeStatusProvider::VendorSpecificStatusCode code)
 
int spin (MonotonicDuration duration)
 
int spin (MonotonicTime deadline)
 
int spinOnce ()
 
int start (const TransferPriority node_status_transfer_priority=TransferPriority::Default)
 
template<typename... Args>
void logDebug (const char *source, const char *format, Args... args)
 
template<typename... Args>
void logInfo (const char *source, const char *format, Args... args)
 
template<typename... Args>
void logWarning (const char *source, const char *format, Args... args)
 
template<typename... Args>
void logError (const char *source, const char *format, Args... args)
 
- Public Member Functions inherited from uavcan::INode
DispatchergetDispatcher ()
 
const DispatchergetDispatcher () const
 
MonotonicTime getMonotonicTime () const
 
NodeID getNodeID () const
 
ISystemClockgetSystemClock ()
 
UtcTime getUtcTime () const
 
int injectTxFrame (const CanFrame &frame, MonotonicTime tx_deadline, uint8_t iface_mask, CanIOFlags flags=0)
 
void installRxFrameListener (IRxFrameListener *lst)
 
bool isPassiveMode () const
 
void removeRxFrameListener ()
 
bool setNodeID (NodeID nid)
 
int spin (MonotonicDuration duration)
 
int spin (MonotonicTime deadline)
 
int spinOnce ()
 
virtual ~INode ()
 

Protected Member Functions

virtual void registerInternalFailure (const char *msg)
 

Private Types

typedef Select<(MemPoolSize > 0), PoolAllocator< MemPoolSize, MemPoolBlockSize >, IPoolAllocator & >::Result Allocator
 

Private Member Functions

void commonInit ()
 

Private Attributes

uint64_t internal_failure_cnt_
 
Allocator pool_allocator_
 
DataTypeInfoProvider proto_dtp_
 
Logger proto_logger_
 
NodeStatusProvider proto_nsp_
 
RestartRequestServer proto_rrs_
 
TransportStatsProvider proto_tsp_
 
Scheduler scheduler_
 
bool started_
 

Detailed Description

template<std::size_t MemPoolSize = 0>
class uavcan::Node< MemPoolSize >

This is the top-level node API. A custom node class can be implemented if needed, in which case it shall inherit INode.

Template Parameters
MemPoolSizeSize of memory pool for this node, in bytes. Please refer to the documentation for details. If this value is zero, the constructor will accept a reference to user-provided allocator.

Definition at line 38 of file node.hpp.

Member Typedef Documentation

◆ Allocator

template<std::size_t MemPoolSize = 0>
typedef Select<(MemPoolSize > 0), PoolAllocator<MemPoolSize, MemPoolBlockSize>, IPoolAllocator& >::Result uavcan::Node< MemPoolSize >::Allocator
private

Definition at line 44 of file node.hpp.

Constructor & Destructor Documentation

◆ Node() [1/2]

template<std::size_t MemPoolSize = 0>
uavcan::Node< MemPoolSize >::Node ( ICanDriver can_driver,
ISystemClock system_clock 
)
inline

This overload is only valid if MemPoolSize > 0.

Definition at line 82 of file node.hpp.

◆ Node() [2/2]

template<std::size_t MemPoolSize = 0>
uavcan::Node< MemPoolSize >::Node ( ICanDriver can_driver,
ISystemClock system_clock,
IPoolAllocator allocator 
)
inline

This overload is only valid if MemPoolSize == 0.

Definition at line 99 of file node.hpp.

Member Function Documentation

◆ commonInit()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::commonInit ( )
inlineprivate

Definition at line 60 of file node.hpp.

◆ getAllocator()

template<std::size_t MemPoolSize = 0>
virtual RemoveReference<Allocator>::Type& uavcan::Node< MemPoolSize >::getAllocator ( )
inlinevirtual

Implements uavcan::INode.

Definition at line 115 of file node.hpp.

◆ getHardwareVersion()

template<std::size_t MemPoolSize = 0>
const protocol::HardwareVersion& uavcan::Node< MemPoolSize >::getHardwareVersion ( ) const
inline

Definition at line 207 of file node.hpp.

◆ getInternalFailureCount()

template<std::size_t MemPoolSize = 0>
uint64_t uavcan::Node< MemPoolSize >::getInternalFailureCount ( ) const
inline

Definition at line 149 of file node.hpp.

◆ getLogger()

template<std::size_t MemPoolSize = 0>
Logger& uavcan::Node< MemPoolSize >::getLogger ( )
inline

Use this method to configure logging.

Definition at line 266 of file node.hpp.

◆ getName()

template<std::size_t MemPoolSize = 0>
const NodeStatusProvider::NodeName& uavcan::Node< MemPoolSize >::getName ( ) const
inline

Gets/sets the node name, e.g. "com.example.product_name". The node name can be set only once. The name must be set before the node is started, otherwise the node will refuse to start up.

Definition at line 166 of file node.hpp.

◆ getNodeStatusProvider()

template<std::size_t MemPoolSize = 0>
NodeStatusProvider& uavcan::Node< MemPoolSize >::getNodeStatusProvider ( )
inline

Definition at line 209 of file node.hpp.

◆ getRestartRequestServer()

template<std::size_t MemPoolSize = 0>
RestartRequestServer& uavcan::Node< MemPoolSize >::getRestartRequestServer ( )
inline

Definition at line 217 of file node.hpp.

◆ getScheduler() [1/2]

template<std::size_t MemPoolSize = 0>
virtual Scheduler& uavcan::Node< MemPoolSize >::getScheduler ( )
inlinevirtual

Implements uavcan::INode.

Definition at line 117 of file node.hpp.

◆ getScheduler() [2/2]

template<std::size_t MemPoolSize = 0>
virtual const Scheduler& uavcan::Node< MemPoolSize >::getScheduler ( ) const
inlinevirtual

Implements uavcan::INode.

Definition at line 118 of file node.hpp.

◆ getSoftwareVersion()

template<std::size_t MemPoolSize = 0>
const protocol::SoftwareVersion& uavcan::Node< MemPoolSize >::getSoftwareVersion ( ) const
inline

Definition at line 206 of file node.hpp.

◆ isStarted()

template<std::size_t MemPoolSize = 0>
bool uavcan::Node< MemPoolSize >::isStarted ( ) const
inline

Definition at line 147 of file node.hpp.

◆ logDebug()

template<std::size_t MemPoolSize = 0>
template<typename... Args>
void uavcan::Node< MemPoolSize >::logDebug ( const char *  source,
const char *  format,
Args...  args 
)
inline

Node logging. Logging calls are passed directly into the Logger instance. Type safe log formatting is supported only in C++11 mode.

Definition at line 228 of file node.hpp.

◆ logError()

template<std::size_t MemPoolSize = 0>
template<typename... Args>
void uavcan::Node< MemPoolSize >::logError ( const char *  source,
const char *  format,
Args...  args 
)
inline

Definition at line 246 of file node.hpp.

◆ logInfo()

template<std::size_t MemPoolSize = 0>
template<typename... Args>
void uavcan::Node< MemPoolSize >::logInfo ( const char *  source,
const char *  format,
Args...  args 
)
inline

Definition at line 234 of file node.hpp.

◆ logWarning()

template<std::size_t MemPoolSize = 0>
template<typename... Args>
void uavcan::Node< MemPoolSize >::logWarning ( const char *  source,
const char *  format,
Args...  args 
)
inline

Definition at line 240 of file node.hpp.

◆ registerInternalFailure()

template<std::size_t MemPoolSize = 0>
virtual void uavcan::Node< MemPoolSize >::registerInternalFailure ( const char *  msg)
inlineprotectedvirtual

Implements uavcan::INode.

Definition at line 67 of file node.hpp.

◆ setHardwareVersion()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setHardwareVersion ( const protocol::HardwareVersion &  version)
inline

Definition at line 204 of file node.hpp.

◆ setHealthCritical()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setHealthCritical ( )
inline

Definition at line 175 of file node.hpp.

◆ setHealthError()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setHealthError ( )
inline

Definition at line 174 of file node.hpp.

◆ setHealthOk()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setHealthOk ( )
inline

Node health code helpers.

Definition at line 172 of file node.hpp.

◆ setHealthWarning()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setHealthWarning ( )
inline

Definition at line 173 of file node.hpp.

◆ setModeInitialization()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setModeInitialization ( )
inline

Definition at line 182 of file node.hpp.

◆ setModeMaintenance()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setModeMaintenance ( )
inline

Definition at line 183 of file node.hpp.

◆ setModeOfflineAndPublish()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setModeOfflineAndPublish ( )
inline

Definition at line 186 of file node.hpp.

◆ setModeOperational()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setModeOperational ( )
inline

Node mode code helpers. Note that INITIALIZATION is the default mode; the application has to manually set it to OPERATIONAL.

Definition at line 181 of file node.hpp.

◆ setModeSoftwareUpdate()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setModeSoftwareUpdate ( )
inline

Definition at line 184 of file node.hpp.

◆ setName()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setName ( const NodeStatusProvider::NodeName name)
inline

Definition at line 167 of file node.hpp.

◆ setRestartRequestHandler()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setRestartRequestHandler ( IRestartRequestHandler handler)
inline

Restart handler can be installed to handle external node restart requests (highly recommended).

Definition at line 215 of file node.hpp.

◆ setSoftwareVersion()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setSoftwareVersion ( const protocol::SoftwareVersion &  version)
inline

Gets/sets the node version information.

Definition at line 203 of file node.hpp.

◆ setVendorSpecificStatusCode()

template<std::size_t MemPoolSize = 0>
void uavcan::Node< MemPoolSize >::setVendorSpecificStatusCode ( NodeStatusProvider::VendorSpecificStatusCode  code)
inline

Updates the vendor-specific status code.

Definition at line 195 of file node.hpp.

◆ spin() [1/2]

template<std::size_t MemPoolSize = 0>
int uavcan::Node< MemPoolSize >::spin ( MonotonicDuration  duration)
inline

Definition at line 129 of file node.hpp.

◆ spin() [2/2]

template<std::size_t MemPoolSize = 0>
int uavcan::Node< MemPoolSize >::spin ( MonotonicTime  deadline)
inline

Definition at line 120 of file node.hpp.

◆ spinOnce()

template<std::size_t MemPoolSize = 0>
int uavcan::Node< MemPoolSize >::spinOnce ( )
inline

Definition at line 138 of file node.hpp.

◆ start()

template<std::size_t MemPoolSize_>
int uavcan::Node< MemPoolSize_ >::start ( const TransferPriority  node_status_transfer_priority = TransferPriority::Default)

Starts the node and publishes uavcan.protocol.NodeStatus immediately. Does not so anything if the node is already started. Once started, the node can't stop. If the node failed to start up, it's recommended to destroy the current node instance and start over. Returns negative error code.

Parameters
node_status_transfer_priorityTransfer priority that will be used for outgoing NodeStatus messages. Normal priority is used by default.

Definition at line 274 of file node.hpp.

Member Data Documentation

◆ internal_failure_cnt_

template<std::size_t MemPoolSize = 0>
uint64_t uavcan::Node< MemPoolSize >::internal_failure_cnt_
private

Definition at line 57 of file node.hpp.

◆ pool_allocator_

template<std::size_t MemPoolSize = 0>
Allocator uavcan::Node< MemPoolSize >::pool_allocator_
private

Definition at line 46 of file node.hpp.

◆ proto_dtp_

template<std::size_t MemPoolSize = 0>
DataTypeInfoProvider uavcan::Node< MemPoolSize >::proto_dtp_
private

Definition at line 51 of file node.hpp.

◆ proto_logger_

template<std::size_t MemPoolSize = 0>
Logger uavcan::Node< MemPoolSize >::proto_logger_
private

Definition at line 52 of file node.hpp.

◆ proto_nsp_

template<std::size_t MemPoolSize = 0>
NodeStatusProvider uavcan::Node< MemPoolSize >::proto_nsp_
private

Definition at line 49 of file node.hpp.

◆ proto_rrs_

template<std::size_t MemPoolSize = 0>
RestartRequestServer uavcan::Node< MemPoolSize >::proto_rrs_
private

Definition at line 53 of file node.hpp.

◆ proto_tsp_

template<std::size_t MemPoolSize = 0>
TransportStatsProvider uavcan::Node< MemPoolSize >::proto_tsp_
private

Definition at line 54 of file node.hpp.

◆ scheduler_

template<std::size_t MemPoolSize = 0>
Scheduler uavcan::Node< MemPoolSize >::scheduler_
private

Definition at line 47 of file node.hpp.

◆ started_

template<std::size_t MemPoolSize = 0>
bool uavcan::Node< MemPoolSize >::started_
private

Definition at line 58 of file node.hpp.


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


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