Lely core libraries  2.3.4
lely::canopen::AsyncMaster Class Reference

An asynchronous CANopen master. More...

#include <master.hpp>

Inheritance diagram for lely::canopen::AsyncMaster:
Collaboration diagram for lely::canopen::AsyncMaster:

Public Member Functions

void OnCanState (::std::function< void(io::CanState, io::CanState)> on_can_state)
 
void OnCanError (::std::function< void(io::CanError)> on_can_error)
 
void OnRpdoWrite (::std::function< void(uint8_t, uint16_t, uint8_t)> on_rpdo_write)
 
void OnCommand (::std::function< void(NmtCommand)> on_command)
 
void OnHeartbeat (::std::function< void(uint8_t, bool)> on_heartbeat)
 
void OnState (::std::function< void(uint8_t, NmtState)> on_state)
 
void OnSync (::std::function< void(uint8_t, const time_point &)> on_sync)
 
void OnSyncError (::std::function< void(uint16_t, uint8_t)> on_sync_error)
 
void OnTime (::std::function< void(const ::std::chrono::system_clock::time_point &)> on_time)
 
void OnEmcy (::std::function< void(uint8_t, uint16_t, uint8_t, uint8_t[5])> on_emcy)
 
void OnNodeGuarding (::std::function< void(uint8_t, bool)> on_node_guarding)
 
void OnBoot (::std::function< void(uint8_t, NmtState, char, const ::std::string &)> on_boot)
 
 BasicMaster (ev_exec_t *exec, io::TimerBase &timer, io::CanChannelBase &chan, const ::std::string &dcf_txt, const ::std::string &dcf_bin="", uint8_t id=0xff)
 Creates a new CANopen master. More...
 
 BasicMaster (io::TimerBase &timer, io::CanChannelBase &chan, const ::std::string &dcf_txt, const ::std::string &dcf_bin="", uint8_t id=0xff)
 Creates a new CANopen master.
 
- Public Member Functions inherited from lely::canopen::BasicMaster
 BasicMaster (ev_exec_t *exec, io::TimerBase &timer, io::CanChannelBase &chan, const ::std::string &dcf_txt, const ::std::string &dcf_bin="", uint8_t id=0xff)
 Creates a new CANopen master. More...
 
 BasicMaster (io::TimerBase &timer, io::CanChannelBase &chan, const ::std::string &dcf_txt, const ::std::string &dcf_bin="", uint8_t id=0xff)
 Creates a new CANopen master.
 
Object operator[] (::std::ptrdiff_t idx) noexcept
 Returns a mutator object that provides read/write access to the specified CANopen object in the local object dictionary. More...
 
ConstObject operator[] (::std::ptrdiff_t idx) const noexcept
 Returns an accessor object that provides read-only access to the specified CANopen object in the local object dictionary. More...
 
RpdoMapped RpdoMapped (uint8_t id) const noexcept
 Returns an accessor object that provides read-only access to RPDO-mapped objects in the remote object dictionary of the specified node. More...
 
TpdoMapped TpdoMapped (uint8_t id) noexcept
 Returns a mutator object that provides read/write access to TPDO-mapped objects in the remote object dictionary of the specified node. More...
 
bool Boot (uint8_t id)
 Requests the NMT 'boot slave' process for the specified node. More...
 
bool IsReady (uint8_t id) const
 Returns true if the remote node is ready (i.e., the NMT 'boot slave' process has successfully completed and no subsequent boot-up event has been received) and false if not. More...
 
ev::Future< void > AsyncDeconfig (uint8_t id)
 Queues the DriverBase::OnDeconfig() method for the driver with the specified node-ID and creates a future which becomes ready once the deconfiguration process completes. More...
 
ev::Future<::std::size_t, void > AsyncDeconfig ()
 Queues the DriverBase::OnDeconfig() method for all registered drivers and creates a future which becomes ready once all deconfiguration processes complete. More...
 
void Error (uint8_t id)
 Indicates the occurrence of an error event on a remote node and triggers the error handling process (see Fig. More...
 
void Command (NmtCommand cs, uint8_t id=0)
 Issues an NMT command to a slave. More...
 
void RpdoRtr (int num=0) noexcept
 
void TpdoEvent (int num=0) noexcept
 
template<class T >
void DamMpdoEvent (int num, uint8_t id, uint16_t idx, uint8_t subidx, T value)
 
::std::chrono::milliseconds GetTimeout () const
 Returns the SDO timeout used during the NMT 'boot slave' and 'check configuration' processes. More...
 
void SetTimeout (const ::std::chrono::milliseconds &timeout)
 Sets the SDO timeout used during the NMT 'boot slave' and 'check configuration' processes. More...
 
template<class T >
void SubmitRead (uint8_t id, SdoUploadRequest< T > &req)
 Equivalent to SubmitRead(uint8_t id, SdoUploadRequest<T>& req, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T >
void SubmitRead (uint8_t id, SdoUploadRequest< T > &req, ::std::error_code &ec)
 Queues an asynchronous read (SDO upload) operation. More...
 
template<class T , class F >
void SubmitRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con)
 Equivalent to SubmitRead(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, F&& con, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T , class F >
void SubmitRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con, ::std::error_code &ec)
 Equivalent to SubmitRead(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it uses the SDO timeout given by GetTimeout().
 
template<class T , class F >
void SubmitRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con, const ::std::chrono::milliseconds &timeout)
 Equivalent to SubmitRead(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T , class F >
void SubmitRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con, const ::std::chrono::milliseconds &timeout, ::std::error_code &ec)
 Queues an asynchronous read (SDO upload) operation. More...
 
template<class T , class F >
void SubmitBlockRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con)
 Equivalent to SubmitBlockRead(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, F&& con, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T , class F >
void SubmitBlockRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con, ::std::error_code &ec)
 Equivalent to SubmitBlockRead(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it uses the SDO timeout given by GetTimeout().
 
template<class T , class F >
void SubmitBlockRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con, const ::std::chrono::milliseconds &timeout)
 Equivalent to SubmitBlockRead(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T , class F >
void SubmitBlockRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con, const ::std::chrono::milliseconds &timeout, ::std::error_code &ec)
 Queues an asynchronous read (SDO block upload) operation. More...
 
template<class T , class F >
void SubmitUpload (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, F &&con, bool block, const ::std::chrono::milliseconds &timeout, ::std::error_code &ec)
 Queues an asynchronous SDO upload operation. More...
 
template<class T >
void SubmitWrite (uint8_t id, SdoDownloadRequest< T > &req)
 Equivalent to SubmitWrite(uint8_t id, SdoDownloadRequest<T>& req, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T >
void SubmitWrite (uint8_t id, SdoDownloadRequest< T > &req, ::std::error_code &ec)
 Queues an asynchronous write (SDO download) operation. More...
 
template<class T , class F >
void SubmitWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con)
 Equivalent to SubmitWrite(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, T&& value, F&& con, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T , class F >
void SubmitWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con, ::std::error_code &ec)
 Equivalent to SubmitWrite(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, T&& value, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it uses the SDO timeout given by GetTimeout().
 
template<class T , class F >
void SubmitWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con, const ::std::chrono::milliseconds &timeout)
 Equivalent to SubmitWrite(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, T&& value, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T , class F >
void SubmitWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con, const ::std::chrono::milliseconds &timeout, ::std::error_code &ec)
 Queues an asynchronous write (SDO download) operation. More...
 
template<class T , class F >
void SubmitBlockWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con)
 Equivalent to SubmitBlockWrite(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, T&& value, F&& con, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T , class F >
void SubmitBlockWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con, ::std::error_code &ec)
 Equivalent to SubmitBlockWrite(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, T&& value, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it uses the SDO timeout given by GetTimeout().
 
template<class T , class F >
void SubmitBlockWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con, const ::std::chrono::milliseconds &timeout)
 Equivalent to SubmitBlockWrite(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, T&& value, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class T , class F >
void SubmitBlockWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con, const ::std::chrono::milliseconds &timeout, ::std::error_code &ec)
 Queues an asynchronous write (SDO block download) operation. More...
 
template<class T , class F >
void SubmitDownload (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, F &&con, bool block, const ::std::chrono::milliseconds &timeout, ::std::error_code &ec)
 Queues an asynchronous SDO download operation. More...
 
void SubmitWriteDcf (uint8_t id, SdoDownloadDcfRequest &req)
 Equivalent to SubmitWriteDcf(uint8_t id, SdoDownloadDcfRequest& req, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
void SubmitWriteDcf (uint8_t id, SdoDownloadDcfRequest &req, ::std::error_code &ec)
 Queues an asynchronous write (SDO download) operation. More...
 
template<class F >
void SubmitWriteDcf (ev_exec_t *exec, uint8_t id, const uint8_t *begin, const uint8_t *end, F &&con)
 Equivalent to SubmitWriteDcf(ev_exec_t* exec, uint8_t id, const uint8_t *begin, const uint8_t *end, F&& con, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class F >
void SubmitWriteDcf (ev_exec_t *exec, uint8_t id, const uint8_t *begin, const uint8_t *end, F &&con, ::std::error_code &ec)
 Equivalent to SubmitWriteDcf(ev_exec_t* exec, uint8_t id, const uint8_t *begin, const uint8_t *end, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it uses the SDO timeout given by GetTimeout().
 
template<class F >
void SubmitWriteDcf (ev_exec_t *exec, uint8_t id, const uint8_t *begin, const uint8_t *end, F &&con, const ::std::chrono::milliseconds &timeout)
 Equivalent to SubmitWriteDcf(ev_exec_t* exec, uint8_t id, const uint8_t *begin, const uint8_t *end, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class F >
void SubmitWriteDcf (ev_exec_t *exec, uint8_t id, const uint8_t *begin, const uint8_t *end, F &&con, const ::std::chrono::milliseconds &timeout, ::std::error_code &ec)
 Queues a series of asynchronous write (SDO download) operations. More...
 
template<class F >
void SubmitWriteDcf (ev_exec_t *exec, uint8_t id, const char *path, F &&con)
 Equivalent to SubmitWriteDcf(ev_exec_t* exec, uint8_t id, const char* path, F&& con, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class F >
void SubmitWriteDcf (ev_exec_t *exec, uint8_t id, const char *path, F &&con, ::std::error_code &ec)
 Equivalent to SubmitWriteDcf(ev_exec_t* exec, uint8_t id, const char* path, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it uses the SDO timeout given by GetTimeout().
 
template<class F >
void SubmitWriteDcf (ev_exec_t *exec, uint8_t id, const char *path, F &&con, const ::std::chrono::milliseconds &timeout)
 Equivalent to SubmitWriteDcf(ev_exec_t* exec, uint8_t id, const char* path, F&& con, const ::std::chrono::milliseconds& timeout, ::std::error_code& ec), except that it throws lely::canopen::SdoError on error.
 
template<class F >
void SubmitWriteDcf (ev_exec_t *exec, uint8_t id, const char *path, F &&con, const ::std::chrono::milliseconds &timeout, ::std::error_code &ec)
 Queues a series of asynchronous write (SDO download) operations. More...
 
template<class T >
SdoFuture< T > AsyncRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx)
 Equivalent to AsyncRead(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, const ::std::chrono::milliseconds& timeout), except that it uses the SDO timeout given by GetTimeout().
 
template<class T >
SdoFuture< T > AsyncRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, const ::std::chrono::milliseconds &timeout)
 Queues an asynchronous read (SDO upload) operation and creates a future which becomes ready once the request completes (or is canceled). More...
 
template<class T >
SdoFuture< T > AsyncBlockRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx)
 Equivalent to AsyncBlockRead(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, const ::std::chrono::milliseconds& timeout), except that it uses the SDO timeout given by GetTimeout().
 
template<class T >
SdoFuture< T > AsyncBlockRead (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, const ::std::chrono::milliseconds &timeout)
 Queues an asynchronous read (SDO block upload) operation and creates a future which becomes ready once the request completes (or is canceled). More...
 
template<class T >
SdoFuture< T > AsyncUpload (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, bool block, const ::std::chrono::milliseconds &timeout)
 Queues an asynchronous SDO upload operation and creates a future which becomes ready once the request completes (or is canceled). More...
 
template<class T >
SdoFuture< void > AsyncWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value)
 Equivalent to AsyncWrite(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, T&& value, const ::std::chrono::milliseconds& timeout), except that it uses the SDO timeout given by GetTimeout().
 
template<class T >
SdoFuture< void > AsyncWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, const ::std::chrono::milliseconds &timeout)
 Queues an asynchronous write (SDO download) operation and creates a future which becomes ready once the request completes (or is canceled). More...
 
template<class T >
SdoFuture< void > AsyncBlockWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value)
 Equivalent to AsyncBlockWrite(ev_exec_t* exec, uint8_t id, uint16_t idx, uint8_t subidx, T&& value, const ::std::chrono::milliseconds& timeout), except that it uses the SDO timeout given by GetTimeout().
 
template<class T >
SdoFuture< void > AsyncBlockWrite (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, const ::std::chrono::milliseconds &timeout)
 Queues an asynchronous write (SDO block download) operation and creates a future which becomes ready once the request completes (or is canceled). More...
 
template<class T >
SdoFuture< void > AsyncDownload (ev_exec_t *exec, uint8_t id, uint16_t idx, uint8_t subidx, T &&value, bool block, const ::std::chrono::milliseconds &timeout)
 Queues an asynchronous SDO download operation and creates a future which becomes ready once the request completes (or is canceled). More...
 
SdoFuture< void > AsyncWriteDcf (ev_exec_t *exec, uint8_t id, const uint8_t *begin, const uint8_t *end)
 Equivalent to AsyncWriteDcf(ev_exec_t* exec, uint8_t id, const uint8_t* begin, const uint8_t* end, const ::std::chrono::milliseconds& timeout), except that it uses the SDO timeout given by GetTimeout().
 
SdoFuture< void > AsyncWriteDcf (ev_exec_t *exec, uint8_t id, const uint8_t *begin, const uint8_t *end, const ::std::chrono::milliseconds &timeout)
 Queues a series of asynchronous write (SDO download) operations, corresponding to the entries in the specified concise DCF, and creates a future which becomes ready once all requests complete (or an error occurs). More...
 
SdoFuture< void > AsyncWriteDcf (ev_exec_t *exec, uint8_t id, const char *path)
 Equivalent to AsyncWriteDcf(ev_exec_t* exec, uint8_t id, const char* path, const ::std::chrono::milliseconds& timeout), except that it uses the SDO timeout given by GetTimeout().
 
SdoFuture< void > AsyncWriteDcf (ev_exec_t *exec, uint8_t id, const char *path, const ::std::chrono::milliseconds &timeout)
 Queues a series of asynchronous write (SDO download) operations, corresponding to the entries in the specified concise DCF, and creates a future which becomes ready once all requests complete (or an error occurs). More...
 
void Insert (DriverBase &driver)
 Registers a driver for a remote CANopen node. More...
 
void Erase (DriverBase &driver)
 Unregisters a driver for a remote CANopen node. More...
 
void OnCanState (::std::function< void(io::CanState, io::CanState)> on_can_state)
 
void OnCanError (::std::function< void(io::CanError)> on_can_error)
 
void OnRpdoWrite (::std::function< void(uint8_t, uint16_t, uint8_t)> on_rpdo_write)
 
void OnCommand (::std::function< void(NmtCommand)> on_command)
 
void OnHeartbeat (::std::function< void(uint8_t, bool)> on_heartbeat)
 
void OnState (::std::function< void(uint8_t, NmtState)> on_state)
 
void OnSync (::std::function< void(uint8_t, const time_point &)> on_sync)
 
void OnSyncError (::std::function< void(uint16_t, uint8_t)> on_sync_error)
 
void OnTime (::std::function< void(const ::std::chrono::system_clock::time_point &)> on_time)
 
void OnEmcy (::std::function< void(uint8_t, uint16_t, uint8_t, uint8_t[5])> on_emcy)
 
void OnNodeGuarding (::std::function< void(uint8_t, bool)> on_node_guarding)
 Registers the function invoked when a node guarding timeout event occurs or is resolved. More...
 
void OnBoot (::std::function< void(uint8_t, NmtState, char, const ::std::string &)> on_boot)
 Registers the function invoked when the NMT 'boot slave' process completes. More...
 
- Public Member Functions inherited from lely::canopen::Node
 Node (ev_exec_t *exec, io::TimerBase &timer, io::CanChannelBase &chan, const ::std::string &dcf_txt, const ::std::string &dcf_bin="", uint8_t id=0xff)
 Creates a new CANopen node. More...
 
 Node (io::TimerBase &timer, io::CanChannelBase &chan, const ::std::string &dcf_txt, const ::std::string &dcf_bin="", uint8_t id=0xff)
 Creates a new CANopen node.
 
ev::Executor GetExecutor () const noexcept
 Returns the executor used to process I/O and CANopen events.
 
io::ContextBase GetContext () const noexcept
 Returns the underlying I/O context with which this context is registered.
 
io::Clock GetClock () const noexcept
 Returns the clock used by the timer.
 
void SubmitWait (const time_point &t, io_tqueue_wait &wait)
 Submits a wait operation. More...
 
void SubmitWait (const duration &d, io_tqueue_wait &wait)
 Submits a wait operation. More...
 
template<class F >
void SubmitWait (const time_point &t, ev_exec_t *exec, F &&f)
 Submits a wait operation. More...
 
template<class F >
void SubmitWait (const duration &d, ev_exec_t *exec, F &&f)
 Submits a wait operation. More...
 
template<class F >
typename ::std::enable_if<!::std::is_base_of< io_tqueue_wait, typename ::std::decay< F >::type >::value >::type SubmitWait (const time_point &t, F &&f)
 Equivalent to SubmitWait(t, nullptr, f).
 
template<class F >
typename ::std::enable_if<!::std::is_base_of< io_tqueue_wait, typename ::std::decay< F >::type >::value >::type SubmitWait (const duration &d, F &&f)
 Equivalent to SubmitWait(d, nullptr, f).
 
ev::Future< void, ::std::exception_ptr > AsyncWait (ev_exec_t *exec, const time_point &t, io_tqueue_wait **pwait=nullptr)
 Submits an asynchronous wait operation and creates a future which becomes ready once the wait operation completes (or is canceled). More...
 
ev::Future< void, ::std::exception_ptr > AsyncWait (ev_exec_t *exec, const duration &d, io_tqueue_wait **pwait=nullptr)
 Submits an asynchronous wait operation and creates a future which becomes ready once the wait operation completes (or is canceled). More...
 
ev::Future< void, ::std::exception_ptr > AsyncWait (const time_point &t, io_tqueue_wait **pwait=nullptr)
 Equivalent to AsyncWait(nullptr, t, pwait).
 
ev::Future< void, ::std::exception_ptr > AsyncWait (const duration &d, io_tqueue_wait **pwait=nullptr)
 Equivalent to AsyncWait(nullptr, d, pwait).
 
bool CancelWait (io_tqueue_wait &wait) noexcept
 Cancels the specified wait operation if it is pending. More...
 
bool AbortWait (io_tqueue_wait &wait) noexcept
 Aborts the specified wait operation if it is pending. More...
 
ev::Future< void, ::std::exception_ptr > AsyncSwitchBitrate (io::CanControllerBase &ctrl, int bitrate, ::std::chrono::milliseconds delay)
 Stops the specified CAN controller and submits asynchronous operations to wait for the delay period, set the new bit rate, wait for the delay period again, and restart the CAN controller. More...
 
void OnCanState (::std::function< void(io::CanState, io::CanState)> on_can_state)
 Registers the function to be invoked when a CAN bus state change is detected. More...
 
void OnCanError (::std::function< void(io::CanError)> on_can_error)
 Registers the function to be invoked when an error is detected on the CAN bus. More...
 
void Reset ()
 (Re)starts the node. More...
 
void ConfigHeartbeat (uint8_t id, const ::std::chrono::milliseconds &ms, ::std::error_code &ec)
 Configures heartbeat consumption for the specified node by updating CANopen object 1016 (Consumer heartbeat time). More...
 
void ConfigHeartbeat (uint8_t id, const ::std::chrono::milliseconds &ms)
 Configures heartbeat consumption for the specified node by updating CANopen object 1016 (Consumer heartbeat time). More...
 
void OnCommand (::std::function< void(NmtCommand)> on_command)
 Registers the function to be invoked when an NMT command is received from the master. More...
 
void OnHeartbeat (::std::function< void(uint8_t, bool)> on_heartbeat)
 Registers the function to be invoked when a heartbeat timeout event occurs or is resolved. More...
 
void OnState (::std::function< void(uint8_t, NmtState)> on_state)
 Registers the function to be invoked when an NMT state change or boot-up event is detected for a remote node by the heartbeat protocol. More...
 
void OnRpdo (::std::function< void(int, ::std::error_code, const void *, ::std::size_t)> on_rpdo)
 Registers the function to be invoked when a Receive-PDO is processed. More...
 
void OnRpdoError (::std::function< void(int, uint16_t, uint8_t)> on_rpdo_error)
 Registers the function to be invoked when a Receive-PDO length mismatch or timeout error occurs. More...
 
void OnTpdo (::std::function< void(int, ::std::error_code, const void *, ::std::size_t)> on_tpdo)
 Registers the function to be invoked after a Transmit-PDO is sent or an error occurs. More...
 
void OnSync (::std::function< void(uint8_t, const time_point &)> on_sync)
 Registers the function to be invoked when a SYNC message is sent/received. More...
 
void OnSyncError (::std::function< void(uint16_t, uint8_t)> on_sync_error)
 Registers the function to be invoked when the data length of a received SYNC message does not match. More...
 
void OnTime (::std::function< void(const ::std::chrono::system_clock::time_point &)> on_time)
 Registers the function to be invoked when a TIME message is received. More...
 
void OnEmcy (::std::function< void(uint8_t, uint16_t, uint8_t, uint8_t[5])> on_emcy)
 Registers the function to be invoked when an EMCY message is received. More...
 
void OnSwitchBitrate (::std::function< void(int, ::std::chrono::milliseconds)> on_switch_bitrate)
 Registers the function to be invoked when the LSS master activates the bit rate of all CANopen devices in the network. More...
 
- Public Member Functions inherited from lely::io::CanNet
 CanNet (ev_exec_t *exec, io_timer_t *timer, io_can_chan_t *chan, ::std::size_t txlen=0, int txtimeo=0)
 
 CanNet (io_timer_t *timer, io_can_chan_t *chan, ::std::size_t txlen=0, int txtimeo=0)
 
virtual ~CanNet ()
 
void start () noexcept
 
ContextBase get_ctx () const noexcept
 
ev::Executor get_executor () const noexcept
 
Clock get_clock () const noexcept
 
- Public Member Functions inherited from lely::canopen::Device
 Device (const ::std::string &dcf_txt, const ::std::string &dcf_bin="", uint8_t id=0xff, util::BasicLockable *mutex=nullptr)
 Creates a new CANopen device description. More...
 
uint8_t netid () const noexcept
 Returns the network-ID.
 
uint8_t id () const noexcept
 Returns the node-ID.
 
template<class T >
typename ::std::enable_if< is_canopen< T >::value, T >::type Read (uint16_t idx, uint8_t subidx) const
 Submits an SDO upload request to the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen< T >::value, T >::type Read (uint16_t idx, uint8_t subidx, ::std::error_code &ec) const
 Submits an SDO upload request to the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen< T >::value >::type Write (uint16_t idx, uint8_t subidx, const T &value)
 Submits an SDO download request to the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen< T >::value >::type Write (uint16_t idx, uint8_t subidx, const T &value, ::std::error_code &ec)
 Submits an SDO download request to the local object dictionary. More...
 
void Write (uint16_t idx, uint8_t subidx, const char *value)
 Submits an SDO download request to the local object dictionary. More...
 
void Write (uint16_t idx, uint8_t subidx, const char *value, ::std::error_code &ec)
 Submits an SDO download request to the local object dictionary. More...
 
void Write (uint16_t idx, uint8_t subidx, const char16_t *value)
 Submits an SDO download request to the local object dictionary. More...
 
void Write (uint16_t idx, uint8_t subidx, const char16_t *value, ::std::error_code &ec)
 Submits an SDO download request to the local object dictionary. More...
 
void Write (uint16_t idx, uint8_t subidx, const void *p, ::std::size_t n)
 Submits an SDO download request to the local object dictionary. More...
 
void Write (uint16_t idx, uint8_t subidx, const void *p, ::std::size_t n, ::std::error_code &ec)
 Submits an SDO download request to the local object dictionary. More...
 
void WriteDcf (const uint8_t *begin, const uint8_t *end)
 Submits a series of SDO download requests to the local object dictionary. More...
 
void WriteDcf (const uint8_t *begin, const uint8_t *end, ::std::error_code &ec)
 Submits a series of SDO download requests to the local object dictionary. More...
 
void WriteDcf (const char *path)
 Submits a series of SDO download requests to the local object dictionary. More...
 
void WriteDcf (const char *path, ::std::error_code &ec)
 Submits a series of SDO download requests to the local object dictionary. More...
 
void WriteEvent (uint16_t idx, uint8_t subidx)
 Checks if the specified sub-object in the local object dictionary can be mapped into a PDO and, if so, triggers the transmission of every event-driven, asynchronous Transmit-PDO into which the sub-object is mapped. More...
 
void WriteEvent (uint16_t idx, uint8_t subidx, ::std::error_code &ec) noexcept
 Checks if the specified sub-object in the local object dictionary can be mapped into a PDO and, if so, triggers the transmission of every event-driven, asynchronous Transmit-PDO into which the sub-object is mapped. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value, T >::type RpdoRead (uint8_t id, uint16_t idx, uint8_t subidx) const
 Reads the value of a sub-object in a remote object dictionary by submitting an SDO upload request to the corresponding PDO-mapped sub-object in the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value, T >::type RpdoRead (uint8_t id, uint16_t idx, uint8_t subidx, ::std::error_code &ec) const
 Reads the value of a sub-object in a remote object dictionary by submitting an SDO upload request to the corresponding PDO-mapped sub-object in the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value, T >::type TpdoRead (uint8_t id, uint16_t idx, uint8_t subidx) const
 Submits an SDO upload request to a TPDO-mapped sub-object in the local object dictionary, which reads the value that will be written to an RPDO-mapped sub-object in a remote object dictionary by a Transmit-PDO. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value, T >::type TpdoRead (uint8_t id, uint16_t idx, uint8_t subidx, ::std::error_code &ec) const
 Submits an SDO upload request to a TPDO-mapped sub-object in the local object dictionary, which reads the value that will be written to an RPDO-mapped sub-object in a remote object dictionary by a Transmit-PDO. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value >::type TpdoWrite (uint8_t id, uint16_t idx, uint8_t subidx, T value)
 Writes a value to a sub-object in a remote object dictionary by submitting an SDO download request to the corresponding PDO-mapped sub-object in the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value >::type TpdoWrite (uint8_t id, uint16_t idx, uint8_t subidx, T value, ::std::error_code &ec)
 Writes a value to a sub-object in a remote object dictionary by submitting an SDO download request to the corresponding PDO-mapped sub-object in the local object dictionary. More...
 
void TpdoWriteEvent (uint8_t id, uint16_t idx, uint8_t subidx)
 Triggers the transmission of every event-driven, asynchronous Transmit-PDO which is mapped into the specified sub-object in a remote object dictionary. More...
 
void TpdoWriteEvent (uint8_t id, uint16_t idx, uint8_t subidx, ::std::error_code &ec) noexcept
 Triggers the transmission of every event-driven, asynchronous Transmit-PDO which is mapped into the specified sub-object in a remote object dictionary. More...
 

Protected Member Functions

void OnCanState (io::CanState new_state, io::CanState old_state) noexcept override
 The default implementation invokes lely::canopen::Node::OnCanState() and queues a notification for each registered driver. More...
 
void OnCanError (io::CanError error) noexcept override
 The default implementation queues a notification for all registered drivers. More...
 
void OnRpdoWrite (uint8_t id, uint16_t idx, uint8_t subidx) noexcept override
 The default implementation queues a notification for the driver registered for node id. More...
 
void OnCommand (NmtCommand cs) noexcept override
 The default implementation queues a notification for all registered drivers. More...
 
void OnHeartbeat (uint8_t id, bool occurred) noexcept override
 The default implementation queues a notification for the driver registered for node id. More...
 
void OnState (uint8_t id, NmtState st) noexcept override
 The default implementation queues a notification for the driver registered for node id. More...
 
void OnSync (uint8_t cnt, const time_point &t) noexcept override
 The default implementation queues a notification for all registered drivers. More...
 
void OnSyncError (uint16_t eec, uint8_t er) noexcept override
 The default implementation queues a notification for all registered drivers. More...
 
void OnTime (const ::std::chrono::system_clock::time_point &abs_time) noexcept override
 The default implementation queues a notification for all registered drivers. More...
 
void OnEmcy (uint8_t id, uint16_t eec, uint8_t er, uint8_t msef[5]) noexcept override
 The default implementation queues a notification for the driver registered for node id. More...
 
void OnNodeGuarding (uint8_t id, bool occurred) noexcept override
 The default implementation queues a notification for all registered drivers. More...
 
void OnBoot (uint8_t id, NmtState st, char es, const ::std::string &what) noexcept override
 The default implementation queues a notification for the driver registered for node id. More...
 
void OnConfig (uint8_t id) noexcept override
 The default implementation queues a notification for the driver registered for node id. More...
 
- Protected Member Functions inherited from lely::canopen::BasicMaster
void OnCommand (NmtCommand cs) noexcept override
 The default implementation notifies all registered drivers. More...
 
void OnHeartbeat (uint8_t id, bool occurred) noexcept override
 The default implementation notifies the driver registered for node id. More...
 
void OnState (uint8_t id, NmtState st) noexcept override
 The default implementation notifies the driver registered for node id. More...
 
void OnSync (uint8_t cnt, const time_point &t) noexcept override
 The default implementation notifies all registered drivers. More...
 
void OnSyncError (uint16_t eec, uint8_t er) noexcept override
 The default implementation notifies all registered drivers. More...
 
void OnTime (const ::std::chrono::system_clock::time_point &abs_time) noexcept override
 The default implementation notifies all registered drivers. More...
 
void OnEmcy (uint8_t id, uint16_t eec, uint8_t er, uint8_t msef[5]) noexcept override
 The default implementation notifies the driver registered for node id. More...
 
void IsReady (uint8_t id, bool ready) noexcept
 Marks a remote note as ready or not ready. More...
 
void ConfigResult (uint8_t id, ::std::error_code ec) noexcept
 Reports the result of the 'update configuration' step to the NMT service. More...
 
bool IsConfig (uint8_t id) const
 Returns true if the remote node is configuring (i.e., the 'update configuration' step of the NMT 'boot slave' is reached but not yet completed) and false if not. More...
 
SdoGetSdo (uint8_t id)
 Returns a pointer to the default client-SDO service for the given node. More...
 
void CancelSdo (uint8_t id=0)
 Aborts any ongoing or pending SDO requests for the specified slave. More...
 
- Protected Member Functions inherited from lely::canopen::Node
__can_netnet () const noexcept
 Returns a pointer to the internal CAN network interface from <lely/can/net.h>.
 
void SetTime ()
 Updates the CAN network time.
 
__co_nmtnmt () const noexcept
 Returns a pointer to the internal CANopen NMT master/slave service from <lely/co/nmt.hpp>.
 
void RpdoRtr (int num=0) noexcept
 Requests the transmission of a PDO by sending a CAN frame with the RTR (Remote Transmission Request) bit set. More...
 
void TpdoEvent (int num=0) noexcept
 Triggers the transmission of an acyclic or event-driven PDO. More...
 
- Protected Member Functions inherited from lely::io::CanNet
void lock () final
 Blocks until a lock can be obtained for the current execution agent (thread, process, task). More...
 
void unlock () final
 Releases the lock held by the execution agent. Throws no exceptions.
 
void set_time ()
 Updates the CAN network time. More...
 
virtual void on_read_error (::std::error_code ec, ::std::size_t errcnt) noexcept
 The function invoked when a new CAN frame read error occurs, or when a read operation completes successfully after one or more errors. More...
 
virtual void on_queue_error (::std::error_code ec, ::std::size_t errcnt) noexcept
 The function invoked when a CAN frame is dropped because the transmit queue is full, or when a frame is successfully queued after one or more errors. More...
 
virtual void on_write_error (::std::error_code ec, ::std::size_t errcnt) noexcept
 The function invoked when a new CAN frame write error occurs, or when a write operation completes successfully after one or more errors. More...
 
virtual void on_can_state (CanState new_state, CanState old_state) noexcept
 The function invoked when a CAN bus state change is detected. More...
 
virtual void on_can_error (CanError error) noexcept
 The function invoked when an error is detected on the CAN bus. More...
 
- Protected Member Functions inherited from lely::canopen::Device
__co_devdev () const noexcept
 Returns a pointer to the internal CANopen device from <lely/co/dev.hpp>.
 
const ::std::type_info & Type (uint16_t idx, uint8_t subidx) const
 Returns the type of a sub-object. More...
 
const ::std::type_info & Type (uint16_t idx, uint8_t subidx, ::std::error_code &ec) const noexcept
 Returns the type of a sub-object. More...
 
template<class T >
typename ::std::enable_if< is_canopen< T >::value, T >::type Get (uint16_t idx, uint8_t subidx) const
 Reads the value of a sub-object. More...
 
template<class T >
typename ::std::enable_if< is_canopen< T >::value, T >::type Get (uint16_t idx, uint8_t subidx, ::std::error_code &ec) const noexcept
 Reads the value of a sub-object. More...
 
template<class T >
typename ::std::enable_if< is_canopen< T >::value >::type Set (uint16_t idx, uint8_t subidx, const T &value)
 Writes a CANopen value to a sub-object. More...
 
template<class T >
typename ::std::enable_if< is_canopen< T >::value >::type Set (uint16_t idx, uint8_t subidx, const T &value, ::std::error_code &ec) noexcept
 Writes a CANopen value to a sub-object. More...
 
void Set (uint16_t idx, uint8_t subidx, const char *value)
 Writes a VISIBLE_STRING to a sub-object. More...
 
void Set (uint16_t idx, uint8_t subidx, const char *value, ::std::error_code &ec) noexcept
 Writes a VISIBLE_STRING to a sub-object. More...
 
void Set (uint16_t idx, uint8_t subidx, const char16_t *value)
 Writes a UNICODE_STRING to a sub-object. More...
 
void Set (uint16_t idx, uint8_t subidx, const char16_t *value, ::std::error_code &ec) noexcept
 Writes a UNICODE_STRING to a sub-object. More...
 
void Set (uint16_t idx, uint8_t subidx, const void *p, ::std::size_t n)
 Writes an OCTET_STRING or DOMAIN value to a sub-object. More...
 
void Set (uint16_t idx, uint8_t subidx, const void *p, ::std::size_t n, ::std::error_code &ec) noexcept
 Writes an OCTET_STRING or DOMAIN value to a sub-object. More...
 
const char * GetUploadFile (uint16_t idx, uint8_t subidx) const
 Returns the value of the UploadFile attribute of a sub-object, if present. More...
 
const char * GetUploadFile (uint16_t idx, uint8_t subidx, ::std::error_code &ec) const noexcept
 Returns the value of the UploadFile attribute of a sub-object, if present. More...
 
void SetUploadFile (uint16_t idx, uint8_t subidx, const char *filename)
 Sets the value of the UploadFile attribute of a sub-object, if present. More...
 
void SetUploadFile (uint16_t idx, uint8_t subidx, const char *filename, ::std::error_code &ec) noexcept
 Sets the value of the UploadFile attribute of a sub-object, if present. More...
 
const char * GetDownloadFile (uint16_t idx, uint8_t subidx) const
 Returns the value of the DownloadFile attribute of a sub-object, if present. More...
 
const char * GetDownloadFile (uint16_t idx, uint8_t subidx, ::std::error_code &ec) const noexcept
 Returns the value of the DownloadFile attribute of a sub-object, if present. More...
 
void SetDownloadFile (uint16_t idx, uint8_t subidx, const char *filename)
 Sets the value of the DownloadFile attribute of a sub-object, if present. More...
 
void SetDownloadFile (uint16_t idx, uint8_t subidx, const char *filename, ::std::error_code &ec) noexcept
 Sets the value of the DownloadFile attribute of a sub-object, if present. More...
 
void SetEvent (uint16_t idx, uint8_t subidx)
 Checks if the specified sub-object in the local object dictionary can be mapped into a PDO and, if so, triggers the transmission of every event-driven, asynchronous Transmit-PDO into which the sub-object is mapped. More...
 
void SetEvent (uint16_t idx, uint8_t subidx, ::std::error_code &ec) noexcept
 Checks if the specified sub-object in the local object dictionary can be mapped into a PDO and, if so, triggers the transmission of every event-driven, asynchronous Transmit-PDO into which the sub-object is mapped. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value, T >::type RpdoGet (uint8_t id, uint16_t idx, uint8_t subidx) const
 Reads the value of a sub-object in a remote object dictionary by reading the corresponding PDO-mapped sub-object in the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value, T >::type RpdoGet (uint8_t id, uint16_t idx, uint8_t subidx, ::std::error_code &ec) const noexcept
 Reads the value of a sub-object in a remote object dictionary by reading the corresponding PDO-mapped sub-object in the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value, T >::type TpdoGet (uint8_t id, uint16_t idx, uint8_t subidx) const
 Reads the value of a TPDO-mapped sub-object in the local object dictionary that will be written to an RPDO-mapped sub-object in a remote object dictionary by a Transmit-PDO. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value, T >::type TpdoGet (uint8_t id, uint16_t idx, uint8_t subidx, ::std::error_code &ec) const noexcept
 Reads the value of a TPDO-mapped sub-object in the local object dictionary that will be written to an RPDO-mapped sub-object in a remote object dictionary by a Transmit-PDO. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value >::type TpdoSet (uint8_t id, uint16_t idx, uint8_t subidx, T value)
 Writes a value to a sub-object in a remote object dictionary by writing to the corresponding PDO-mapped sub-object in the local object dictionary. More...
 
template<class T >
typename ::std::enable_if< is_canopen_basic< T >::value >::type TpdoSet (uint8_t id, uint16_t idx, uint8_t subidx, T value, ::std::error_code &ec) noexcept
 Writes a value to a sub-object in a remote object dictionary by writing to the corresponding PDO-mapped sub-object in the local object dictionary. More...
 
void TpdoSetEvent (uint8_t id, uint16_t idx, uint8_t subidx)
 Triggers the transmission of every event-driven, asynchronous Transmit-PDO which is mapped into the specified sub-object in a remote object dictionary. More...
 
void TpdoSetEvent (uint8_t id, uint16_t idx, uint8_t subidx, ::std::error_code &ec) noexcept
 Triggers the transmission of every event-driven, asynchronous Transmit-PDO which is mapped into the specified sub-object in a remote object dictionary. More...
 
void UpdateRpdoMapping ()
 Updates the mapping from remote TPDO-mapped sub-objects to local RPDO-mapped sub-objects. More...
 
void UpdateTpdoMapping ()
 Updates the mapping from remote RPDO-mapped sub-objects to local TPDO-mapped sub-objects. More...
 
void RpdoWrite (uint8_t id, uint16_t idx, uint8_t subidx)
 Invokes OnRpdoWrite() as if a value was written to an RPDO-mapped object in the local object dictionary. More...
 

Additional Inherited Members

- Public Types inherited from lely::canopen::BasicMaster
template<class T >
using ReadSignature = void(uint8_t id, uint16_t idx, uint8_t subidx, ::std::error_code ec, T value)
 The signature of the callback function invoked on completion of an asynchronous read (SDO upload) operation from a remote object dictionary. More...
 
using WriteSignature = void(uint8_t id, uint16_t idx, uint8_t subidx, ::std::error_code ec)
 The signature of the callback function invoked on completion of an asynchronous write (SDO download) operation to a remote object dictionary. More...
 
- Data Fields inherited from lely::canopen::BasicMaster
TpdoEventMutex tpdo_event_mutex
 

Detailed Description

An asynchronous CANopen master.

When a CANopen event occurs, this master queues a notification to (the executor of) each registered driver. The master itself does not block waiting for events to be handled.

Definition at line 1957 of file master.hpp.

Member Function Documentation

◆ OnCanState() [1/2]

void lely::canopen::AsyncMaster::OnCanState ( ::std::function< void(io::CanState, io::CanState)>  on_can_state)
inline
See also
Node::OnCanState()

Definition at line 1963 of file master.hpp.

◆ OnCanError() [1/2]

void lely::canopen::AsyncMaster::OnCanError ( ::std::function< void(io::CanError)>  on_can_error)
inline
See also
Node::OnCanError()

Definition at line 1969 of file master.hpp.

◆ OnRpdoWrite() [1/2]

void lely::canopen::AsyncMaster::OnRpdoWrite ( ::std::function< void(uint8_t, uint16_t, uint8_t)>  on_rpdo_write)
inline
See also
Device::OnRpdoWrite()

Definition at line 1975 of file master.hpp.

◆ OnCommand() [1/2]

void lely::canopen::AsyncMaster::OnCommand ( ::std::function< void(NmtCommand)>  on_command)
inline
See also
Node::OnCommand()

Definition at line 1981 of file master.hpp.

◆ OnHeartbeat() [1/2]

void lely::canopen::AsyncMaster::OnHeartbeat ( ::std::function< void(uint8_t, bool)>  on_heartbeat)
inline
See also
Node::OnHeartbeat()

Definition at line 1987 of file master.hpp.

◆ OnState() [1/2]

void lely::canopen::AsyncMaster::OnState ( ::std::function< void(uint8_t, NmtState)>  on_state)
inline
See also
Node::OnState()

Definition at line 1993 of file master.hpp.

◆ OnSync() [1/2]

void lely::canopen::AsyncMaster::OnSync ( ::std::function< void(uint8_t, const time_point &)>  on_sync)
inline
See also
Node::OnSync()

Definition at line 1999 of file master.hpp.

◆ OnSyncError() [1/2]

void lely::canopen::AsyncMaster::OnSyncError ( ::std::function< void(uint16_t, uint8_t)>  on_sync_error)
inline
See also
Node::OnSyncError()

Definition at line 2005 of file master.hpp.

◆ OnTime() [1/2]

void lely::canopen::AsyncMaster::OnTime ( ::std::function< void(const ::std::chrono::system_clock::time_point &)>  on_time)
inline
See also
Node::OnTime()

Definition at line 2011 of file master.hpp.

◆ OnEmcy() [1/2]

void lely::canopen::AsyncMaster::OnEmcy ( ::std::function< void(uint8_t, uint16_t, uint8_t, uint8_t[5])>  on_emcy)
inline
See also
Node::OnEmcy()

Definition at line 2018 of file master.hpp.

◆ OnNodeGuarding() [1/2]

void lely::canopen::AsyncMaster::OnNodeGuarding ( ::std::function< void(uint8_t, bool)>  on_node_guarding)
inline
See also
BasicMaster::OnNodeGuarding()

Definition at line 2025 of file master.hpp.

◆ OnBoot() [1/2]

void lely::canopen::AsyncMaster::OnBoot ( ::std::function< void(uint8_t, NmtState, char, const ::std::string &)>  on_boot)
inline
See also
BasicMaster::OnBoot()

Definition at line 2031 of file master.hpp.

◆ OnCanState() [2/2]

void lely::canopen::AsyncMaster::OnCanState ( io::CanState  new_state,
io::CanState  old_state 
)
overrideprotectedvirtualnoexcept

The default implementation invokes lely::canopen::Node::OnCanState() and queues a notification for each registered driver.

See also
Node::OnCanState(), DriverBase::OnCanState()

Reimplemented from lely::canopen::BasicMaster.

Definition at line 502 of file master.cpp.

◆ OnCanError() [2/2]

void lely::canopen::AsyncMaster::OnCanError ( io::CanError  error)
overrideprotectedvirtualnoexcept

The default implementation queues a notification for all registered drivers.

See also
Node::OnCanError(), DriverBase::OnCanError()

Reimplemented from lely::canopen::BasicMaster.

Definition at line 512 of file master.cpp.

◆ OnRpdoWrite() [2/2]

void lely::canopen::AsyncMaster::OnRpdoWrite ( uint8_t  id,
uint16_t  idx,
uint8_t  subidx 
)
overrideprotectedvirtualnoexcept

The default implementation queues a notification for the driver registered for node id.

See also
Device::OnRpdoWrite(), DriverBase::OnRpdoWrite()

Reimplemented from lely::canopen::BasicMaster.

Definition at line 520 of file master.cpp.

◆ OnCommand() [2/2]

void lely::canopen::AsyncMaster::OnCommand ( NmtCommand  cs)
overrideprotectednoexcept

The default implementation queues a notification for all registered drivers.

Unless the master enters the pre-operational or operational state, all ongoing and pending SDO requests are aborted.

See also
Node::OnCommand(), DriverBase::OnCommand()

Definition at line 529 of file master.cpp.

◆ OnHeartbeat() [2/2]

void lely::canopen::AsyncMaster::OnHeartbeat ( uint8_t  id,
bool  occurred 
)
overrideprotectednoexcept

The default implementation queues a notification for the driver registered for node id.

See also
Node::OnHeartbeat(), DriverBase::OnHeartbeat()

Definition at line 540 of file master.cpp.

◆ OnState() [2/2]

void lely::canopen::AsyncMaster::OnState ( uint8_t  id,
NmtState  st 
)
overrideprotectednoexcept

The default implementation queues a notification for the driver registered for node id.

If a boot-up event (st == NmtState::BOOTUP) is detected, any ongoing or pending SDO requests for the slave are aborted.

See also
Node::OnState(), DriverBase::OnState()

Definition at line 549 of file master.cpp.

◆ OnSync() [2/2]

void lely::canopen::AsyncMaster::OnSync ( uint8_t  cnt,
const time_point &  t 
)
overrideprotectednoexcept

The default implementation queues a notification for all registered drivers.

See also
Node::OnSync(), DriverBase::OnSync()

Definition at line 564 of file master.cpp.

◆ OnSyncError() [2/2]

void lely::canopen::AsyncMaster::OnSyncError ( uint16_t  eec,
uint8_t  er 
)
overrideprotectednoexcept

The default implementation queues a notification for all registered drivers.

See also
Node::OnSyncError(), DriverBase::OnSyncError()

Definition at line 572 of file master.cpp.

◆ OnTime() [2/2]

void lely::canopen::AsyncMaster::OnTime ( const ::std::chrono::system_clock::time_point &  abs_time)
overrideprotectednoexcept

The default implementation queues a notification for all registered drivers.

See also
Node::OnTime(), DriverBase::OnTime()

Definition at line 580 of file master.cpp.

◆ OnEmcy() [2/2]

void lely::canopen::AsyncMaster::OnEmcy ( uint8_t  id,
uint16_t  eec,
uint8_t  er,
uint8_t  msef[5] 
)
overrideprotectednoexcept

The default implementation queues a notification for the driver registered for node id.

See also
Node::OnEmcy(), DriverBase::OnEmcy()

Definition at line 589 of file master.cpp.

◆ OnNodeGuarding() [2/2]

void lely::canopen::AsyncMaster::OnNodeGuarding ( uint8_t  id,
bool  occurred 
)
overrideprotectedvirtualnoexcept

The default implementation queues a notification for all registered drivers.

See also
BasicMaster::OnNodeGuarding(), DriverBase::OnNodeGuarding()

Reimplemented from lely::canopen::BasicMaster.

Definition at line 602 of file master.cpp.

◆ OnBoot() [2/2]

void lely::canopen::AsyncMaster::OnBoot ( uint8_t  id,
NmtState  st,
char  es,
const ::std::string &  what 
)
overrideprotectedvirtualnoexcept

The default implementation queues a notification for the driver registered for node id.

See also
BasicMaster::OnBoot(), DriverBase::OnBoot()

Reimplemented from lely::canopen::BasicMaster.

Definition at line 611 of file master.cpp.

◆ OnConfig()

void lely::canopen::AsyncMaster::OnConfig ( uint8_t  id)
overrideprotectedvirtualnoexcept

The default implementation queues a notification for the driver registered for node id.

See also
BasicMaster::OnConfig(), DriverBase::OnConfig()

Reimplemented from lely::canopen::BasicMaster.

Definition at line 621 of file master.cpp.

◆ BasicMaster()

lely::canopen::BasicMaster::BasicMaster
explicit

Creates a new CANopen master.

After creation, the master is in the NMT 'Initialisation' state and does not yet create any services or perform any communication. Call Reset() to start the boot-up process.

Parameters
execthe executor used to process I/O and CANopen events. If exec is a null pointer, the CAN channel executor is used.
timerthe timer used for CANopen events. This timer MUST NOT be used for any other purpose.
chana CAN channel. This channel MUST NOT be used for any other purpose.
dcf_txtthe path of the text EDS or DCF containing the device description.
dcf_binthe path of the (binary) concise DCF containing the values of (some of) the objets in the object dictionary. If dcf_bin is empty, no concise DCF is loaded.
idthe node-ID (in the range [1..127, 255]). If id is 255 (unconfigured), the node-ID is obtained from the DCF.

Definition at line 81 of file master.cpp.


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