Motion Master
Loading...
Searching...
No Matches
signal_generator_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-master.pb.h"
10#include "profile.h"
11#include "step_response.h"
12
13class Cia402Drive;
14
16 public:
18 VirtualDeviceManager& vdm, ctpl::thread_pool& thread_pool,
19 Notifier& notifier,
21 outgoing_machine_message_queue);
22
23 void execute(uint64_t pending_signals) override;
24 void abort_client_requests(const std::string& connection_id) override;
25 bool done() override;
26
27 private:
28 class Axis {
29 public:
30 Axis(VirtualDeviceManager& vdm,
31 IncomingMachineMessage& incoming_machine_message);
32
33 std::unique_ptr<Cia402Drive> cia402_drive_;
34
35 IncomingMachineMessage set_parameters_incoming_machine_message_;
36 IncomingMachineMessage start_incoming_machine_message_;
37 std::optional<IncomingMachineMessage> stop_incoming_machine_message_;
38
39 std::unique_ptr<StepResponse> step_response_;
40 std::unique_ptr<Profile> profile_;
41
42 std::future<MotionMasterError> future_;
43
44 uint32_t timeout_counter_ = 0;
45
46 // A queue of status messages generated during signal execution (e.g.
47 // warnings)
49 motionmaster::MotionMasterMessage::Status*>
50 outgoing_status_message_queue_;
51
52 void start();
53 };
54
55 std::map<uint32_t, Axis> axis_map_;
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
Definition notifier.h:9
bool done() override
Check if all of the machine started processes are done (including the Command Workers)
Definition signal_generator_machine.cc:955
void abort_client_requests(const std::string &connection_id) override
Abort all of the requests a certain client has issues.
Definition signal_generator_machine.cc:365
SignalGeneratorMachine(VirtualDeviceManager &vdm, ctpl::thread_pool &thread_pool, Notifier &notifier, mm::core::containers::ThreadSafeQueue< OutgoingMachineMessage > &outgoing_machine_message_queue)
Definition signal_generator_machine.cc:10
void execute(uint64_t pending_signals) override
Execute the machine.
Definition signal_generator_machine.cc:17
Definition virtual_device_manager.h:16
Thread-safe FIFO queue with optional capacity limit.
Definition thread_safe_queue.h:23