Enabling opening and running of programs. Added jogging.
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
#pragma once
|
||||
|
||||
#include "grbl_communication.h"
|
||||
#include "grbl.h"
|
||||
|
||||
namespace grbl {
|
||||
|
||||
|
||||
enum class grbl_machine_state {
|
||||
init,
|
||||
run_program,
|
||||
idle,
|
||||
};
|
||||
|
||||
enum class jog_direction {
|
||||
up,
|
||||
down,
|
||||
left,
|
||||
right,
|
||||
up_left,
|
||||
up_right,
|
||||
down_left,
|
||||
down_right
|
||||
};
|
||||
|
||||
struct jog_state {
|
||||
bool left_pressed = false;
|
||||
bool right_pressed = false;
|
||||
bool up_pressed = false;
|
||||
bool down_pressed = false;
|
||||
bool z_up_pressed = false;
|
||||
bool z_down_pressed = false;
|
||||
bool speed_fast_pressed = false;
|
||||
bool speed_slow_pressed = false;
|
||||
|
||||
bool no_jogging() const;
|
||||
};
|
||||
|
||||
static bool operator==(const jog_state& a, const jog_state& b) {
|
||||
if (a.left_pressed != b.left_pressed ||
|
||||
a.right_pressed != b.right_pressed ||
|
||||
a.up_pressed != b.up_pressed ||
|
||||
a.down_pressed != b.down_pressed ||
|
||||
a.z_up_pressed != b.z_up_pressed ||
|
||||
a.z_down_pressed != b.z_down_pressed ||
|
||||
a.speed_fast_pressed != b.speed_fast_pressed ||
|
||||
a.speed_slow_pressed != b.speed_slow_pressed) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool operator!=(const jog_state& a, const jog_state& b) {
|
||||
return !(a == b);
|
||||
}
|
||||
|
||||
struct machine : public transport_callbacks {
|
||||
machine();
|
||||
~machine();
|
||||
|
||||
void connect();
|
||||
void run_program(grbl::program pgm);
|
||||
void request_jog(jog_state jog) const;
|
||||
void cancel_jog() const;
|
||||
|
||||
void on_connected(transport *transport) override;
|
||||
void on_disconnected(transport *transport) override;
|
||||
void on_line_received(std::string line, transport *transport) override;
|
||||
|
||||
|
||||
void on_banner(std::string version, transport *transport) override;
|
||||
transport *pipe = nullptr;
|
||||
grbl_machine_state state = grbl_machine_state::init;
|
||||
program running_program;
|
||||
size_t executed_instructions = 0;
|
||||
void continue_program();
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user