Motion Master
Loading...
Searching...
No Matches
machine_manager.h
Go to the documentation of this file.
1#pragma once
2
3#include <chrono>
4#include <fstream>
5
7#include "ctpl_stl.h"
10#include "firmware_machine.h"
13#include "loguru.h"
14#include "monitor_machine.h"
16#include "notifier.h"
19#include "system_machine.h"
20#include "universal_machine.h"
22#include "watchdog_machine.h"
23
24class Machine;
25
27 public:
29 incoming_machine_message_queue,
31 outgoing_machine_message_queue);
33
37 void start();
38
42 void stop();
43
47 void wait();
48
49 private:
51 ctpl::thread_pool thread_pool_;
52
53 std::unique_ptr<std::thread> machine_manager_thread_;
54 std::atomic_bool running_;
55 bool firmware_installation_running_ = false;
56 uint32_t firmwareInstallationDeviceId = 0;
57
58 NotifierImpl notifier_;
60 incoming_machine_message_queue_;
62 outgoing_machine_message_queue_;
63
64 struct AdditionalHeartbeatInfo {
66 protocol; // used communication protocol for this client
67 int32_t timeout_in_50ms; // requested timeout in 50ms increments
68 int32_t missed_50ms_intervals;
69 };
70 std::map<std::string /* client ID */, AdditionalHeartbeatInfo>
71 missed_heartbeats_map_;
72
73 std::vector<Machine*> machines_;
74 SystemMachine system_machine_;
75 MonitorMachine monitor_machine_;
76 MotionControlMachine motion_control_machine_;
77 SignalGeneratorMachine signal_generator_machine_;
78 FirmwareMachine firmware_machine_;
79 EncoderCalibrationMachine encoder_calibration_machine_;
80 DeviceProcedureMachine device_procedure_machine_;
81 UniversalMachine universal_machine_;
82 WatchdogMachine watchdog_machine_;
83 FullAutoTuningMachine full_auto_tuning_machine_;
84
88 void run();
89
97 bool check_machines_done(bool exclude_monitor_machine = false);
98
104 void execute_all_machines(uint64_t pending_signals);
105};
Definition device_procedure_machine.h:14
Definition encoder_calibration_machine.h:9
Definition firmware_machine.h:13
Definition full_auto_tuning_machine.h:10
MachineManager(mm::core::containers::ThreadSafeQueue< IncomingMachineMessage > &incoming_machine_message_queue, mm::core::containers::ThreadSafeQueue< OutgoingMachineMessage > &outgoing_machine_message_queue)
Definition machine_manager.cc:23
~MachineManager()
Definition machine_manager.cc:65
void wait()
Wait until the Machine Manager finishes execution.
Definition machine_manager.cc:560
void start()
Start the Machine Manager.
Definition machine_manager.cc:553
void stop()
Stop the Machine Manager.
Definition machine_manager.cc:558
Protocol
Definition machine_message.h:9
Definition machine.h:18
Definition monitor_machine.h:16
Definition motion_control_machine.h:13
Definition notifier.h:51
Definition signal_generator_machine.h:15
Definition system_machine.h:6
Definition universal_machine.h:6
Definition virtual_device_manager.h:16
Definition watchdog_machine.h:11
Thread-safe FIFO queue with optional capacity limit.
Definition thread_safe_queue.h:23