25 #ifndef GRBLDEVICEBASE_HPP__
26 #define GRBLDEVICEBASE_HPP__
32 #include <ccut/LineBuffer.hpp>
33 #include <ccut/Signal.hpp>
35 #include "GrblTypes.hpp"
54 void fetch(
const std::chrono::milliseconds &timeout);
60 virtual void write(
const std::string &data) = 0;
73 virtual grbl::ErrorCode
send(
74 const std::string &cmd,
75 std::function<
bool(
const std::string &)> msg = {},
76 const std::chrono::milliseconds &timeout = defaultSendTimeout);
92 const std::string &cmd,
93 std::function<
bool(
const std::string &)> msg = {},
94 const std::chrono::milliseconds &timeout = defaultSendTimeout);
112 virtual bool wait(
const std::chrono::milliseconds &timeout) = 0;
119 virtual bool takeLine(std::string &line);
121 ccut::Signal<std::string> dataSignal;
123 static const std::chrono::milliseconds defaultSendTimeout;
126 ccut::LineBuffer m_buffer;
virtual grbl::ErrorCode sendRealtime(const std::string &cmd, std::function< bool(const std::string &)> msg={}, const std::chrono::milliseconds &timeout=defaultSendTimeout)
send a realtime-command wait for reply
virtual bool takeLine(std::string &line)
consume line from buffer
virtual void wake()=0
wake thread waiting for input
virtual void read()=0
fill LineBuffer with incoming bytes
virtual void write(const std::string &data)=0
raw write some bytes
virtual grbl::ErrorCode send(const std::string &cmd, std::function< bool(const std::string &)> msg={}, const std::chrono::milliseconds &timeout=defaultSendTimeout)
send a command wait for reply
void fetch(const std::chrono::milliseconds &timeout)
wait for data and process it
virtual bool wait(const std::chrono::milliseconds &timeout)=0
wait for input