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
6#include "machine.h"
7#include "motion_filter.h"
9
10class Cia402Drive;
11
13 public:
15 ctpl::thread_pool &thread_pool, Notifier &notifier,
16 moodycamel::ReaderWriterQueue<OutgoingMachineMessage>
17 &outgoing_machine_message_queue);
18
19 void execute(uint64_t pending_signals) override;
20 void abort_client_requests(const std::string &connection_id) override;
21 bool done() override;
22
23 private:
24 class Axis {
25 public:
26 Axis(VirtualDeviceManager &vdm,
27 IncomingMachineMessage &incoming_machine_message);
28
29 std::unique_ptr<Cia402Drive> cia402_drive_;
30 std::unique_ptr<MotionFilter> motion_filter_;
31
32 IncomingMachineMessage incoming_machine_message_;
33
34 bool processed = false;
35 std::future<MotionMasterError> init_controller_future_;
36 std::function<void(int32_t)> set = nullptr;
37 std::function<void(uint64_t)> execute = nullptr;
38 };
39
40 class DisableController {
41 public:
42 DisableController(VirtualDeviceManager &vdm,
43 IncomingMachineMessage &incoming_machine_message);
44
45 IncomingMachineMessage incoming_machine_message_;
46
47 uint32_t device_address_;
48 std::unique_ptr<Cia402Drive> cia402_drive_;
49 std::future<MotionMasterError> deinit_controller_future_;
50 };
51
52 std::map<uint32_t, Axis> axis_map_;
53 std::vector<DisableController> disable_controller_requests_;
54
55 void send_status(
56 const IncomingMachineMessage &incoming_machine_message,
57 motionmaster::MotionMasterMessage::MotionMasterMessage::Status *status);
58};
Definition: cia402_drive.h:48
Definition: incoming_machine_message.h:5
Definition: machine.h:20
Definition: motion_control_machine.h:12
void execute(uint64_t pending_signals) override
Execute the machine.
Definition: motion_control_machine.cc:15
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:667
bool done() override
Check if all of the machine started processes are done (including the Command Workers)
Definition: motion_control_machine.cc:687
Definition: notifier.h:10
Definition: virtual_device_manager.h:16