Motion Master
Loading...
Searching...
No Matches
machine_manager.h
Go to the documentation of this file.
1#pragma once
2
3#include <readerwriterqueue/readerwriterqueue.h>
4
5#include <chrono>
6#include <fstream>
7
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:
29 MachineManager(moodycamel::ReaderWriterQueue<IncomingMachineMessage>
30 &incoming_machine_message_queue,
31 moodycamel::ReaderWriterQueue<OutgoingMachineMessage>
32 &outgoing_machine_message_queue);
34
38 void start();
39
43 void stop();
44
48 void wait();
49
50 private:
52 ctpl::thread_pool thread_pool_;
53
54 std::unique_ptr<std::thread> machine_manager_thread_;
55 std::atomic_bool running_;
56 bool firmware_installation_running_ = false;
57 uint32_t firmwareInstallationDeviceId = 0;
58
59 Notifier notifier_;
60 moodycamel::ReaderWriterQueue<IncomingMachineMessage>
61 &incoming_machine_message_queue_;
62 moodycamel::ReaderWriterQueue<OutgoingMachineMessage>
63 &outgoing_machine_message_queue_;
64
65 struct AdditionalHeartbeatInfo {
67 protocol; // used communication protocol for this client
68 int32_t timeout_in_50ms; // requested timeout in 50ms increments
69 int32_t missed_50ms_intervals;
70 };
71 std::map<std::string /* client ID */, AdditionalHeartbeatInfo>
72 missed_heartbeats_map_;
73
74 std::vector<Machine *> machines_;
75 SystemMachine system_machine_;
76 MonitorMachine monitor_machine_;
77 MotionControlMachine motion_control_machine_;
78 SignalGeneratorMachine signal_generator_machine_;
79 FirmwareMachine firmware_machine_;
80 EncoderCalibrationMachine encoder_calibration_machine_;
81 DeviceProcedureMachine device_procedure_machine_;
82 UniversalMachine universal_machine_;
83 WatchdogMachine watchdog_machine_;
84 FullAutoTuningMachine full_auto_tuning_machine_;
85
89 void run();
90
98 bool check_machines_done(bool exclude_monitor_machine = false);
99
105 void execute_all_machines(uint64_t pending_signals);
106};
Definition: device_procedure_machine.h:14
Definition: encoder_calibration_machine.h:8
Definition: firmware_machine.h:12
Definition: full_auto_tuning_machine.h:9
Definition: machine_manager.h:27
~MachineManager()
Definition: machine_manager.cc:65
void wait()
Wait until the Machine Manager finishes execution.
Definition: machine_manager.cc:573
void start()
Start the Machine Manager.
Definition: machine_manager.cc:566
void stop()
Stop the Machine Manager.
Definition: machine_manager.cc:571
Protocol
Definition: machine_message.h:9
Definition: machine.h:20
Definition: monitor_machine.h:13
Definition: motion_control_machine.h:12
Definition: notifier.h:10
Definition: signal_generator_machine.h:16
Definition: system_machine.h:5
Definition: universal_machine.h:7
Definition: virtual_device_manager.h:16
Definition: watchdog_machine.h:11