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
6#include "flash.h"
7#include "machine.h"
9
10class VirtualDevice;
11
12class FirmwareMachine : public Machine {
13 public:
14 FirmwareMachine(VirtualDeviceManager &vdm, ctpl::thread_pool &thread_pool,
15 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 Request {
25 public:
26 Request(VirtualDeviceManager &vdm,
27 IncomingMachineMessage &incoming_machine_message);
28
29 IncomingMachineMessage incoming_machine_message_;
30
31 VirtualDevice *virtual_device_ = nullptr;
32
33 std::unique_ptr<Flash> flash_;
34 std::future<MotionMasterError> future_;
35 };
36
37 std::vector<Request> requests_;
38
39 void send_status(
40 const IncomingMachineMessage &incoming_machine_message,
41 motionmaster::MotionMasterMessage::MotionMasterMessage::Status *status);
42};
Definition: firmware_machine.h:12
void execute(uint64_t pending_signals) override
Execute the machine.
Definition: firmware_machine.cc:14
void abort_client_requests(const std::string &connection_id) override
Abort all of the requests a certain client has issues.
Definition: firmware_machine.cc:333
bool done() override
Check if all of the machine started processes are done (including the Command Workers)
Definition: firmware_machine.cc:339
Definition: incoming_machine_message.h:5
Definition: machine.h:20
Definition: notifier.h:10
Definition: virtual_device_manager.h:16
Definition: virtual_device.h:20