Motion Master
Loading...
Searching...
No Matches
Public Member Functions | List of all members
WatchdogMachine Class Reference

#include <watchdog_machine.h>

Inheritance diagram for WatchdogMachine:
Inheritance graph
[legend]
Collaboration diagram for WatchdogMachine:
Collaboration graph
[legend]

Public Member Functions

 WatchdogMachine (VirtualDeviceManager &vdm, ctpl::thread_pool &thread_pool, Notifier &notifier, moodycamel::ReaderWriterQueue< OutgoingMachineMessage > &outgoing_machine_message_queue)
 
void execute (uint64_t pending_signals) override
 Execute the machine. More...
 
void start ()
 
void stop ()
 
void abort_client_requests (const std::string &connection_id) override
 Abort all of the requests a certain client has issues. More...
 
bool done () override
 Check if all of the machine started processes are done (including the Command Workers) More...
 
- Public Member Functions inherited from Machine
void add_message (IncomingMachineMessage &incoming_machine_message)
 Add a new incoming machine message to the queue. More...
 
virtual void execute (uint64_t pending_signals)=0
 Execute the machine. More...
 
virtual void abort_client_requests (const std::string &connection_id)=0
 Abort all of the requests a certain client has issues. More...
 
bool command_workers_done ()
 Check if all started Command Workers are done. More...
 
virtual bool done ()=0
 Check if all of the machine started processes are done (including the Command Workers) More...
 

Additional Inherited Members

- Protected Member Functions inherited from Machine
 Machine (VirtualDeviceManager &vdm, ctpl::thread_pool &thread_pool, Notifier &notifier, moodycamel::ReaderWriterQueue< OutgoingMachineMessage > &outgoing_machine_message_queue)
 
virtual ~Machine ()
 
void start_command_worker (IncomingMachineMessage &incoming_machine_message)
 
void process_command_workers (std::function< void(CommandWorker *)> process=nullptr)
 Process all of the available Command Workers. More...
 
void send_response (MachineMessage::Protocol protocol, std::string connection_id, motionmaster::MotionMasterMessage &message)
 Send the response (Status protobuf message) to the proper client. More...
 
- Protected Attributes inherited from Machine
VirtualDeviceManagervdm_
 
ctpl::thread_pool & thread_pool_
 
std::queue< IncomingMachineMessageincoming_message_queue_
 
Notifiernotifier_
 

Constructor & Destructor Documentation

◆ WatchdogMachine()

WatchdogMachine::WatchdogMachine ( VirtualDeviceManager vdm,
ctpl::thread_pool &  thread_pool,
Notifier notifier,
moodycamel::ReaderWriterQueue< OutgoingMachineMessage > &  outgoing_machine_message_queue 
)

The watchdog on the Motion Master is a process that runs on each cycle, ideally every 1ms. If the previous execution took longer than one second, it checks which drives are not in the OP state. For any devices not in OP, it sends an error message indicating that they cannot be switched into the OP EtherCAT state. A communication warning usually precedes this error, indicating that the Motion Master has detected that the device has entered the SAFE-OP state. The warning is sent only if the drive has been previously initialized (i.e., it has parameters) and was already in the OP state.

NOTE: The condition "if (++counter_ == 7 + vdm_.get_devices().size())" is not entirely clear and may require further verification.

Member Function Documentation

◆ abort_client_requests()

void WatchdogMachine::abort_client_requests ( const std::string &  connection_id)
overridevirtual

Abort all of the requests a certain client has issues.

Parameters
connection_idclient connection ID

Implements Machine.

◆ done()

bool WatchdogMachine::done ( )
overridevirtual

Check if all of the machine started processes are done (including the Command Workers)

Returns
true if all of the processes are done, false otherwise

Implements Machine.

◆ execute()

void WatchdogMachine::execute ( uint64_t  pending_signals)
overridevirtual

Execute the machine.

Parameters
pending_signalsnumber of time intervals that passed since the last call to this function

Implements Machine.

◆ start()

void WatchdogMachine::start ( )

◆ stop()

void WatchdogMachine::stop ( )

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