Motion Master
Loading...
Searching...
No Matches
firmware_machine.h
Go to the documentation of this file.
1#pragma once
2
3#include <chrono>
4#include <future>
5
7#include "flash.h"
8#include "machine.h"
10
11class VirtualDevice;
12
13class FirmwareMachine : public Machine {
14 public:
15 FirmwareMachine(VirtualDeviceManager& vdm, ctpl::thread_pool& thread_pool,
16 Notifier& notifier,
18 outgoing_machine_message_queue);
19
20 void execute(uint64_t pending_signals) override;
21 void abort_client_requests(const std::string& connection_id) override;
22 bool done() override;
23
24 private:
25 class Request {
26 public:
27 Request(VirtualDeviceManager& vdm,
28 IncomingMachineMessage& incoming_machine_message);
29
30 IncomingMachineMessage incoming_machine_message_;
31
32 VirtualDevice* virtual_device_ = nullptr;
33
34 std::unique_ptr<Flash> flash_;
35 std::future<MotionMasterError> future_;
36 };
37
38 std::vector<Request> requests_;
39
40 void send_status(
41 const IncomingMachineMessage& incoming_machine_message,
42 motionmaster::MotionMasterMessage::MotionMasterMessage::Status* status);
43};
void execute(uint64_t pending_signals) override
Execute the machine.
Definition firmware_machine.cc:15
FirmwareMachine(VirtualDeviceManager &vdm, ctpl::thread_pool &thread_pool, Notifier &notifier, mm::core::containers::ThreadSafeQueue< OutgoingMachineMessage > &outgoing_machine_message_queue)
Definition firmware_machine.cc:8
void abort_client_requests(const std::string &connection_id) override
Abort all of the requests a certain client has issues.
Definition firmware_machine.cc:340
bool done() override
Check if all of the machine started processes are done (including the Command Workers)
Definition firmware_machine.cc:346
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
Definition virtual_device_manager.h:16
Definition virtual_device.h:20
Thread-safe FIFO queue with optional capacity limit.
Definition thread_safe_queue.h:23