Files
wasm-simulator/core/src/gcode_backend.cpp

55 lines
1.5 KiB
C++

#include "gcode_backend.h"
#ifdef CNC_SIM_ENABLE_LINUXCNC_RS274_BACKEND
#include "linuxcnc_rs274_backend.h"
#endif
#ifdef CNC_SIM_ENABLE_SMOKE_BACKEND
#include "smoke_gcode_parser.h"
#endif
const char *gcode_backend_name(GcodeBackendKind backend) {
switch (backend) {
case GcodeBackendKind::Smoke:
return "smoke";
case GcodeBackendKind::LinuxCncRs274:
return "linuxcnc-rs274";
default:
return "unknown";
}
}
int parse_gcode_with_backend(GcodeBackendKind backend,
CanonEventSink &sink,
const char *program,
size_t program_len,
const GcodeBackendOptions &options,
std::string *error) {
switch (backend) {
case GcodeBackendKind::Smoke: {
#ifdef CNC_SIM_ENABLE_SMOKE_BACKEND
SmokeGcodeParser parser(sink);
return parser.parse(program, program_len, error);
#else
if (error) {
*error = "smoke backend is not compiled into this build";
}
return -1;
#endif
}
case GcodeBackendKind::LinuxCncRs274:
#ifdef CNC_SIM_ENABLE_LINUXCNC_RS274_BACKEND
return parse_linuxcnc_rs274_backend(sink, program, program_len, options, error);
#else
if (error) {
*error = "linuxcnc-rs274 backend is not compiled into this build";
}
return -1;
#endif
default:
if (error) {
*error = "unknown G-code backend";
}
return -1;
}
}