Motion Master
Loading...
Searching...
No Matches
motion_control_machine.h
Go to the documentation of this file.
1#pragma once
2
3#include <chrono>
4#include <future>
5
7#include "machine.h"
8#include "motion_filter.h"
10
11class Cia402Drive;
12
14 public:
16 VirtualDeviceManager& vdm, ctpl::thread_pool& thread_pool,
17 Notifier& notifier,
19 outgoing_machine_message_queue);
20
21 void execute(uint64_t pending_signals) override;
22 void abort_client_requests(const std::string& connection_id) override;
23 bool done() override;
24
25 private:
26 class Axis {
27 public:
28 Axis(VirtualDeviceManager& vdm,
29 IncomingMachineMessage& incoming_machine_message);
30
31 std::unique_ptr<Cia402Drive> cia402_drive_;
32 std::unique_ptr<MotionFilter> motion_filter_;
33
34 IncomingMachineMessage incoming_machine_message_;
35
36 bool processed = false;
37 std::future<MotionMasterError> init_controller_future_;
38 std::function<void(int32_t)> set = nullptr;
39 std::function<void(uint64_t)> execute = nullptr;
40 };
41
42 class DisableController {
43 public:
44 DisableController(VirtualDeviceManager& vdm,
45 IncomingMachineMessage& incoming_machine_message);
46
47 IncomingMachineMessage incoming_machine_message_;
48
49 uint32_t device_address_;
50 std::unique_ptr<Cia402Drive> cia402_drive_;
51 std::future<MotionMasterError> deinit_controller_future_;
52 };
53
54 std::map<uint32_t, Axis> axis_map_;
55 std::vector<DisableController> disable_controller_requests_;
56
57 void send_status(
58 const IncomingMachineMessage& incoming_machine_message,
59 motionmaster::MotionMasterMessage::MotionMasterMessage::Status* status);
60};
Definition cia402_drive.h:48
Definition incoming_machine_message.h:5
Machine(VirtualDeviceManager &vdm, ctpl::thread_pool &thread_pool, Notifier &notifier, mm::core::containers::ThreadSafeQueue< OutgoingMachineMessage > &outgoing_machine_message_queue)
Definition machine.cc:7
void execute(uint64_t pending_signals) override
Execute the machine.
Definition motion_control_machine.cc:17
void abort_client_requests(const std::string &connection_id) override
Abort all of the requests a certain client has issues.
Definition motion_control_machine.cc:669
bool done() override
Check if all of the machine started processes are done (including the Command Workers)
Definition motion_control_machine.cc:689
MotionControlMachine(VirtualDeviceManager &vdm, ctpl::thread_pool &thread_pool, Notifier &notifier, mm::core::containers::ThreadSafeQueue< OutgoingMachineMessage > &outgoing_machine_message_queue)
Definition motion_control_machine.cc:10
Definition notifier.h:9
Definition virtual_device_manager.h:16
Thread-safe FIFO queue with optional capacity limit.
Definition thread_safe_queue.h:23