Emit motion control mode events
This commit is contained in:
@@ -302,7 +302,31 @@ void SET_FEED_MODE(int, int) {
|
||||
}
|
||||
}
|
||||
|
||||
void SET_MOTION_CONTROL_MODE(CANON_MOTION_MODE, double) {
|
||||
void SET_MOTION_CONTROL_MODE(CANON_MOTION_MODE mode, double tolerance) {
|
||||
int reserved = 0;
|
||||
switch (mode) {
|
||||
case CANON_EXACT_PATH:
|
||||
reserved = 611;
|
||||
break;
|
||||
case CANON_EXACT_STOP:
|
||||
reserved = 612;
|
||||
break;
|
||||
case CANON_CONTINUOUS:
|
||||
reserved = 640;
|
||||
break;
|
||||
default:
|
||||
reserved = 0;
|
||||
break;
|
||||
}
|
||||
if (active_sink) {
|
||||
CncSimEvent event{};
|
||||
event.version = 1;
|
||||
event.type = CNC_SIM_EVENT_COMMENT;
|
||||
event.line = event_line();
|
||||
event.feed = tolerance;
|
||||
event.reserved = reserved;
|
||||
active_sink->emit_raw(event);
|
||||
}
|
||||
}
|
||||
|
||||
void SET_NAIVECAM_TOLERANCE(double) {
|
||||
|
||||
@@ -323,6 +323,22 @@ int SmokeGcodeParser::parse(const char *program, size_t program_len, std::string
|
||||
if (stop_if_callback_aborted(sink_, error)) {
|
||||
return -1;
|
||||
}
|
||||
} else if (g == 61) {
|
||||
emit_comment_state(sink_, line_number, g_code_is(word.value, 61.1) ? 612 : 611);
|
||||
if (stop_if_callback_aborted(sink_, error)) {
|
||||
return -1;
|
||||
}
|
||||
} else if (g == 64) {
|
||||
CncSimEvent event{};
|
||||
event.version = 1;
|
||||
event.type = CNC_SIM_EVENT_COMMENT;
|
||||
event.line = line_number;
|
||||
event.feed = words.count('P') ? words.at('P') : 0.0;
|
||||
event.reserved = 640;
|
||||
sink_.emit_raw(event);
|
||||
if (stop_if_callback_aborted(sink_, error)) {
|
||||
return -1;
|
||||
}
|
||||
} else if (g == 0 || g == 1 || g == 2 || g == 3) {
|
||||
modal_motion = g;
|
||||
} else if (g == 4) {
|
||||
|
||||
Reference in New Issue
Block a user