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#include <functional>
6
8#include "ctpl_stl.h"
11#include "firmware_machine.h"
14#include "loguru.h"
15#include "monitor_machine.h"
17#include "notifier.h"
20#include "system_machine.h"
21#include "universal_machine.h"
23#include "watchdog_machine.h"
24
25class Machine;
26
28 public:
30 incoming_machine_message_queue,
32 outgoing_machine_message_queue);
34
38 void start();
39
43 void stop();
44
48 void wait();
49
60 void setOnMonitoringAborted(std::function<void()> callback);
61
62 private:
64 ctpl::thread_pool thread_pool_;
65
66 std::unique_ptr<std::thread> machine_manager_thread_;
67 std::atomic_bool running_;
68 bool firmware_installation_running_ = false;
69 uint32_t firmwareInstallationDeviceId = 0;
70
71 NotifierImpl notifier_;
73 incoming_machine_message_queue_;
75 outgoing_machine_message_queue_;
76
77 struct AdditionalHeartbeatInfo {
79 protocol; // used communication protocol for this client
80 int32_t timeout_in_50ms; // requested timeout in 50ms increments
81 int32_t missed_50ms_intervals;
82 };
83 std::map<std::string /* client ID */, AdditionalHeartbeatInfo>
84 missed_heartbeats_map_;
85
86 std::function<void()> on_monitoring_aborted_;
87
88 std::vector<Machine*> machines_;
89 SystemMachine system_machine_;
90 MonitorMachine monitor_machine_;
91 MotionControlMachine motion_control_machine_;
92 SignalGeneratorMachine signal_generator_machine_;
93 FirmwareMachine firmware_machine_;
94 EncoderCalibrationMachine encoder_calibration_machine_;
95 DeviceProcedureMachine device_procedure_machine_;
96 UniversalMachine universal_machine_;
97 WatchdogMachine watchdog_machine_;
98 FullAutoTuningMachine full_auto_tuning_machine_;
99
103 void run();
104
112 bool check_machines_done(bool exclude_monitor_machine = false);
113
119 void execute_all_machines(uint64_t pending_signals);
120};
Definition device_procedure_machine.h:14
Definition encoder_calibration_machine.h:9
Definition firmware_machine.h:13
Definition full_auto_tuning_machine.h:10
void setOnMonitoringAborted(std::function< void()> callback)
Register a callback invoked whenever all monitoring is aborted.
Definition machine_manager.cc:67
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:592
void start()
Start the Machine Manager.
Definition machine_manager.cc:585
void stop()
Stop the Machine Manager.
Definition machine_manager.cc:590
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