结论:已完成浏览器侧真实加载验证,M428/M429/M430 的配置入口进一步从 LinuxCNC INI/HALFILE/REMAP 来源生成,native 与 source-link 验证通过。
54 lines
1.4 KiB
C++
54 lines
1.4 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,
|
|
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, 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;
|
|
}
|
|
}
|