Compare commits

..

6 Commits

Author SHA1 Message Date
cnc
0a0083b2d3 继续推进
结论:扩大 LinuxCNC source-link 覆盖,新增 basic motion 与普通注释事件验证,未扩展 smoke parser。
2026-06-02 08:26:25 +08:00
cnc
ad7a461b3e Link wasm runtime status constructors 2026-06-02 08:20:17 +08:00
cnc
dab7b9e2ef Guard browser storage behind OPFS 2026-06-02 07:11:41 +08:00
cnc
0db23b4a5d Tighten cached guardrail signatures 2026-06-02 06:47:10 +08:00
cnc
fbe1c31961 Stabilize browser smoke profile cleanup 2026-06-02 06:47:02 +08:00
cnc
87fcf74135 Strengthen LinuxCNC switchkins remap generation 2026-06-02 06:46:54 +08:00
27 changed files with 2521 additions and 158 deletions

View File

@@ -102,7 +102,7 @@ if [[ "$manifest_core_count" -eq 0 || "$manifest_blocked_count" -eq 0 ]]; then
echo "unexpected wasm manifest partition: core=$manifest_core_count blocked=$manifest_blocked_count" >&2
exit 1
fi
if [[ "$manifest" == "$default_manifest" ]] && [[ "$manifest_core_count" -ne 25 || "$manifest_blocked_count" -ne 9 ]]; then
if [[ "$manifest" == "$default_manifest" ]] && [[ "$manifest_core_count" -ne 26 || "$manifest_blocked_count" -ne 9 ]]; then
echo "unexpected wasm manifest partition: core=$manifest_core_count blocked=$manifest_blocked_count" >&2
exit 1
fi

View File

@@ -103,6 +103,8 @@ write_complete_mode_signature() {
}
if ! {
printf 'CACHED_SCRIPT='
sha256sum check-linuxcnc-inputs-cached.sh
printf 'CHECK_SCRIPT='
sha256sum check-linuxcnc-inputs.sh
printf 'LINUXCNC_ROOT=%s\n' "$linuxcnc_root"

View File

@@ -73,15 +73,20 @@ write_manifest_source_stats() {
write_project_output_hashes() {
local project_output
for project_output in \
core/src/cnc_sim_api.cpp \
core/src/linuxcnc_switchkins_remap_table.inc \
core/tests/linuxcnc_switchkins_remap_config_cases.inc \
web/public/linuxcnc_switchkins_remap_config_cases.json; do
web/public/linuxcnc_switchkins_remap_config_cases.json \
web/src/index.ts \
web/src/wasm-core.js; do
[[ -f "$project_output" ]] || return 1
sha256sum "$project_output"
done
}
if ! {
printf 'CACHED_SCRIPT='
sha256sum check-linuxcnc-switchkins-remap-table-cached.sh
printf 'CHECK_SCRIPT='
sha256sum check-linuxcnc-switchkins-remap-table.sh
printf 'GENERATOR_SCRIPT='

File diff suppressed because it is too large Load Diff

View File

@@ -151,6 +151,8 @@ if(CNC_SIM_ENABLE_LINUXCNC_WASM_SAFE_PROBE)
message(STATUS "LinuxCNC wasm blocked sources: ${linuxcnc_wasm_blocked_source_count}")
set(cnc_sim_wasm_safe_preinclude_options "SHELL:-include wctype.h")
set(cnc_sim_wasm_safe_section_options -ffunction-sections -fdata-sections)
set(cnc_sim_wasm_safe_link_options "-Wl,--gc-sections")
if(EMSCRIPTEN)
list(APPEND cnc_sim_wasm_safe_preinclude_options "SHELL:-include libgen.h")
find_path(CNC_SIM_FMT_INCLUDE_DIR fmt/format.h
@@ -166,7 +168,9 @@ if(CNC_SIM_ENABLE_LINUXCNC_WASM_SAFE_PROBE)
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/emc_status_shim.cc
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/gettext_shim.cc
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/linuxcnc_runtime_shim.cc
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/nml_status_shim.cc
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/python_c_api_shim.cc
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/rcs_print_shim.cc
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/rtapi_compat.cc
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/tooldata/tooldata_mmap_backend.cc
${CMAKE_CURRENT_SOURCE_DIR}/wasm_shims/tooldata/tooldata_runtime_stubs.cc
@@ -179,7 +183,10 @@ if(CNC_SIM_ENABLE_LINUXCNC_WASM_SAFE_PROBE)
)
target_compile_features(linuxcnc_rs274_wasm_safe_probe_objects PUBLIC cxx_std_20)
target_compile_definitions(linuxcnc_rs274_wasm_safe_probe_objects PRIVATE ULAPI)
target_compile_options(linuxcnc_rs274_wasm_safe_probe_objects PRIVATE ${cnc_sim_wasm_safe_preinclude_options})
target_compile_options(linuxcnc_rs274_wasm_safe_probe_objects PRIVATE
${cnc_sim_wasm_safe_preinclude_options}
${cnc_sim_wasm_safe_section_options}
)
target_include_directories(linuxcnc_rs274_wasm_safe_probe_objects
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
@@ -306,6 +313,7 @@ if(CNC_SIM_ENABLE_LINUXCNC_WASM_SAFE_PROBE)
ULAPI
)
target_compile_options(linuxcnc_rs274_wasm_safe_probe PRIVATE ${cnc_sim_wasm_safe_preinclude_options})
target_link_options(linuxcnc_rs274_wasm_safe_probe PRIVATE ${cnc_sim_wasm_safe_link_options})
target_include_directories(linuxcnc_rs274_wasm_safe_probe
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
@@ -332,6 +340,7 @@ if(CNC_SIM_ENABLE_LINUXCNC_WASM_SAFE_PROBE)
target_compile_features(cnc_sim_wasm_runtime_probe PRIVATE cxx_std_20)
target_compile_definitions(cnc_sim_wasm_runtime_probe PRIVATE ULAPI)
target_compile_options(cnc_sim_wasm_runtime_probe PRIVATE ${cnc_sim_wasm_safe_preinclude_options})
target_link_options(cnc_sim_wasm_runtime_probe PRIVATE ${cnc_sim_wasm_safe_link_options})
target_include_directories(cnc_sim_wasm_runtime_probe
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
@@ -492,6 +501,7 @@ if(EMSCRIPTEN)
)
target_link_options(cnc_sim_wasm PRIVATE
${cnc_sim_wasm_safe_link_options}
"--no-entry"
"-sMODULARIZE=1"
"-sEXPORT_NAME=createCncSimModule"

View File

@@ -106,6 +106,8 @@ bool contains_switchkins_config_alias(const std::string &compact, const char *al
contains_string_value(compact, "postguihalfile", alias) ||
contains_string_value(compact, "postgui_halfile", alias) ||
contains_string_value(compact, "postgui_hal_file", alias) ||
contains_string_value(compact, "subroutinepath", alias) ||
contains_string_value(compact, "subroutine_path", alias) ||
contains_string_value(compact, "config", alias) ||
contains_string_value(compact, "configpath", alias) ||
contains_string_value(compact, "config_path", alias) ||

View File

@@ -9,11 +9,16 @@
{"sim-5axisbridgemill", 0, 1, 2},
{"5axiskinscoordinates=xyzbcwy", 0, 1, 2},
{"5axiskins", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal", 0, 1, 2},
{"5axisgui.hal", 0, 1, 2},
{"5axisgui", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal", 0, 1, 2},
{"5axis_postgui.hal", 0, 1, 2},
{"5axis_postgui", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/bridgemill/remap_subs/428remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/bridgemill/remap_subs", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/bridgemill/remap_subs/429remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/bridgemill/remap_subs/430remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"configs/sim/axis/vismach/5axis/table-dual-rotary", 1, 0, -1},
{"table-dual-rotary", 1, 0, -1},
@@ -23,9 +28,12 @@
{"xyzab_tdr_kins", 1, 0, -1},
{"xyzab_tdr", 1, 0, -1},
{"xyzab-tdr-kins", 1, 0, -1},
{"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal", 1, 0, -1},
{"xyzab-tdr-postgui.hal", 1, 0, -1},
{"xyzab-tdr-postgui", 1, 0, -1},
{"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs/428remap.ngc", 1, 0, -1},
{"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs", 1, 0, -1},
{"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs/429remap.ngc", 1, 0, -1},
{"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"configs/sim/axis/vismach/5axis/table-rotary-tilting", 1, 0, 2},
{"table-rotary-tilting", 1, 0, 2},
@@ -34,9 +42,13 @@
{"sim-xyzac-trt-kins", 1, 0, 2},
{"xyzac-trt-kinssparm=identityfirst", 1, 0, 2},
{"xyzac-trt-kins", 1, 0, 2},
{"configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal", 1, 0, 2},
{"switchkins_postgui.hal", 1, 0, 2},
{"switchkins_postgui", 1, 0, 2},
{"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc", 1, 0, 2},
{"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs", 1, 0, 2},
{"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc", 1, 0, 2},
{"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc", 1, 0, 2},
{"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"xyzbc-trt", 1, 0, 2},
{"sim-xyzbc-trt-kins(switchkins)", 1, 0, 2},
@@ -49,17 +61,22 @@
{"xyzacb-trsrn", 0, 1, 2},
{"xyzacb-trsrn(switchkins)", 0, 1, 2},
{"xyzacb_trsrn", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"xyzacb-trsrn_postgui", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/428remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating", 0, 1, 2},
{"table-rotary_spindle-rotary-nutating", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/429remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/430remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp", 0, 1, 2},
{"xyzbca-trsrn_twp", 0, 1, 2},
{"xyzbca-trsrn", 0, 1, 2},
{"xyzbca-trsrn(switchkins)", 0, 1, 2},
{"xyzbca_trsrn", 0, 1, 2},
{"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"xyzbca-trsrn_postgui", 0, 1, 2},
{"configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
@@ -68,40 +85,59 @@
{"hexapod", 0, 1, 2},
{"hexapod(switchkins)", 0, 1, 2},
{"genhexkins", 0, 1, 2},
{"configs/sim/axis/vismach/hexapod-sim/kinematics.hal", 0, 1, 2},
{"kinematics.hal", 0, 1, 2},
{"kinematics", 0, 1, 2},
{"configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal", 0, 1, 2},
{"hexapod_postgui.hal", 0, 1, 2},
{"hexapod_postgui", 0, 1, 2},
{"configs/sim/axis/vismach/hexapod-sim/remap_subs/428remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/hexapod-sim/remap_subs", 0, 1, 2},
{"configs/sim/axis/vismach/hexapod-sim/remap_subs/429remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/hexapod-sim/remap_subs/430remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"configs/sim/axis/vismach/melfa-sim", 0, 1, 2},
{"melfa-sim", 0, 1, 2},
{"melfa", 0, 1, 2},
{"melfa(mm)", 0, 1, 2},
{"genserkins", 0, 1, 2},
{"configs/sim/axis/vismach/melfa-sim/melfa_dh.hal", 0, 1, 2},
{"melfa_dh.hal", 0, 1, 2},
{"melfa_dh", 0, 1, 2},
{"configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal", 0, 1, 2},
{"melfa-postgui.hal", 0, 1, 2},
{"melfa-postgui", 0, 1, 2},
{"configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/melfa-sim/remap_subs", 0, 1, 2},
{"configs/sim/axis/vismach/melfa-sim/remap_subs/429remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/melfa-sim/remap_subs/430remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"configs/sim/axis/vismach/millturn", 0, 1, -1},
{"millturn", 0, 1, -1},
{"millturn(mm)", 0, 1, -1},
{"configs/sim/axis/vismach/millturn/millturn.hal", 0, 1, -1},
{"millturn.hal", 0, 1, -1},
{"configs/sim/axis/vismach/millturn/millturn-postgui.hal", 0, 1, -1},
{"millturn-postgui.hal", 0, 1, -1},
{"millturn-postgui", 0, 1, -1},
{"configs/sim/axis/vismach/millturn/remap_subs/428remap.ngc", 0, 1, -1},
{"configs/sim/axis/vismach/millturn/remap_subs", 0, 1, -1},
{"configs/sim/axis/vismach/millturn/remap_subs/429remap.ngc", 0, 1, -1},
{"configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"configs/sim/axis/vismach/puma", 0, 1, 2},
{"puma", 0, 1, 2},
{"puma(pumakins,switchkins)", 0, 1, 2},
{"pumakins", 0, 1, 2},
{"configs/sim/axis/vismach/puma/puma_dh.hal", 0, 1, 2},
{"puma_dh.hal", 0, 1, 2},
{"puma_dh", 0, 1, 2},
{"configs/sim/axis/vismach/puma/puma_postgui.hal", 0, 1, 2},
{"puma_postgui.hal", 0, 1, 2},
{"puma_postgui", 0, 1, 2},
{"configs/sim/axis/vismach/puma/remap_subs/428remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/puma/remap_subs", 0, 1, 2},
{"configs/sim/axis/vismach/puma/remap_subs/429remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/puma/remap_subs/430remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"puma_cube", 0, 1, 2},
{"puma_cube.ini(pumakins)", 0, 1, 2},
@@ -109,8 +145,10 @@
{"configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"puma560", 0, 1, 2},
{"puma560(switchkins)(inch)", 0, 1, 2},
{"configs/sim/axis/vismach/puma/puma560_dh.hal", 0, 1, 2},
{"puma560_dh.hal", 0, 1, 2},
{"puma560_dh", 0, 1, 2},
{"configs/sim/axis/vismach/puma/puma560_postgui.hal", 0, 1, 2},
{"puma560_postgui.hal", 0, 1, 2},
{"puma560_postgui", 0, 1, 2},
{"configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
@@ -121,12 +159,22 @@
{"scara(genserkins,switchkins)", 0, 1, 2},
{"scarakinscoordinates=xyzcab", 0, 1, 2},
{"scarakins", 0, 1, 2},
{"configs/sim/axis/vismach/scara/scara_postgui.hal", 0, 1, 2},
{"scara_postgui.hal", 0, 1, 2},
{"scara_postgui", 0, 1, 2},
{"configs/sim/axis/vismach/scara/remap_subs/428remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/scara/remap_subs", 0, 1, 2},
{"configs/sim/axis/vismach/scara/remap_subs/429remap.ngc", 0, 1, 2},
{"configs/sim/axis/vismach/scara/remap_subs/430remap.ngc", 0, 1, 2},
{"configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"configs/sim/qtaxis/non-trivial/scara", 0, 1, 2},
{"configs/sim/qtaxis/non-trivial/scara/remap_subs/428remap.ngc", 0, 1, 2},
{"configs/sim/qtaxis/non-trivial/scara/remap_subs", 0, 1, 2},
{"configs/sim/qtaxis/non-trivial/scara/remap_subs/429remap.ngc", 0, 1, 2},
{"configs/sim/qtaxis/non-trivial/scara/remap_subs/430remap.ngc", 0, 1, 2},
{"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"configs/sim/qtvcp_screens/non-trivial/scara", 0, 1, 2},
{"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/428remap.ngc", 0, 1, 2},
{"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs", 0, 1, 2},
{"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/429remap.ngc", 0, 1, 2},
{"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/430remap.ngc", 0, 1, 2},

View File

@@ -1,12 +1,15 @@
// Generated by ./generate-linuxcnc-switchkins-remap-table.sh --config-cases.
// Source: LinuxCNC INI config path, MACHINE, KINEMATICS, non-LIB HALFILE/POSTGUI_HALFILE,
// and adjacent remap_subs entries for M428/M429/M430 #<kinstype> assignments.
// SUBROUTINE_PATH-resolved remap_subs entries, and adjacent M428/M429/M430 #<kinstype> assignments.
{"config", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini", 0, 1, 2},
@@ -18,6 +21,10 @@
{"switchkins", "Sim-5Axis Bridge Mill", 0, 1, 2},
{"switchkins", "5axiskins coordinates=xyzbcwy", 0, 1, 2},
{"switchkins", "5axiskins", 0, 1, 2},
{"halFile", "configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal", 0, 1, 2},
{"halfile", "configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal", 0, 1, 2},
{"hal_file", "configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal", 0, 1, 2},
{"HALFILE", "configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal", 0, 1, 2},
{"halFile", "5axisgui.hal", 0, 1, 2},
{"halFile", "5axisgui", 0, 1, 2},
{"halfile", "5axisgui.hal", 0, 1, 2},
@@ -26,22 +33,40 @@
{"hal_file", "5axisgui", 0, 1, 2},
{"HALFILE", "5axisgui.hal", 0, 1, 2},
{"HALFILE", "5axisgui", 0, 1, 2},
{"postguiHalFile", "configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal", 0, 1, 2},
{"postguihalfile", "configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal", 0, 1, 2},
{"postgui_halfile", "configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal", 0, 1, 2},
{"postguiHalFile", "5axis_postgui.hal", 0, 1, 2},
{"postguiHalFile", "5axis_postgui", 0, 1, 2},
{"postguihalfile", "5axis_postgui.hal", 0, 1, 2},
{"postguihalfile", "5axis_postgui", 0, 1, 2},
{"postgui_halfile", "5axis_postgui.hal", 0, 1, 2},
{"postgui_halfile", "5axis_postgui", 0, 1, 2},
{"postgui_hal_file", "5axis_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "5axis_postgui", 0, 1, 2},
{"POSTGUI_HALFILE", "5axis_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "5axis_postgui", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/bridgemill/remap_subs/428remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/bridgemill/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/bridgemill", 0, 1, 2},
{"remap", "bridgemill", 0, 1, 2},
{"subroutinePath", "configs/sim/axis/vismach/5axis/bridgemill/remap_subs", 0, 1, 2},
{"subroutinepath", "configs/sim/axis/vismach/5axis/bridgemill/remap_subs", 0, 1, 2},
{"subroutine_path", "configs/sim/axis/vismach/5axis/bridgemill/remap_subs", 0, 1, 2},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/5axis/bridgemill/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/bridgemill/remap_subs/429remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/bridgemill/remap_subs/430remap.ngc", 0, 1, 2},
{"config", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"configPath", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"configpath", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"config_path", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"ini", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"iniFile", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"inifile", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"iniFileName", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"inifilename", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"ini_file", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"ini_file_name", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
{"INI_FILE_NAME", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini", 1, 0, -1},
@@ -54,22 +79,39 @@
{"switchkins", "xyzab_tdr_kins", 1, 0, -1},
{"switchkins", "xyzab_tdr", 1, 0, -1},
{"switchkins", "xyzab-tdr-kins", 1, 0, -1},
{"postguiHalFile", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal", 1, 0, -1},
{"postguihalfile", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal", 1, 0, -1},
{"postgui_halfile", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal", 1, 0, -1},
{"postgui_hal_file", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal", 1, 0, -1},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal", 1, 0, -1},
{"postguiHalFile", "xyzab-tdr-postgui.hal", 1, 0, -1},
{"postguiHalFile", "xyzab-tdr-postgui", 1, 0, -1},
{"postguihalfile", "xyzab-tdr-postgui.hal", 1, 0, -1},
{"postguihalfile", "xyzab-tdr-postgui", 1, 0, -1},
{"postgui_halfile", "xyzab-tdr-postgui.hal", 1, 0, -1},
{"postgui_halfile", "xyzab-tdr-postgui", 1, 0, -1},
{"postgui_hal_file", "xyzab-tdr-postgui.hal", 1, 0, -1},
{"postgui_hal_file", "xyzab-tdr-postgui", 1, 0, -1},
{"POSTGUI_HALFILE", "xyzab-tdr-postgui.hal", 1, 0, -1},
{"POSTGUI_HALFILE", "xyzab-tdr-postgui", 1, 0, -1},
{"remap", "configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs/428remap.ngc", 1, 0, -1},
{"remap", "configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs", 1, 0, -1},
{"remap", "configs/sim/axis/vismach/5axis/table-dual-rotary", 1, 0, -1},
{"remap", "table-dual-rotary", 1, 0, -1},
{"subroutinePath", "configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs", 1, 0, -1},
{"subroutinepath", "configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs", 1, 0, -1},
{"subroutine_path", "configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs", 1, 0, -1},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs", 1, 0, -1},
{"remap", "configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs/429remap.ngc", 1, 0, -1},
{"config", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"configPath", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"configpath", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"config_path", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"ini", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"iniFile", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"inifile", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"iniFileName", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"inifilename", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"ini_file", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"ini_file_name", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", 1, 0, 2},
@@ -81,22 +123,40 @@
{"switchkins", "sim-xyzac-trt-kins", 1, 0, 2},
{"switchkins", "xyzac-trt-kins sparm=identityfirst", 1, 0, 2},
{"switchkins", "xyzac-trt-kins", 1, 0, 2},
{"postguiHalFile", "configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal", 1, 0, 2},
{"postguihalfile", "configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal", 1, 0, 2},
{"postgui_halfile", "configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal", 1, 0, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal", 1, 0, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal", 1, 0, 2},
{"postguiHalFile", "switchkins_postgui.hal", 1, 0, 2},
{"postguiHalFile", "switchkins_postgui", 1, 0, 2},
{"postguihalfile", "switchkins_postgui.hal", 1, 0, 2},
{"postguihalfile", "switchkins_postgui", 1, 0, 2},
{"postgui_halfile", "switchkins_postgui.hal", 1, 0, 2},
{"postgui_halfile", "switchkins_postgui", 1, 0, 2},
{"postgui_hal_file", "switchkins_postgui.hal", 1, 0, 2},
{"postgui_hal_file", "switchkins_postgui", 1, 0, 2},
{"POSTGUI_HALFILE", "switchkins_postgui.hal", 1, 0, 2},
{"POSTGUI_HALFILE", "switchkins_postgui", 1, 0, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc", 1, 0, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs", 1, 0, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary-tilting", 1, 0, 2},
{"remap", "table-rotary-tilting", 1, 0, 2},
{"subroutinePath", "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs", 1, 0, 2},
{"subroutinepath", "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs", 1, 0, 2},
{"subroutine_path", "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs", 1, 0, 2},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs", 1, 0, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc", 1, 0, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc", 1, 0, 2},
{"config", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"configPath", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"configpath", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"config_path", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"ini", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"iniFile", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"inifile", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"iniFileName", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"inifilename", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"ini_file", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"ini_file_name", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", 1, 0, 2},
@@ -109,10 +169,13 @@
{"switchkins", "xyzbc-trt-kins", 1, 0, 2},
{"config", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini", 0, 1, 2},
@@ -122,22 +185,40 @@
{"switchkins", "xyzacb-trsrn", 0, 1, 2},
{"switchkins", "xyzacb-trsrn (switchkins)", 0, 1, 2},
{"switchkins", "xyzacb_trsrn", 0, 1, 2},
{"postguiHalFile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"postguihalfile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"postgui_halfile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"postguiHalFile", "xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"postguiHalFile", "xyzacb-trsrn_postgui", 0, 1, 2},
{"postguihalfile", "xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"postguihalfile", "xyzacb-trsrn_postgui", 0, 1, 2},
{"postgui_halfile", "xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"postgui_halfile", "xyzacb-trsrn_postgui", 0, 1, 2},
{"postgui_hal_file", "xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "xyzacb-trsrn_postgui", 0, 1, 2},
{"POSTGUI_HALFILE", "xyzacb-trsrn_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "xyzacb-trsrn_postgui", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/428remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating", 0, 1, 2},
{"remap", "table-rotary_spindle-rotary-nutating", 0, 1, 2},
{"subroutinePath", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs", 0, 1, 2},
{"subroutinepath", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs", 0, 1, 2},
{"subroutine_path", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs", 0, 1, 2},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/429remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/430remap.ngc", 0, 1, 2},
{"config", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini", 0, 1, 2},
@@ -147,8 +228,15 @@
{"switchkins", "xyzbca-trsrn", 0, 1, 2},
{"switchkins", "xyzbca-trsrn (switchkins)", 0, 1, 2},
{"switchkins", "xyzbca_trsrn", 0, 1, 2},
{"postguiHalFile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"postguihalfile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"postgui_halfile", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"postguiHalFile", "xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"postguiHalFile", "xyzbca-trsrn_postgui", 0, 1, 2},
{"postguihalfile", "xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"postguihalfile", "xyzbca-trsrn_postgui", 0, 1, 2},
{"postgui_halfile", "xyzbca-trsrn_postgui.hal", 0, 1, 2},
{"postgui_halfile", "xyzbca-trsrn_postgui", 0, 1, 2},
{"postgui_hal_file", "xyzbca-trsrn_postgui.hal", 0, 1, 2},
@@ -157,10 +245,13 @@
{"POSTGUI_HALFILE", "xyzbca-trsrn_postgui", 0, 1, 2},
{"config", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/hexapod-sim/hexapod.ini", 0, 1, 2},
@@ -170,6 +261,10 @@
{"switchkins", "hexapod", 0, 1, 2},
{"switchkins", "hexapod (switchkins)", 0, 1, 2},
{"switchkins", "genhexkins", 0, 1, 2},
{"halFile", "configs/sim/axis/vismach/hexapod-sim/kinematics.hal", 0, 1, 2},
{"halfile", "configs/sim/axis/vismach/hexapod-sim/kinematics.hal", 0, 1, 2},
{"hal_file", "configs/sim/axis/vismach/hexapod-sim/kinematics.hal", 0, 1, 2},
{"HALFILE", "configs/sim/axis/vismach/hexapod-sim/kinematics.hal", 0, 1, 2},
{"halFile", "kinematics.hal", 0, 1, 2},
{"halFile", "kinematics", 0, 1, 2},
{"halfile", "kinematics.hal", 0, 1, 2},
@@ -178,22 +273,40 @@
{"hal_file", "kinematics", 0, 1, 2},
{"HALFILE", "kinematics.hal", 0, 1, 2},
{"HALFILE", "kinematics", 0, 1, 2},
{"postguiHalFile", "configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal", 0, 1, 2},
{"postguihalfile", "configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal", 0, 1, 2},
{"postgui_halfile", "configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal", 0, 1, 2},
{"postguiHalFile", "hexapod_postgui.hal", 0, 1, 2},
{"postguiHalFile", "hexapod_postgui", 0, 1, 2},
{"postguihalfile", "hexapod_postgui.hal", 0, 1, 2},
{"postguihalfile", "hexapod_postgui", 0, 1, 2},
{"postgui_halfile", "hexapod_postgui.hal", 0, 1, 2},
{"postgui_halfile", "hexapod_postgui", 0, 1, 2},
{"postgui_hal_file", "hexapod_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "hexapod_postgui", 0, 1, 2},
{"POSTGUI_HALFILE", "hexapod_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "hexapod_postgui", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/hexapod-sim/remap_subs/428remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/hexapod-sim/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/hexapod-sim", 0, 1, 2},
{"remap", "hexapod-sim", 0, 1, 2},
{"subroutinePath", "configs/sim/axis/vismach/hexapod-sim/remap_subs", 0, 1, 2},
{"subroutinepath", "configs/sim/axis/vismach/hexapod-sim/remap_subs", 0, 1, 2},
{"subroutine_path", "configs/sim/axis/vismach/hexapod-sim/remap_subs", 0, 1, 2},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/hexapod-sim/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/hexapod-sim/remap_subs/429remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/hexapod-sim/remap_subs/430remap.ngc", 0, 1, 2},
{"config", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/melfa-sim/melfa.ini", 0, 1, 2},
@@ -203,6 +316,10 @@
{"switchkins", "melfa", 0, 1, 2},
{"switchkins", "melfa (mm)", 0, 1, 2},
{"switchkins", "genserkins", 0, 1, 2},
{"halFile", "configs/sim/axis/vismach/melfa-sim/melfa_dh.hal", 0, 1, 2},
{"halfile", "configs/sim/axis/vismach/melfa-sim/melfa_dh.hal", 0, 1, 2},
{"hal_file", "configs/sim/axis/vismach/melfa-sim/melfa_dh.hal", 0, 1, 2},
{"HALFILE", "configs/sim/axis/vismach/melfa-sim/melfa_dh.hal", 0, 1, 2},
{"halFile", "melfa_dh.hal", 0, 1, 2},
{"halFile", "melfa_dh", 0, 1, 2},
{"halfile", "melfa_dh.hal", 0, 1, 2},
@@ -211,22 +328,40 @@
{"hal_file", "melfa_dh", 0, 1, 2},
{"HALFILE", "melfa_dh.hal", 0, 1, 2},
{"HALFILE", "melfa_dh", 0, 1, 2},
{"postguiHalFile", "configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal", 0, 1, 2},
{"postguihalfile", "configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal", 0, 1, 2},
{"postgui_halfile", "configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal", 0, 1, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal", 0, 1, 2},
{"postguiHalFile", "melfa-postgui.hal", 0, 1, 2},
{"postguiHalFile", "melfa-postgui", 0, 1, 2},
{"postguihalfile", "melfa-postgui.hal", 0, 1, 2},
{"postguihalfile", "melfa-postgui", 0, 1, 2},
{"postgui_halfile", "melfa-postgui.hal", 0, 1, 2},
{"postgui_halfile", "melfa-postgui", 0, 1, 2},
{"postgui_hal_file", "melfa-postgui.hal", 0, 1, 2},
{"postgui_hal_file", "melfa-postgui", 0, 1, 2},
{"POSTGUI_HALFILE", "melfa-postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "melfa-postgui", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/melfa-sim/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/melfa-sim", 0, 1, 2},
{"remap", "melfa-sim", 0, 1, 2},
{"subroutinePath", "configs/sim/axis/vismach/melfa-sim/remap_subs", 0, 1, 2},
{"subroutinepath", "configs/sim/axis/vismach/melfa-sim/remap_subs", 0, 1, 2},
{"subroutine_path", "configs/sim/axis/vismach/melfa-sim/remap_subs", 0, 1, 2},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/melfa-sim/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/melfa-sim/remap_subs/429remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/melfa-sim/remap_subs/430remap.ngc", 0, 1, 2},
{"config", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"configPath", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"configpath", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"config_path", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"ini", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"iniFile", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"inifile", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"iniFileName", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"inifilename", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"ini_file", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"ini_file_name", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
{"INI_FILE_NAME", "configs/sim/axis/vismach/millturn/millturn.ini", 0, 1, -1},
@@ -234,6 +369,10 @@
{"kinematics", "millturn", 0, 1, -1},
{"switchkins", "millturn", 0, 1, -1},
{"switchkins", "millturn (mm)", 0, 1, -1},
{"halFile", "configs/sim/axis/vismach/millturn/millturn.hal", 0, 1, -1},
{"halfile", "configs/sim/axis/vismach/millturn/millturn.hal", 0, 1, -1},
{"hal_file", "configs/sim/axis/vismach/millturn/millturn.hal", 0, 1, -1},
{"HALFILE", "configs/sim/axis/vismach/millturn/millturn.hal", 0, 1, -1},
{"halFile", "millturn.hal", 0, 1, -1},
{"halFile", "millturn", 0, 1, -1},
{"halfile", "millturn.hal", 0, 1, -1},
@@ -242,22 +381,39 @@
{"hal_file", "millturn", 0, 1, -1},
{"HALFILE", "millturn.hal", 0, 1, -1},
{"HALFILE", "millturn", 0, 1, -1},
{"postguiHalFile", "configs/sim/axis/vismach/millturn/millturn-postgui.hal", 0, 1, -1},
{"postguihalfile", "configs/sim/axis/vismach/millturn/millturn-postgui.hal", 0, 1, -1},
{"postgui_halfile", "configs/sim/axis/vismach/millturn/millturn-postgui.hal", 0, 1, -1},
{"postgui_hal_file", "configs/sim/axis/vismach/millturn/millturn-postgui.hal", 0, 1, -1},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/millturn/millturn-postgui.hal", 0, 1, -1},
{"postguiHalFile", "millturn-postgui.hal", 0, 1, -1},
{"postguiHalFile", "millturn-postgui", 0, 1, -1},
{"postguihalfile", "millturn-postgui.hal", 0, 1, -1},
{"postguihalfile", "millturn-postgui", 0, 1, -1},
{"postgui_halfile", "millturn-postgui.hal", 0, 1, -1},
{"postgui_halfile", "millturn-postgui", 0, 1, -1},
{"postgui_hal_file", "millturn-postgui.hal", 0, 1, -1},
{"postgui_hal_file", "millturn-postgui", 0, 1, -1},
{"POSTGUI_HALFILE", "millturn-postgui.hal", 0, 1, -1},
{"POSTGUI_HALFILE", "millturn-postgui", 0, 1, -1},
{"remap", "configs/sim/axis/vismach/millturn/remap_subs/428remap.ngc", 0, 1, -1},
{"remap", "configs/sim/axis/vismach/millturn/remap_subs", 0, 1, -1},
{"remap", "configs/sim/axis/vismach/millturn", 0, 1, -1},
{"remap", "millturn", 0, 1, -1},
{"subroutinePath", "configs/sim/axis/vismach/millturn/remap_subs", 0, 1, -1},
{"subroutinepath", "configs/sim/axis/vismach/millturn/remap_subs", 0, 1, -1},
{"subroutine_path", "configs/sim/axis/vismach/millturn/remap_subs", 0, 1, -1},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/millturn/remap_subs", 0, 1, -1},
{"remap", "configs/sim/axis/vismach/millturn/remap_subs/429remap.ngc", 0, 1, -1},
{"config", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/puma/puma.ini", 0, 1, 2},
@@ -267,6 +423,10 @@
{"switchkins", "PUMA (pumakins,switchkins)", 0, 1, 2},
{"switchkins", "PUMA", 0, 1, 2},
{"switchkins", "pumakins", 0, 1, 2},
{"halFile", "configs/sim/axis/vismach/puma/puma_dh.hal", 0, 1, 2},
{"halfile", "configs/sim/axis/vismach/puma/puma_dh.hal", 0, 1, 2},
{"hal_file", "configs/sim/axis/vismach/puma/puma_dh.hal", 0, 1, 2},
{"HALFILE", "configs/sim/axis/vismach/puma/puma_dh.hal", 0, 1, 2},
{"halFile", "puma_dh.hal", 0, 1, 2},
{"halFile", "puma_dh", 0, 1, 2},
{"halfile", "puma_dh.hal", 0, 1, 2},
@@ -275,22 +435,40 @@
{"hal_file", "puma_dh", 0, 1, 2},
{"HALFILE", "puma_dh.hal", 0, 1, 2},
{"HALFILE", "puma_dh", 0, 1, 2},
{"postguiHalFile", "configs/sim/axis/vismach/puma/puma_postgui.hal", 0, 1, 2},
{"postguihalfile", "configs/sim/axis/vismach/puma/puma_postgui.hal", 0, 1, 2},
{"postgui_halfile", "configs/sim/axis/vismach/puma/puma_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/puma/puma_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/puma/puma_postgui.hal", 0, 1, 2},
{"postguiHalFile", "puma_postgui.hal", 0, 1, 2},
{"postguiHalFile", "puma_postgui", 0, 1, 2},
{"postguihalfile", "puma_postgui.hal", 0, 1, 2},
{"postguihalfile", "puma_postgui", 0, 1, 2},
{"postgui_halfile", "puma_postgui.hal", 0, 1, 2},
{"postgui_halfile", "puma_postgui", 0, 1, 2},
{"postgui_hal_file", "puma_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "puma_postgui", 0, 1, 2},
{"POSTGUI_HALFILE", "puma_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "puma_postgui", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/puma/remap_subs/428remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/puma/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/puma", 0, 1, 2},
{"remap", "puma", 0, 1, 2},
{"subroutinePath", "configs/sim/axis/vismach/puma/remap_subs", 0, 1, 2},
{"subroutinepath", "configs/sim/axis/vismach/puma/remap_subs", 0, 1, 2},
{"subroutine_path", "configs/sim/axis/vismach/puma/remap_subs", 0, 1, 2},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/puma/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/puma/remap_subs/429remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/puma/remap_subs/430remap.ngc", 0, 1, 2},
{"config", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/puma/puma_cube.ini", 0, 1, 2},
@@ -300,16 +478,23 @@
{"switchkins", "puma_cube.ini", 0, 1, 2},
{"config", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/puma/puma560.ini", 0, 1, 2},
{"machine", "puma560 (switchkins) (inch)", 0, 1, 2},
{"switchkins", "puma560", 0, 1, 2},
{"switchkins", "puma560 (switchkins) (inch)", 0, 1, 2},
{"halFile", "configs/sim/axis/vismach/puma/puma560_dh.hal", 0, 1, 2},
{"halfile", "configs/sim/axis/vismach/puma/puma560_dh.hal", 0, 1, 2},
{"hal_file", "configs/sim/axis/vismach/puma/puma560_dh.hal", 0, 1, 2},
{"HALFILE", "configs/sim/axis/vismach/puma/puma560_dh.hal", 0, 1, 2},
{"halFile", "puma560_dh.hal", 0, 1, 2},
{"halFile", "puma560_dh", 0, 1, 2},
{"halfile", "puma560_dh.hal", 0, 1, 2},
@@ -318,8 +503,15 @@
{"hal_file", "puma560_dh", 0, 1, 2},
{"HALFILE", "puma560_dh.hal", 0, 1, 2},
{"HALFILE", "puma560_dh", 0, 1, 2},
{"postguiHalFile", "configs/sim/axis/vismach/puma/puma560_postgui.hal", 0, 1, 2},
{"postguihalfile", "configs/sim/axis/vismach/puma/puma560_postgui.hal", 0, 1, 2},
{"postgui_halfile", "configs/sim/axis/vismach/puma/puma560_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/puma/puma560_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/puma/puma560_postgui.hal", 0, 1, 2},
{"postguiHalFile", "puma560_postgui.hal", 0, 1, 2},
{"postguiHalFile", "puma560_postgui", 0, 1, 2},
{"postguihalfile", "puma560_postgui.hal", 0, 1, 2},
{"postguihalfile", "puma560_postgui", 0, 1, 2},
{"postgui_halfile", "puma560_postgui.hal", 0, 1, 2},
{"postgui_halfile", "puma560_postgui", 0, 1, 2},
{"postgui_hal_file", "puma560_postgui.hal", 0, 1, 2},
@@ -328,20 +520,26 @@
{"POSTGUI_HALFILE", "puma560_postgui", 0, 1, 2},
{"config", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/puma/puma560_uvw.ini", 0, 1, 2},
{"switchkins", "puma560_uvw", 0, 1, 2},
{"config", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"configPath", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"configpath", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"config_path", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"ini", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"iniFile", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"inifile", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"iniFileName", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"inifilename", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"ini_file", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/axis/vismach/scara/scara.ini", 0, 1, 2},
@@ -352,33 +550,70 @@
{"switchkins", "SCARA", 0, 1, 2},
{"switchkins", "scarakins coordinates=xyzcab", 0, 1, 2},
{"switchkins", "scarakins", 0, 1, 2},
{"postguiHalFile", "configs/sim/axis/vismach/scara/scara_postgui.hal", 0, 1, 2},
{"postguihalfile", "configs/sim/axis/vismach/scara/scara_postgui.hal", 0, 1, 2},
{"postgui_halfile", "configs/sim/axis/vismach/scara/scara_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "configs/sim/axis/vismach/scara/scara_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "configs/sim/axis/vismach/scara/scara_postgui.hal", 0, 1, 2},
{"postguiHalFile", "scara_postgui.hal", 0, 1, 2},
{"postguiHalFile", "scara_postgui", 0, 1, 2},
{"postguihalfile", "scara_postgui.hal", 0, 1, 2},
{"postguihalfile", "scara_postgui", 0, 1, 2},
{"postgui_halfile", "scara_postgui.hal", 0, 1, 2},
{"postgui_halfile", "scara_postgui", 0, 1, 2},
{"postgui_hal_file", "scara_postgui.hal", 0, 1, 2},
{"postgui_hal_file", "scara_postgui", 0, 1, 2},
{"POSTGUI_HALFILE", "scara_postgui.hal", 0, 1, 2},
{"POSTGUI_HALFILE", "scara_postgui", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/scara/remap_subs/428remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/scara/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/scara", 0, 1, 2},
{"remap", "scara", 0, 1, 2},
{"subroutinePath", "configs/sim/axis/vismach/scara/remap_subs", 0, 1, 2},
{"subroutinepath", "configs/sim/axis/vismach/scara/remap_subs", 0, 1, 2},
{"subroutine_path", "configs/sim/axis/vismach/scara/remap_subs", 0, 1, 2},
{"SUBROUTINE_PATH", "configs/sim/axis/vismach/scara/remap_subs", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/scara/remap_subs/429remap.ngc", 0, 1, 2},
{"remap", "configs/sim/axis/vismach/scara/remap_subs/430remap.ngc", 0, 1, 2},
{"config", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"configPath", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"configpath", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"config_path", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"ini", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"iniFile", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"inifile", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"iniFileName", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"inifilename", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"ini_file", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/qtaxis/non-trivial/scara/scara.ini", 0, 1, 2},
{"remap", "configs/sim/qtaxis/non-trivial/scara/remap_subs/428remap.ngc", 0, 1, 2},
{"remap", "configs/sim/qtaxis/non-trivial/scara/remap_subs", 0, 1, 2},
{"remap", "configs/sim/qtaxis/non-trivial/scara", 0, 1, 2},
{"subroutinePath", "configs/sim/qtaxis/non-trivial/scara/remap_subs", 0, 1, 2},
{"subroutinepath", "configs/sim/qtaxis/non-trivial/scara/remap_subs", 0, 1, 2},
{"subroutine_path", "configs/sim/qtaxis/non-trivial/scara/remap_subs", 0, 1, 2},
{"SUBROUTINE_PATH", "configs/sim/qtaxis/non-trivial/scara/remap_subs", 0, 1, 2},
{"remap", "configs/sim/qtaxis/non-trivial/scara/remap_subs/429remap.ngc", 0, 1, 2},
{"remap", "configs/sim/qtaxis/non-trivial/scara/remap_subs/430remap.ngc", 0, 1, 2},
{"config", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"configPath", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"configpath", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"config_path", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"ini", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"iniFile", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"inifile", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"iniFileName", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"inifilename", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"ini_file", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"ini_file_name", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"INI_FILE_NAME", "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini", 0, 1, 2},
{"remap", "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/428remap.ngc", 0, 1, 2},
{"remap", "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs", 0, 1, 2},
{"remap", "configs/sim/qtvcp_screens/non-trivial/scara", 0, 1, 2},
{"subroutinePath", "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs", 0, 1, 2},
{"subroutinepath", "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs", 0, 1, 2},
{"subroutine_path", "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs", 0, 1, 2},
{"SUBROUTINE_PATH", "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs", 0, 1, 2},
{"remap", "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/429remap.ngc", 0, 1, 2},
{"remap", "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/430remap.ngc", 0, 1, 2},

View File

@@ -78,6 +78,8 @@ int main() {
const char program[] =
"G21 G90 G17\n"
"G0 X1\n"
"F100\n"
"G2 X2 Y0 I0.5 J0\n"
"M30\n";
if (cnc_sim_parse_program(sim, program, sizeof(program) - 1) != 0) {
cnc_sim_destroy(sim);
@@ -85,15 +87,20 @@ int main() {
}
bool saw_linuxcnc_rapid = false;
bool saw_linuxcnc_arc = false;
bool saw_program_end = false;
for (const auto &event : events) {
saw_linuxcnc_rapid = saw_linuxcnc_rapid ||
(event.type == CNC_SIM_EVENT_RAPID &&
event.line == 2 &&
near(event.end.x, 1.0));
saw_linuxcnc_arc = saw_linuxcnc_arc ||
(event.type == CNC_SIM_EVENT_ARC_FEED &&
event.line == 4 &&
near(event.end.x, 2.0));
saw_program_end = saw_program_end || event.type == CNC_SIM_EVENT_PROGRAM_END;
}
cnc_sim_destroy(sim);
return saw_linuxcnc_rapid && saw_program_end ? 0 : 4;
return saw_linuxcnc_rapid && saw_linuxcnc_arc && saw_program_end ? 0 : 4;
}

View File

@@ -1,4 +1,5 @@
#include "nml_intf/emc_nml.hh"
EMC_STAT *emcStatus = nullptr;
// LinuxCNC src/emc/sai/dummyemcstat.cc uses the same source-backed status
// object when the interpreter runs without the task controller.
EMC_STAT *emcStatus = new EMC_STAT;

View File

@@ -0,0 +1,71 @@
#include "libnml/nml/nmlmsg.hh"
#include "libnml/nml/stat_msg.hh"
#include "libnml/rcs/rcs_print.hh"
#include <cstring>
int NMLmsg::automatically_clear = 1;
NMLmsg::NMLmsg(NMLTYPE t, long s) {
_type = t;
size = s;
if (automatically_clear) {
clear();
}
if (size < static_cast<long>(sizeof(NMLmsg))) {
rcs_print_error("NMLmsg: size(=%ld) must be atleast %zu\n", size, sizeof(NMLmsg));
size = sizeof(NMLmsg);
}
if (_type <= 0) {
rcs_print_error("NMLmsg: type(=%d) should be greater than zero.\n", static_cast<int>(_type));
}
}
NMLmsg::NMLmsg(NMLTYPE t, size_t s) {
_type = t;
size = static_cast<long>(s);
if (automatically_clear) {
clear();
}
if (size < static_cast<long>(sizeof(NMLmsg))) {
rcs_print_error("NMLmsg: size(=%ld) must be atleast %zu\n", size, sizeof(NMLmsg));
size = sizeof(NMLmsg);
}
if (_type <= 0) {
rcs_print_error("NMLmsg: type(=%d) should be greater than zero.\n", static_cast<int>(_type));
}
}
NMLmsg::NMLmsg(NMLTYPE t, long s, int noclear) {
if (automatically_clear && !noclear) {
clear();
}
_type = t;
size = s;
if (size < static_cast<long>(sizeof(NMLmsg))) {
rcs_print_error("NMLmsg: size(=%ld) must be atleast %zu\n", size, sizeof(NMLmsg));
size = sizeof(NMLmsg);
}
if (_type <= 0) {
rcs_print_error("NMLmsg: type(=%d) should be greater than zero.\n", static_cast<int>(_type));
}
}
void NMLmsg::clear() {
const long temp_size = size;
const NMLTYPE temp_type = _type;
std::memset(static_cast<void *>(this), 0, static_cast<size_t>(size));
size = temp_size;
_type = temp_type;
if (size < static_cast<long>(sizeof(NMLmsg))) {
rcs_print_error("NMLmsg: size(=%ld) must be atleast %zu\n", size, sizeof(NMLmsg));
size = sizeof(NMLmsg);
}
}
RCS_STAT_MSG::RCS_STAT_MSG(NMLTYPE t, size_t sz) : NMLmsg(t, sz) {
command_type = -1;
echo_serial_number = -1;
status = RCS_STATUS::UNINITIALIZED;
_state = -1;
}

View File

@@ -0,0 +1,14 @@
#include <cstdarg>
#include <cstdio>
extern "C" int set_print_rcs_error_info(const char *, int) {
return 0;
}
extern "C" int print_rcs_error_new(const char *format, ...) {
va_list args;
va_start(args, format);
const int rc = std::vfprintf(stderr, format, args);
va_end(args);
return rc;
}

View File

@@ -69,6 +69,15 @@ These are not needed for the browser simulator ABI and should not be part of the
- persistent parameter file writes.
- dynamic INI/HAL queries.
The wasm-safe runtime now constructs its detached `EMC_STAT` through LinuxCNC
`src/emc/nml_intf/emcops.cc`. The singleton follows LinuxCNC
`src/emc/sai/dummyemcstat.cc`, and the required `NMLmsg`/`RCS_STAT_MSG`
constructors are trimmed from `src/libnml/nml/nmlmsg.cc` and
`src/libnml/nml/stat_msg.cc` in `core/wasm_shims/nml_status_shim.cc`, so
interpreter paths such as `Interp::tag_arc()` in `interp_convert.cc` read
initialized LinuxCNC status defaults without linking the task controller or
native NML channels.
## Current syntax probe
Run:

View File

@@ -16,6 +16,10 @@ Hard rules:
LinuxCNC source before implementation.
- Browser-side wasm filesystem behavior must use OPFS-backed storage. Do not
add browser filesystem paths that bypass OPFS.
- Browser app and wasm bridge code must not persist CNC programs, LinuxCNC
parameter files, or mirrored workspace files through non-OPFS browser storage
APIs such as Local Storage, IndexedDB, File Picker writes, WebKit filesystem
APIs, or FileReader-backed import paths.
Allowed project code:
@@ -61,6 +65,8 @@ Efficiency rules:
permission to expand the pass into another workstream.
- Do not add a smoke-only behavior path when the LinuxCNC-backed route already
exists; add coverage to the source-backed route instead.
- Keep browser filesystem guardrails negative as well as positive: require the
OPFS bridge and reject browser app/wasm storage APIs that could bypass it.
- Smoke tests are verification guardrails. They must not be expanded with new
functional CNC behavior unless that behavior is directly routed to, copied
from, or checked against the relevant LinuxCNC source in the same narrow
@@ -86,9 +92,9 @@ Efficiency rules:
- Reuse source preflight results in persistent build directories through
`check-linuxcnc-inputs-cached.sh`; its signature must include the LinuxCNC
root, manifest content, source file size and nanosecond mtime stats, the check
mode, and the checker script hash. Cache updates must be serialized with a
lock inside the cache directory and must write next signatures through unique
temporary files.
mode, the cached wrapper script hash, and the checker script hash. Cache
updates must be serialized with a lock inside the cache directory and must
write next signatures through unique temporary files.
Root-only source, flag, and link helper scripts must also use this cached
preflight, defaulting to `build/linuxcnc-helper-preflight-cache` when a caller
has not supplied `CNC_SIM_PREFLIGHT_CACHE_DIR`.
@@ -97,15 +103,16 @@ Efficiency rules:
`test-linuxcnc-wasm-cmake-safe-probe.sh` instead of forcing a second cache
walk in the same pass.
- Cache wasm blocker analyzer output in `test-linuxcnc-wasm-blockers.sh`. Its
signature must include the analyzer script, manifest content, LinuxCNC source
size and nanosecond mtime stats, shim lister script, and shim source hashes.
The cache must be locked and may be overridden with
signature must include the blocker wrapper script, analyzer script, manifest
content, LinuxCNC source size and nanosecond mtime stats, shim lister script,
and shim source hashes. The cache must be locked and may be overridden with
`CNC_SIM_WASM_BLOCKERS_CACHE_DIR`.
- Reuse switchkins/remap table check results in the same persistent cache with
`check-linuxcnc-switchkins-remap-table-cached.sh`; its signature must include
the checker and generator scripts, the kinematics manifest, referenced
LinuxCNC source size and nanosecond mtime stats, and tracked generated
table/case outputs.
the cached wrapper script, checker script, generator script, the kinematics
manifest, referenced LinuxCNC source size and nanosecond mtime stats, tracked
generated table/case outputs, and the thin API/web bridge files that pass
switchkins config aliases.
- Reuse wasm probe objects across the wasm source object probe,
`rs274ngc_pre` blocker/link probes, and the runtime link probe through
`build-linuxcnc-wasm-probe-objects.sh`. Its mode-specific object caches must
@@ -283,7 +290,7 @@ Build and source-link guardrails:
Node or browser smoke tests.
- `build-wasm.sh` must run `test-web-wasm-node-smoke.sh` before the browser
smoke so the Node prerequisite, syntax, and minimum-step checks are enforced.
- The default wasm manifest partition must remain explicitly checked for 25
- The default wasm manifest partition must remain explicitly checked for 26
wasm-safe core sources and 9 blocked sources.
- Manifest source listers must reject malformed lines, absolute source paths,
unknown groups, unknown filters, and duplicate source entries.

View File

@@ -75,6 +75,10 @@ read_ini_switchkins_config() {
line = $0
sub(/[[:space:]]*[#;].*$/, "", line)
line = trim(line)
if (line ~ /^\[[^][]+\]$/) {
section = tolower(substr(line, 2, length(line) - 2))
next
}
if (line !~ /=/) {
next
}
@@ -85,17 +89,17 @@ read_ini_switchkins_config() {
sub(/^[^=]*=[[:space:]]*/, "", value)
value = trim(value)
if (key == "machine") {
if (section == "emc" && key == "machine") {
print "machine\t" value
} else if (key == "kinematics") {
} else if (section == "kins" && key == "kinematics") {
print "kinematics\t" value
} else if (key == "halfile") {
} else if (section == "hal" && key == "halfile") {
print "halfile\t" value
} else if (key == "postgui_halfile") {
} else if (section == "hal" && key == "postgui_halfile") {
print "postgui_halfile\t" value
} else if (key == "subroutine_path") {
} else if (section == "rs274ngc" && key == "subroutine_path") {
print "subroutine_path\t" value
} else if (key == "remap") {
} else if (section == "rs274ngc" && key == "remap") {
lower = tolower(value)
for (mcode = 428; mcode <= 430; mcode++) {
if (lower ~ "m" mcode "([^0-9]|$)" &&
@@ -110,24 +114,34 @@ read_ini_switchkins_config() {
' "$file"
}
resolved_config_path=
resolve_config_path() {
local config_dir=$1
local path=$2
if [[ "$path" = /* ]]; then
printf '%s\n' "$path"
resolved_config_path=$path
else
printf '%s\n' "$config_dir/$path"
resolved_config_path=$config_dir/$path
fi
}
resolved_linuxcnc_path=
declare -A relative_linuxcnc_path_cache=()
relative_linuxcnc_path() {
local path=$1
path=$(cd "${path%/*}" && pwd)/${path##*/}
if [[ "$path" != "$linuxcnc_root/"* ]]; then
echo "resolved LinuxCNC source path escapes LinuxCNC root: $path" >&2
if [[ -n "${relative_linuxcnc_path_cache[$path]+x}" ]]; then
resolved_linuxcnc_path=${relative_linuxcnc_path_cache[$path]}
return 0
fi
local absolute_path
absolute_path=$(cd "${path%/*}" && pwd)/${path##*/}
if [[ "$absolute_path" != "$linuxcnc_root/"* ]]; then
echo "resolved LinuxCNC source path escapes LinuxCNC root: $absolute_path" >&2
exit 1
fi
printf '%s\n' "${path#"$linuxcnc_root/"}"
resolved_linuxcnc_path=${absolute_path#"$linuxcnc_root/"}
relative_linuxcnc_path_cache[$path]=$resolved_linuxcnc_path
}
declare -A config_dir_cache=()
@@ -159,6 +173,10 @@ while IFS=: read -r manifest_group manifest_path _manifest_note; do
case "$manifest_group" in
config)
validate_manifest_source_path "$manifest_group" "$manifest_path"
if [[ "$manifest_path" != *.ini && "$manifest_path" != *.hal ]]; then
echo "LinuxCNC config source must be an INI or HAL file in $manifest: $manifest_path" >&2
exit 1
fi
if [[ -n "${manifest_config_sources[$manifest_path]:-}" ]]; then
echo "duplicate LinuxCNC config source in $manifest: $manifest_path" >&2
exit 1
@@ -190,24 +208,28 @@ while IFS=: read -r manifest_group manifest_path _manifest_note; do
esac
done <"$manifest"
resolved_config_dir=
config_dir_for() {
local config=$1
if [[ -z "${config_dir_cache[$config]:-}" ]]; then
config_dir_cache[$config]=$(cd "${config%/*}" && pwd)
fi
printf '%s\n' "${config_dir_cache[$config]}"
resolved_config_dir=${config_dir_cache[$config]}
}
resolved_remap_source=
remap_source_for_ngc() {
local config=$1
local ngc_name=$2
local subroutine_paths=${3:-}
resolved_remap_source=
if [[ "$ngc_name" != *.ngc ]]; then
ngc_name="$ngc_name.ngc"
fi
local config_dir
config_dir=$(config_dir_for "$config")
config_dir_for "$config"
config_dir=$resolved_config_dir
if [[ -z "$subroutine_paths" ]]; then
subroutine_paths="."
fi
@@ -220,9 +242,11 @@ remap_source_for_ngc() {
for path_part in "${path_parts[@]}"; do
[[ -n "$path_part" ]] || continue
local candidate_dir
candidate_dir=$(resolve_config_path "$config_dir" "$path_part")
resolve_config_path "$config_dir" "$path_part"
candidate_dir=$resolved_config_path
if [[ -f "$candidate_dir/$ngc_name" ]]; then
relative_linuxcnc_path "$candidate_dir/$ngc_name"
resolved_remap_source=$resolved_linuxcnc_path
return 0
fi
done
@@ -231,9 +255,11 @@ remap_source_for_ngc() {
return 1
}
resolved_config_source=
config_source_for_halfile() {
local config=$1
local halfile=$2
resolved_config_source=
[[ -n "$halfile" ]] || return 1
[[ "$halfile" == LIB:* ]] && return 1
@@ -241,24 +267,34 @@ config_source_for_halfile() {
[[ -n "$hal_path" ]] || return 1
local config_dir
config_dir=$(config_dir_for "$config")
config_dir_for "$config"
config_dir=$resolved_config_dir
local resolved
resolved=$(resolve_config_path "$config_dir" "$hal_path")
resolve_config_path "$config_dir" "$hal_path"
resolved=$resolved_config_path
if [[ ! -f "$resolved" ]]; then
echo "missing LinuxCNC HAL source referenced by ${config#"$linuxcnc_root/"}: $halfile" >&2
exit 1
fi
relative_linuxcnc_path "$resolved"
resolved_config_source=$resolved_linuxcnc_path
}
resolved_kinstype=
declare -A kinstype_cache=()
kinstype_for_remap_source() {
local source
source=$1
resolved_kinstype=
if [[ -z "$source" ]]; then
printf '%s\n' -1
resolved_kinstype=-1
return 0
fi
awk '
if [[ -n "${kinstype_cache[$source]+x}" ]]; then
resolved_kinstype=${kinstype_cache[$source]}
return 0
fi
resolved_kinstype=$(awk '
/^[[:space:]]*#<kinstype>[[:space:]]*=/ {
value = $0
sub(/^[[:space:]]*#<kinstype>[[:space:]]*=[[:space:]]*/, "", value)
@@ -266,7 +302,8 @@ kinstype_for_remap_source() {
print value
exit
}
' "$linuxcnc_root/$source"
' "$linuxcnc_root/$source")
kinstype_cache[$source]=$resolved_kinstype
}
require_remap_source() {
@@ -324,13 +361,6 @@ resolved_remap_count=0
unique_config_source_count=0
unique_resolved_remap_count=0
escape_generated_string() {
local value=$1
value=${value//\\/\\\\}
value=${value//\"/\\\"}
printf '%s\n' "$value"
}
add_alias() {
local alias=$1
local m428=$2
@@ -338,7 +368,8 @@ add_alias() {
local m430=$4
alias=${alias,,}
alias=${alias//[[:space:]]/}
alias=$(escape_generated_string "$alias")
alias=${alias//\\/\\\\}
alias=${alias//\"/\\\"}
[[ -n "$alias" ]] || return 0
local types="$m428,$m429,$m430"
@@ -376,18 +407,21 @@ add_case() {
seen_cases[$key]=1
local cpp_field=$field
local cpp_value=$value
cpp_field=$(escape_generated_string "$cpp_field")
cpp_value=$(escape_generated_string "$cpp_value")
cpp_field=${cpp_field//\\/\\\\}
cpp_field=${cpp_field//\"/\\\"}
cpp_value=${cpp_value//\\/\\\\}
cpp_value=${cpp_value//\"/\\\"}
case_entries+=(" {\"$cpp_field\", \"$cpp_value\", $m428, $m429, $m430},")
json_case_entries+=("{\"field\":\"$cpp_field\",\"value\":\"$cpp_value\",\"m428\":$m428,\"m429\":$m429,\"m430\":$m430}")
}
trimmed_machine_label=
trim_machine_label() {
local machine=$1
machine=${machine%%(*}
machine="${machine#"${machine%%[![:space:]]*}"}"
machine="${machine%"${machine##*[![:space:]]}"}"
printf '%s\n' "$machine"
trimmed_machine_label=$machine
}
add_kinematics_variants() {
@@ -444,9 +478,8 @@ add_machine_aliases() {
local m430=$4
[[ -n "$machine" ]] || return 0
add_alias "$machine" "$m428" "$m429" "$m430"
local trimmed_machine
trimmed_machine=$(trim_machine_label "$machine")
add_alias "$trimmed_machine" "$m428" "$m429" "$m430"
trim_machine_label "$machine"
add_alias "$trimmed_machine_label" "$m428" "$m429" "$m430"
}
add_kinematics_aliases() {
@@ -472,9 +505,8 @@ add_switchkins_cases() {
if [[ -n "$machine" ]]; then
add_case "switchkins" "$machine" "$m428" "$m429" "$m430"
local trimmed_machine
trimmed_machine=$(trim_machine_label "$machine")
add_case "switchkins" "$trimmed_machine" "$m428" "$m429" "$m430"
trim_machine_label "$machine"
add_case "switchkins" "$trimmed_machine_label" "$m428" "$m429" "$m430"
fi
if [[ -n "$kinematics" ]]; then
@@ -509,6 +541,19 @@ add_halfile_cases() {
add_halfile_case_fields "HALFILE" "$halfile" "$m428" "$m429" "$m430"
}
add_halfile_source_cases() {
local source=$1
local m428=$2
local m429=$3
local m430=$4
[[ -n "$source" ]] || return 0
add_case "halFile" "$source" "$m428" "$m429" "$m430"
add_case "halfile" "$source" "$m428" "$m429" "$m430"
add_case "hal_file" "$source" "$m428" "$m429" "$m430"
add_case "HALFILE" "$source" "$m428" "$m429" "$m430"
}
add_postgui_halfile_cases() {
local halfile=$1
local m428=$2
@@ -518,11 +563,39 @@ add_postgui_halfile_cases() {
[[ "$halfile" == LIB:* ]] && return 0
add_halfile_case_fields "postguiHalFile" "$halfile" "$m428" "$m429" "$m430"
add_halfile_case_fields "postguihalfile" "$halfile" "$m428" "$m429" "$m430"
add_halfile_case_fields "postgui_halfile" "$halfile" "$m428" "$m429" "$m430"
add_halfile_case_fields "postgui_hal_file" "$halfile" "$m428" "$m429" "$m430"
add_halfile_case_fields "POSTGUI_HALFILE" "$halfile" "$m428" "$m429" "$m430"
}
add_postgui_halfile_source_cases() {
local source=$1
local m428=$2
local m429=$3
local m430=$4
[[ -n "$source" ]] || return 0
add_case "postguiHalFile" "$source" "$m428" "$m429" "$m430"
add_case "postguihalfile" "$source" "$m428" "$m429" "$m430"
add_case "postgui_halfile" "$source" "$m428" "$m429" "$m430"
add_case "postgui_hal_file" "$source" "$m428" "$m429" "$m430"
add_case "POSTGUI_HALFILE" "$source" "$m428" "$m429" "$m430"
}
add_subroutine_path_cases() {
local subroutine_path=$1
local m428=$2
local m429=$3
local m430=$4
[[ -n "$subroutine_path" ]] || return 0
add_case "subroutinePath" "$subroutine_path" "$m428" "$m429" "$m430"
add_case "subroutinepath" "$subroutine_path" "$m428" "$m429" "$m430"
add_case "subroutine_path" "$subroutine_path" "$m428" "$m429" "$m430"
add_case "SUBROUTINE_PATH" "$subroutine_path" "$m428" "$m429" "$m430"
}
while IFS=: read -r group path _note; do
[[ "$group" == "config" && "$path" == *.ini ]] || continue
@@ -531,9 +604,6 @@ while IFS=: read -r group path _note; do
echo "missing LinuxCNC config source: $path" >&2
exit 1
}
if ! grep -Eiq 'REMAP[[:space:]]*=[[:space:]]*M(428|429|430)([^0-9]|$)' "$config"; then
continue
fi
machine=
kinematics=
@@ -571,6 +641,9 @@ while IFS=: read -r group path _note; do
;;
esac
done < <(read_ini_switchkins_config "$config")
if [[ -z "$remap_ngc_428" && -z "$remap_ngc_429" && -z "$remap_ngc_430" ]]; then
continue
fi
if [[ -z "$subroutine_paths" ]]; then
subroutine_paths="."
fi
@@ -579,27 +652,36 @@ while IFS=: read -r group path _note; do
remap_source_429=
remap_source_430=
if [[ -n "$remap_ngc_428" ]]; then
remap_source_428=$(remap_source_for_ngc "$config" "$remap_ngc_428" "$subroutine_paths" || true)
if remap_source_for_ngc "$config" "$remap_ngc_428" "$subroutine_paths"; then
remap_source_428=$resolved_remap_source
fi
require_remap_source "$path" 428 "$remap_ngc_428" "$remap_source_428"
record_remap_source "$path" 428 "$remap_source_428"
resolved_remap_count=$((resolved_remap_count + 1))
fi
if [[ -n "$remap_ngc_429" ]]; then
remap_source_429=$(remap_source_for_ngc "$config" "$remap_ngc_429" "$subroutine_paths" || true)
if remap_source_for_ngc "$config" "$remap_ngc_429" "$subroutine_paths"; then
remap_source_429=$resolved_remap_source
fi
require_remap_source "$path" 429 "$remap_ngc_429" "$remap_source_429"
record_remap_source "$path" 429 "$remap_source_429"
resolved_remap_count=$((resolved_remap_count + 1))
fi
if [[ -n "$remap_ngc_430" ]]; then
remap_source_430=$(remap_source_for_ngc "$config" "$remap_ngc_430" "$subroutine_paths" || true)
if remap_source_for_ngc "$config" "$remap_ngc_430" "$subroutine_paths"; then
remap_source_430=$resolved_remap_source
fi
require_remap_source "$path" 430 "$remap_ngc_430" "$remap_source_430"
record_remap_source "$path" 430 "$remap_source_430"
resolved_remap_count=$((resolved_remap_count + 1))
fi
m428=$(kinstype_for_remap_source "$remap_source_428")
m429=$(kinstype_for_remap_source "$remap_source_429")
m430=$(kinstype_for_remap_source "$remap_source_430")
kinstype_for_remap_source "$remap_source_428"
m428=$resolved_kinstype
kinstype_for_remap_source "$remap_source_429"
m429=$resolved_kinstype
kinstype_for_remap_source "$remap_source_430"
m430=$resolved_kinstype
[[ -z "$remap_ngc_428" ]] || require_kinstype "$path" 428 "$remap_source_428" "$m428"
[[ -z "$remap_ngc_429" ]] || require_kinstype "$path" 429 "$remap_source_429" "$m429"
[[ -z "$remap_ngc_430" ]] || require_kinstype "$path" 430 "$remap_source_430" "$m430"
@@ -615,10 +697,13 @@ while IFS=: read -r group path _note; do
add_case "config" "$path" "$m428" "$m429" "$m430"
add_case "configPath" "$path" "$m428" "$m429" "$m430"
add_case "configpath" "$path" "$m428" "$m429" "$m430"
add_case "config_path" "$path" "$m428" "$m429" "$m430"
add_case "ini" "$path" "$m428" "$m429" "$m430"
add_case "iniFile" "$path" "$m428" "$m429" "$m430"
add_case "inifile" "$path" "$m428" "$m429" "$m430"
add_case "iniFileName" "$path" "$m428" "$m429" "$m430"
add_case "inifilename" "$path" "$m428" "$m429" "$m430"
add_case "ini_file" "$path" "$m428" "$m429" "$m430"
add_case "ini_file_name" "$path" "$m428" "$m429" "$m430"
add_case "INI_FILE_NAME" "$path" "$m428" "$m429" "$m430"
@@ -633,15 +718,21 @@ while IFS=: read -r group path _note; do
add_machine_aliases "$machine" "$m428" "$m429" "$m430"
add_kinematics_aliases "$kinematics" "$m428" "$m429" "$m430"
while IFS= read -r halfile; do
if hal_source=$(config_source_for_halfile "$config" "$halfile"); then
if config_source_for_halfile "$config" "$halfile"; then
hal_source=$resolved_config_source
record_config_source "$path" "$hal_source" "HALFILE"
add_alias "$hal_source" "$m428" "$m429" "$m430"
add_halfile_source_cases "$hal_source" "$m428" "$m429" "$m430"
fi
add_halfile_cases "$halfile" "$m428" "$m429" "$m430"
add_halfile_aliases "$halfile" "$m428" "$m429" "$m430"
done <<<"$halfiles"
while IFS= read -r halfile; do
if hal_source=$(config_source_for_halfile "$config" "$halfile"); then
if config_source_for_halfile "$config" "$halfile"; then
hal_source=$resolved_config_source
record_config_source "$path" "$hal_source" "POSTGUI_HALFILE"
add_alias "$hal_source" "$m428" "$m429" "$m430"
add_postgui_halfile_source_cases "$hal_source" "$m428" "$m429" "$m430"
fi
add_postgui_halfile_cases "$halfile" "$m428" "$m429" "$m430"
add_halfile_aliases "$halfile" "$m428" "$m429" "$m430"
@@ -650,13 +741,17 @@ while IFS=: read -r group path _note; do
for remap_source in "$remap_source_428" "$remap_source_429" "$remap_source_430"; do
if [[ -n "$remap_source" ]]; then
remap_dir=${remap_source%/*}
add_alias "$remap_source" "$m428" "$m429" "$m430"
add_alias "$remap_dir" "$m428" "$m429" "$m430"
add_alias "${remap_dir%/*}" "$m428" "$m429" "$m430"
add_alias "${remap_dir%/remap_subs}" "$m428" "$m429" "$m430"
remap_parent=${remap_dir%/remap_subs}
add_alias "${remap_parent##*/}" "$m428" "$m429" "$m430"
add_case "remap" "$remap_source" "$m428" "$m429" "$m430"
add_case "remap" "$remap_dir" "$m428" "$m429" "$m430"
add_case "remap" "$remap_parent" "$m428" "$m429" "$m430"
add_case "remap" "${remap_parent##*/}" "$m428" "$m429" "$m430"
add_subroutine_path_cases "$remap_dir" "$m428" "$m429" "$m430"
fi
done
done <"$manifest"
@@ -739,7 +834,7 @@ write_config_cases() {
cat <<'EOF'
// Generated by ./generate-linuxcnc-switchkins-remap-table.sh --config-cases.
// Source: LinuxCNC INI config path, MACHINE, KINEMATICS, non-LIB HALFILE/POSTGUI_HALFILE,
// and adjacent remap_subs entries for M428/M429/M430 #<kinstype> assignments.
// SUBROUTINE_PATH-resolved remap_subs entries, and adjacent M428/M429/M430 #<kinstype> assignments.
EOF
printf '%s\n' "${case_entries[@]}"

View File

@@ -25,6 +25,7 @@ core:src/emc/rs274ngc/interp_remap.cc:Python remap support satisfied by wasm Pyt
core:src/emc/rs274ngc/rs274ngc_pre.cc:Interp implementation covered by rs274ngc_pre link probe
core:src/emc/tooldata/tooldata_common.cc:shared tool table parser/format logic linked with wasm-safe mmap backend
core:src/emc/ini/inifile.cc:INI reader needed by rs274ngc_pre source-link probe
core:src/emc/nml_intf/emcops.cc:EMC status constructors needed by source-backed browser status singleton
blocked:src/emc/tooldata/tooldata_mmap.cc:native mmap implementation
blocked:src/emc/rs274ngc/canonmodule.cc:Python module binding, tracked for full rs274ngc source coverage
blocked:src/emc/rs274ngc/gcodemodule.cc:Python gcode module binding, tracked for full rs274ngc source coverage
@@ -52,3 +53,5 @@ header:src/emc/rs274ngc/rs274ngc_return.hh:LinuxCNC rs274 return code header
header:src/emc/rs274ngc/units.h:LinuxCNC rs274 units helper header
metadata:src/emc/rs274ngc/Submakefile:LinuxCNC rs274 make build metadata tracked for full directory coverage
metadata:src/emc/rs274ngc/meson.build:LinuxCNC rs274 meson build metadata tracked for full directory coverage
metadata:src/libnml/nml/stat_msg.cc:source basis for wasm-safe RCS_STAT_MSG constructor shim
metadata:src/libnml/nml/nmlmsg.cc:source basis for wasm-safe NMLmsg constructor shim

View File

@@ -72,6 +72,7 @@ grep -F 'CNC_SIM_ALL_NATIVE_GUARDRAILS_ONLY must be 0 or 1: $guardrails_only' te
grep -F 'all native guardrail checks passed' test-all-native.sh >/dev/null
test -x check-linuxcnc-inputs-cached.sh
grep -F 'CNC_SIM_PREFLIGHT_CACHE_DIR' check-linuxcnc-inputs-cached.sh >/dev/null
grep -F 'sha256sum check-linuxcnc-inputs-cached.sh' check-linuxcnc-inputs-cached.sh >/dev/null
grep -F 'sha256sum check-linuxcnc-inputs.sh' check-linuxcnc-inputs-cached.sh >/dev/null
grep -F 'exec 8>"$cache_dir/check-linuxcnc-inputs.lock"' check-linuxcnc-inputs-cached.sh >/dev/null
grep -F 'flock 8' check-linuxcnc-inputs-cached.sh >/dev/null
@@ -79,12 +80,19 @@ grep -F 'stat -c '\''SOURCE=%n:%s:%y'\''' check-linuxcnc-inputs-cached.sh >/dev/
grep -F 'next_signature=$(mktemp "$cache_file.next.XXXXXX")' check-linuxcnc-inputs-cached.sh >/dev/null
test -x check-linuxcnc-switchkins-remap-table-cached.sh
grep -F 'check-linuxcnc-switchkins-remap-table.lock' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'sha256sum check-linuxcnc-switchkins-remap-table-cached.sh' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'sha256sum check-linuxcnc-switchkins-remap-table.sh' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'sha256sum generate-linuxcnc-switchkins-remap-table.sh' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'stat -c '\''SOURCE=%n:%s:%y'\''' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'core/src/cnc_sim_api.cpp' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'core/src/linuxcnc_switchkins_remap_table.inc' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'core/tests/linuxcnc_switchkins_remap_config_cases.inc' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'web/public/linuxcnc_switchkins_remap_config_cases.json' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'web/src/index.ts' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'web/src/wasm-core.js' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
grep -F 'the cached wrapper script, checker script, generator script' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'generated table/case outputs, and the thin API/web bridge files that pass' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'switchkins config aliases.' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'check-linuxcnc-switchkins-remap-table-cached.sh --cache-dir "$preflight_cache_dir" linuxcnc-kinematics-source-files.txt' test-native.sh >/dev/null
grep -F 'check-linuxcnc-switchkins-remap-table-cached.sh --cache-dir "$preflight_cache_dir" linuxcnc-kinematics-source-files.txt' test-linuxcnc-source-link.sh >/dev/null
grep -F 'CNC_SIM_PREFLIGHT_CACHE_DIR="$preflight_cache_dir"' build-wasm.sh >/dev/null
@@ -318,6 +326,9 @@ grep -F 'rs274_native_makefile="$build_dir/rs274-native.mk"' test-linuxcnc-rs274
grep -F 'printf '\''\n-include $(DEP_FILES)\n'\''' test-linuxcnc-rs274-native.sh >/dev/null
grep -F 'make --output-sync=target -j"$build_jobs" -f "$rs274_native_makefile"' test-linuxcnc-rs274-native.sh >/dev/null
for hot_signature_script in \
build-linuxcnc-wasm-link-probe.sh \
build-linuxcnc-wasm-probe-objects.sh \
build-linuxcnc-wasm-standalone-probe.sh \
build-linuxcnc-native-bridge-objects.sh \
test-linuxcnc-api-native.sh \
test-linuxcnc-bridge-native.sh \
@@ -491,6 +502,11 @@ grep -F 'Reuse standalone wasm probe objects and binaries for the tooldata link,
grep -F 'Reuse wasm final link probes for `rs274ngc_pre` and runtime link checks' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'cached `nm --defined-only` symbol export signatures' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'Cache wasm blocker analyzer output' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'signature must include the blocker wrapper script, analyzer script' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'sha256sum test-linuxcnc-wasm-blockers.sh' test-linuxcnc-wasm-blockers.sh >/dev/null
grep -F 'browser app/wasm code must not add filesystem persistence outside OPFS' test-native.sh >/dev/null
grep -F 'browser app/wasm code must not add filesystem persistence outside OPFS' test-linuxcnc-wasm-cmake-safe-probe.sh >/dev/null
grep -F 'reject browser app/wasm storage APIs that could bypass it' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'Persistent native, source-link, source-syntax, and wasm-safe CMake probe' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'copies and byte-compares `cnc_sim.js` and `cnc_sim.wasm` under' docs/linuxcnc-source-policy.md >/dev/null
grep -F '`CNC_SIM_BUILD_JOBS` must be a positive integer and defaults to `8`.' docs/linuxcnc-source-policy.md >/dev/null
@@ -510,7 +526,7 @@ grep -F 'must copy `build/wasm/cnc_sim.js` and' docs/linuxcnc-source-policy.md >
grep -F 'must compare copied artifacts with `cmp -s` before running' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'must run `test-web-wasm-node-smoke.sh` before the browser' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'test-web-wasm-node-smoke.sh' docs/linuxcnc-porting.md >/dev/null
grep -F 'explicitly checked for 25' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'explicitly checked for 26' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'wasm-safe core sources and 9 blocked sources' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'must reject malformed lines, absolute source paths,' docs/linuxcnc-source-policy.md >/dev/null
grep -F 'must include the built LinuxCNC `lib` path and rpath' docs/linuxcnc-source-policy.md >/dev/null

View File

@@ -166,6 +166,12 @@ cp "$base_var_file" "$var_file"
LINUXCNC_ROOT="$linuxcnc_root" "$build_dir/linuxcnc_gees_table_smoke"
# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_straight(),
# convert_arc(), and convert_comment(); comment queuing goes through
# src/emc/rs274ngc/interp_queue.cc enqueue_COMMENT().
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_basic_motion.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_basic_motion.json"
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/basic_mill.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_basic_mill.json"
@@ -499,6 +505,9 @@ CNC_SIM_RS274_VAR="$var_file" \
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_cutter_comp.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_cutter_comp.json"
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_comments.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_comments.json"
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_probe_no_error.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_probe_no_error.json"
@@ -838,28 +847,36 @@ from pathlib import Path
OUTPUT_DIR = Path(os.environ["CNC_SIM_RS274_SOURCE_OUTPUT_DIR"])
events = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_basic_mill.json").read_text())
types = {event["type"] for event in events}
required = {
def load(name):
return json.loads((OUTPUT_DIR / name).read_text())
def check_motion(name, required):
events = load(name)
types = {event["type"] for event in events}
missing = sorted(required - types)
if missing:
raise SystemExit(f"{name}: missing source-linked events: {', '.join(missing)}")
final_motion = [event for event in events if event["type"] in {"rapid", "linear-feed", "arc-feed"}][-1]
if final_motion["end"]["x"] != 0 or final_motion["end"]["y"] != 0:
raise SystemExit(f"{name}: unexpected source-linked final XY position")
return events
required_motion = {
"set-units",
"set-plane",
"set-spindle",
"tool-change",
"rapid",
"set-feed",
"linear-feed",
"arc-feed",
"dwell",
"program-end",
}
missing = sorted(required - types)
if missing:
raise SystemExit("missing source-linked events: " + ", ".join(missing))
check_motion("cnc_sim_linuxcnc_source_basic_motion.json", required_motion)
check_motion("cnc_sim_linuxcnc_source_basic_mill.json", required_motion | {"tool-change"})
final_motion = [event for event in events if event["type"] in {"rapid", "linear-feed", "arc-feed"}][-1]
if final_motion["end"]["x"] != 0 or final_motion["end"]["y"] != 0:
raise SystemExit("unexpected source-linked final XY position")
block_delete_off = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_block_delete_off.json").read_text())
block_delete_off = load("cnc_sim_linuxcnc_source_block_delete_off.json")
if not any(
event["type"] == "linear-feed" and event["line"] == 2 and event["end"]["x"] == 5
for event in block_delete_off
@@ -1554,6 +1571,10 @@ actual_cutter_comp = [
if actual_cutter_comp != expected_cutter_comp:
raise SystemExit(f"unexpected source-linked cutter compensation path: {actual_cutter_comp!r}")
comments = load("cnc_sim_linuxcnc_source_comments.json")
if not any(event["type"] == "comment" and event["line"] == 2 for event in comments):
raise SystemExit("missing source-linked LinuxCNC comment line event")
probe = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_probe_no_error.json").read_text())
probe_events = [
(event["line"], event["reserved"], event["start"]["z"], event["end"]["z"])
@@ -2433,6 +2454,7 @@ if not any(
PY
echo "linuxcnc rs274 source link smoke passed (${#objects[@]} local objects)"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_basic_motion.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_basic_mill.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_rtcp_controls.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_spindle_direction.json"
@@ -2460,6 +2482,7 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_source_arc_distance_modes.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_predefined_positions.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_machine_coordinates.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_cutter_comp.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_comments.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_probe_no_error.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_oword_subprogram.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_source_named_oword_subprogram.json"

View File

@@ -146,6 +146,8 @@ write_shim_source_hashes() {
done < <(./list-linuxcnc-wasm-safe-shims.sh)
}
{
printf 'BLOCKER_SCRIPT='
sha256sum test-linuxcnc-wasm-blockers.sh
printf 'ANALYZER='
sha256sum analyze-linuxcnc-wasm-blockers.sh
printf 'SHIM_LISTER='
@@ -167,7 +169,7 @@ else
fi
grep -F "[manifest]" <<<"$output" >/dev/null
grep -F "core=25" <<<"$(sed -n '/^\[manifest\]/,/^$/p' <<<"$output")" >/dev/null
grep -F "core=26" <<<"$(sed -n '/^\[manifest\]/,/^$/p' <<<"$output")" >/dev/null
grep -F "blocked=9" <<<"$(sed -n '/^\[manifest\]/,/^$/p' <<<"$output")" >/dev/null
grep -F "[python]" <<<"$output" >/dev/null
grep -F "src/emc/rs274ngc/canonmodule.cc" <<<"$(sed -n '/^\[python\]/,/^$/p' <<<"$output")" >/dev/null

View File

@@ -217,6 +217,7 @@ grep -F 'CNC_SIM_WASM_BLOCKERS_CACHE_DIR must not contain whitespace: $cache_dir
grep -F 'CNC_SIM_WASM_BLOCKERS_CACHE_DIR must not be the filesystem root' test-linuxcnc-wasm-blockers.sh >/dev/null
grep -F 'exec 8>"$cache_dir/wasm-blockers.lock"' test-linuxcnc-wasm-blockers.sh >/dev/null
grep -F 'stat -c '\''SOURCE=%n:%s:%y'\''' test-linuxcnc-wasm-blockers.sh >/dev/null
grep -F 'sha256sum test-linuxcnc-wasm-blockers.sh' test-linuxcnc-wasm-blockers.sh >/dev/null
grep -F 'sha256sum analyze-linuxcnc-wasm-blockers.sh' test-linuxcnc-wasm-blockers.sh >/dev/null
if CNC_SIM_WASM_BLOCKERS_CACHE_DIR= ./test-linuxcnc-wasm-blockers.sh "$manifest" >"$wasm_blockers_cache_log" 2>&1; then
echo "wasm blocker cache accepted an empty cache directory" >&2
@@ -258,6 +259,7 @@ grep -F 'CNC_SIM_WASM_PROBE_OBJECT_CACHE_DIR must not contain whitespace: $cache
grep -F 'CNC_SIM_WASM_PROBE_OBJECT_CACHE_DIR must not be the filesystem root' build-linuxcnc-wasm-probe-objects.sh >/dev/null
grep -F 'source-objects|rs274ngc-pre|runtime' build-linuxcnc-wasm-probe-objects.sh >/dev/null
grep -F 'wasm probe object source list contains an empty path' build-linuxcnc-wasm-probe-objects.sh >/dev/null
grep -F "printf 'BUILD_RULE_VERSION=1\n'" build-linuxcnc-wasm-probe-objects.sh >/dev/null
grep -F 'list-cmake-set-sources.sh cnc_sim_core_sources core/' list-linuxcnc-wasm-safe-project-sources.sh >/dev/null
grep -F 'list-cmake-set-sources.sh cnc_sim_linuxcnc_rs274_backend_sources core/' list-linuxcnc-wasm-safe-project-sources.sh >/dev/null
grep -F 'build-linuxcnc-wasm-probe-objects.sh --mode source-objects "$manifest"' test-linuxcnc-wasm-source-objects.sh >/dev/null
@@ -294,6 +296,7 @@ grep -F 'CNC_SIM_BUILD_JOBS must be a positive integer: $build_jobs' build-linux
grep -F 'tooldata-link|tooldata-common-link|interp-base-link|python-plugin-link|rs274ngc-pre-object' build-linuxcnc-wasm-standalone-probe.sh >/dev/null
grep -F 'check-linuxcnc-inputs-cached.sh --cache-dir "$preflight_cache_dir" --root-only' build-linuxcnc-wasm-standalone-probe.sh >/dev/null
grep -F 'exec 8>"$mode_dir/probe.lock"' build-linuxcnc-wasm-standalone-probe.sh >/dev/null
grep -F "printf 'BUILD_RULE_VERSION=1\n'" build-linuxcnc-wasm-standalone-probe.sh >/dev/null
grep -F 'DEP_FILES += %s.d' build-linuxcnc-wasm-standalone-probe.sh >/dev/null
grep -F 'make --output-sync=target -j"$build_jobs" -f "$makefile" >/dev/null' build-linuxcnc-wasm-standalone-probe.sh >/dev/null
grep -F 'build-linuxcnc-wasm-standalone-probe.sh --mode tooldata-link' test-linuxcnc-wasm-tooldata-link.sh >/dev/null
@@ -330,6 +333,7 @@ grep -F 'CNC_SIM_WASM_LINK_PROBE_CACHE_DIR must not be the filesystem root' buil
grep -F 'rs274ngc-pre|runtime' build-linuxcnc-wasm-link-probe.sh >/dev/null
grep -F 'build-linuxcnc-wasm-probe-objects.sh --mode "$object_mode" "$manifest"' build-linuxcnc-wasm-link-probe.sh >/dev/null
grep -F 'exec 8>"$mode_dir/link.lock"' build-linuxcnc-wasm-link-probe.sh >/dev/null
grep -F "printf 'BUILD_RULE_VERSION=1\n'" build-linuxcnc-wasm-link-probe.sh >/dev/null
grep -F 'make --output-sync=target -j"$build_jobs" -f "$makefile" >/dev/null' build-linuxcnc-wasm-link-probe.sh >/dev/null
grep -F 'build-linuxcnc-wasm-link-probe.sh --mode rs274ngc-pre "$manifest"' test-linuxcnc-wasm-rs274ngc-pre-link.sh >/dev/null
grep -F 'build-linuxcnc-wasm-link-probe.sh --mode runtime "$manifest"' test-linuxcnc-wasm-runtime-link.sh >/dev/null
@@ -749,6 +753,10 @@ grep -F -- './test-web-wasm-node-smoke.sh' build-wasm.sh >/dev/null
grep -F -- './test-web-wasm-browser-smoke.sh' build-wasm.sh >/dev/null
grep -F 'const opfsOptions = options.opfs ?? (isOpfsAvailable() ? {} : false)' web/src/wasm-core.js >/dev/null
grep -F 'OPFS cannot be disabled in browser contexts with OPFS support' web/src/wasm-core.js >/dev/null
if grep -R -n -E 'localStorage|sessionStorage|indexedDB|showOpenFilePicker|showSaveFilePicker|webkitRequestFileSystem|FileReader' web/src; then
echo "browser app/wasm code must not add filesystem persistence outside OPFS" >&2
exit 1
fi
grep -F 'async function opfsEntryExists(workspacePath, relativePath)' web/src/wasm-core.js >/dev/null
grep -F 'async function statOpfsEntry(workspacePath, relativePath)' web/src/wasm-core.js >/dev/null
grep -F 'async function readOpfsDirectoryTree(workspacePath, relativePath, relativeRoot = "")' web/src/wasm-core.js >/dev/null
@@ -845,7 +853,7 @@ if grep -F 'grep -c . <<<"$manifest_core_output" || true' build-wasm.sh >/dev/nu
echo "build-wasm still counts manifest output through grep -c with || true" >&2
exit 1
fi
grep -F -- 'if [[ "$manifest" == "$default_manifest" ]] && [[ "$manifest_core_count" -ne 25 || "$manifest_blocked_count" -ne 9 ]]; then' build-wasm.sh >/dev/null
grep -F -- 'if [[ "$manifest" == "$default_manifest" ]] && [[ "$manifest_core_count" -ne 26 || "$manifest_blocked_count" -ne 9 ]]; then' build-wasm.sh >/dev/null
grep -F 'LINUXCNC_ROOT="$linuxcnc_root" ./check-linuxcnc-inputs-cached.sh --cache-dir "$preflight_cache_dir" "$manifest"' test-linuxcnc-wasm-cmake-safe-probe.sh >/dev/null
./list-linuxcnc-wasm-safe-shims.sh >/dev/null
./list-linuxcnc-wasm-safe-project-sources.sh >/dev/null
@@ -1312,7 +1320,7 @@ required_shim_sources="$build_dir/wasm_safe_shim_sources.txt"
required_project_sources="$build_dir/wasm_safe_project_sources.txt"
./list-linuxcnc-wasm-safe-project-sources.sh > "$required_project_sources"
if [[ "$manifest" == "$default_manifest" ]] && [[ "$manifest_core_count" -ne 25 || "$manifest_blocked_count" -ne 9 ]]; then
if [[ "$manifest" == "$default_manifest" ]] && [[ "$manifest_core_count" -ne 26 || "$manifest_blocked_count" -ne 9 ]]; then
echo "unexpected wasm manifest partition: core=$manifest_core_count blocked=$manifest_blocked_count" >&2
exit 1
fi
@@ -1386,7 +1394,12 @@ grep -F 'NO_CMAKE_FIND_ROOT_PATH' core/CMakeLists.txt >/dev/null
grep -F 'list(APPEND cnc_sim_wasm_safe_preinclude_options "SHELL:-idirafter ${CNC_SIM_FMT_INCLUDE_DIR}")' core/CMakeLists.txt >/dev/null
grep -F 'FMT_HEADER_ONLY=1' core/CMakeLists.txt >/dev/null
grep -F '${CNC_SIM_FMT_INCLUDE_DIR}' core/CMakeLists.txt >/dev/null
grep -F 'target_compile_options(linuxcnc_rs274_wasm_safe_probe_objects PRIVATE ${cnc_sim_wasm_safe_preinclude_options})' core/CMakeLists.txt >/dev/null
grep -F 'target_compile_options(linuxcnc_rs274_wasm_safe_probe_objects PRIVATE' core/CMakeLists.txt >/dev/null
grep -F '${cnc_sim_wasm_safe_preinclude_options}' core/CMakeLists.txt >/dev/null
grep -F 'set(cnc_sim_wasm_safe_section_options -ffunction-sections -fdata-sections)' core/CMakeLists.txt >/dev/null
grep -F 'set(cnc_sim_wasm_safe_link_options "-Wl,--gc-sections")' core/CMakeLists.txt >/dev/null
grep -F 'target_link_options(linuxcnc_rs274_wasm_safe_probe PRIVATE ${cnc_sim_wasm_safe_link_options})' core/CMakeLists.txt >/dev/null
grep -F 'target_link_options(cnc_sim_wasm_runtime_probe PRIVATE ${cnc_sim_wasm_safe_link_options})' core/CMakeLists.txt >/dev/null
grep -F 'target_compile_options(linuxcnc_rs274_wasm_safe_probe PRIVATE ${cnc_sim_wasm_safe_preinclude_options})' core/CMakeLists.txt >/dev/null
grep -F 'target_compile_options(cnc_sim_objects PRIVATE ${cnc_sim_wasm_safe_preinclude_options})' core/CMakeLists.txt >/dev/null
grep -F 'target_compile_options(cnc_sim_wasm_runtime_probe PRIVATE ${cnc_sim_wasm_safe_preinclude_options})' core/CMakeLists.txt >/dev/null
@@ -1398,6 +1411,9 @@ grep -F 'inline char *basename(const char *path)' core/wasm_shims/libgen.h >/dev
grep -F 'return basename(const_cast<char *>(path));' core/wasm_shims/libgen.h >/dev/null
grep -F 'extern "C" int wordexp(const char *words, wordexp_t *pwordexp, int)' core/wasm_shims/linuxcnc_runtime_shim.cc >/dev/null
grep -F 'extern "C" void wordfree(wordexp_t *pwordexp)' core/wasm_shims/linuxcnc_runtime_shim.cc >/dev/null
grep -F 'EMC_STAT *emcStatus = new EMC_STAT;' core/wasm_shims/emc_status_shim.cc >/dev/null
grep -F 'wasm_shims/nml_status_shim.cc' core/CMakeLists.txt >/dev/null
grep -F 'wasm_shims/rcs_print_shim.cc' core/CMakeLists.txt >/dev/null
grep -F '$<TARGET_OBJECTS:linuxcnc_rs274_wasm_safe_probe_objects>' core/CMakeLists.txt >/dev/null
grep -F '$<TARGET_OBJECTS:cnc_sim_objects>' core/CMakeLists.txt >/dev/null
grep -F 'CNC_SIM_ENABLE_LINUXCNC_RS274_BACKEND' core/CMakeLists.txt >/dev/null

View File

@@ -27,6 +27,8 @@ grep -F "parse_linuxcnc_rs274_backend" "$symbol_file" >/dev/null
grep -F "parse_gcode_with_backend" "$symbol_file" >/dev/null
grep -F "Interp::read(char const*)" "$symbol_file" >/dev/null
grep -F "Interp::init()" "$symbol_file" >/dev/null
grep -F "EMC_STAT::EMC_STAT()" "$symbol_file" >/dev/null
grep -E '(^| )emcStatus$' "$symbol_file" >/dev/null
grep -E '(^| )wordexp($| )' "$symbol_file" >/dev/null
grep -E '(^| )wordfree($| )' "$symbol_file" >/dev/null

View File

@@ -38,14 +38,40 @@ preflight_cache_dir="$build_dir/preflight-cache"
grep -F '#include "linuxcnc_switchkins_remap_table.inc"' core/src/cnc_sim_api.cpp >/dev/null
grep -F 'switchkins: options.switchkins' web/src/wasm-core.js >/dev/null
grep -F 'remap: options.remap' web/src/wasm-core.js >/dev/null
grep -F 'machine: options.machine' web/src/wasm-core.js >/dev/null
grep -F 'config: options.config' web/src/wasm-core.js >/dev/null
grep -F 'configPath: options.configPath' web/src/wasm-core.js >/dev/null
grep -F 'configpath: options.configpath' web/src/wasm-core.js >/dev/null
grep -F 'config_path: options.config_path' web/src/wasm-core.js >/dev/null
grep -F 'ini: options.ini' web/src/wasm-core.js >/dev/null
grep -F 'iniFile: options.iniFile' web/src/wasm-core.js >/dev/null
grep -F 'inifile: options.inifile' web/src/wasm-core.js >/dev/null
grep -F 'iniFileName: options.iniFileName' web/src/wasm-core.js >/dev/null
grep -F 'inifilename: options.inifilename' web/src/wasm-core.js >/dev/null
grep -F 'ini_file: options.ini_file' web/src/wasm-core.js >/dev/null
grep -F 'ini_file_name: options.ini_file_name' web/src/wasm-core.js >/dev/null
grep -F 'INI_FILE_NAME: options.INI_FILE_NAME' web/src/wasm-core.js >/dev/null
grep -F 'halFile: options.halFile' web/src/wasm-core.js >/dev/null
grep -F 'halfile: options.halfile' web/src/wasm-core.js >/dev/null
grep -F 'hal_file: options.hal_file' web/src/wasm-core.js >/dev/null
grep -F 'HALFILE: options.HALFILE' web/src/wasm-core.js >/dev/null
grep -F 'postguiHalFile: options.postguiHalFile' web/src/wasm-core.js >/dev/null
grep -F 'postguihalfile: options.postguihalfile' web/src/wasm-core.js >/dev/null
grep -F 'postgui_halfile: options.postgui_halfile' web/src/wasm-core.js >/dev/null
grep -F 'postgui_hal_file: options.postgui_hal_file' web/src/wasm-core.js >/dev/null
grep -F 'POSTGUI_HALFILE: options.POSTGUI_HALFILE' web/src/wasm-core.js >/dev/null
grep -F 'subroutinePath: options.subroutinePath' web/src/wasm-core.js >/dev/null
grep -F 'subroutinepath: options.subroutinepath' web/src/wasm-core.js >/dev/null
grep -F 'subroutine_path: options.subroutine_path' web/src/wasm-core.js >/dev/null
grep -F 'SUBROUTINE_PATH: options.SUBROUTINE_PATH' web/src/wasm-core.js >/dev/null
grep -F 'kinematics: options.kinematics' web/src/wasm-core.js >/dev/null
grep -F 'trt: options.trt' web/src/wasm-core.js >/dev/null
grep -F 'pivotLength: options.pivotLength' web/src/wasm-core.js >/dev/null
grep -F 'pivot_length: options.pivot_length' web/src/wasm-core.js >/dev/null
grep -F 'kinematicsType: options.kinematicsType' web/src/wasm-core.js >/dev/null
grep -F 'kinematics_type: options.kinematics_type' web/src/wasm-core.js >/dev/null
grep -F 'fiveaxisKinematicsType: options.fiveaxisKinematicsType' web/src/wasm-core.js >/dev/null
grep -F 'fiveaxis_kinematics_type: options.fiveaxis_kinematics_type' web/src/wasm-core.js >/dev/null
grep -F 'xyzbcTrt: options.xyzbcTrt' web/src/wasm-core.js >/dev/null
grep -F 'globalThis.createCncSimModule' web/src/wasm-core.js >/dev/null
grep -F 'createModule(moduleOptions)' web/src/wasm-core.js >/dev/null
@@ -56,12 +82,41 @@ grep -F 'LINUXCNC_DEFAULT_PARAMETER_FILE = "rs274ngc.var"' web/src/wasm-core.js
grep -F 'export type CncParseOptions' web/src/index.ts >/dev/null
grep -F 'switchkins?: string;' web/src/index.ts >/dev/null
grep -F 'remap?: string;' web/src/index.ts >/dev/null
grep -F 'machine?: string;' web/src/index.ts >/dev/null
grep -F 'config?: string;' web/src/index.ts >/dev/null
grep -F 'configPath?: string;' web/src/index.ts >/dev/null
grep -F 'configpath?: string;' web/src/index.ts >/dev/null
grep -F 'config_path?: string;' web/src/index.ts >/dev/null
grep -F 'ini?: string;' web/src/index.ts >/dev/null
grep -F 'iniFile?: string;' web/src/index.ts >/dev/null
grep -F 'inifile?: string;' web/src/index.ts >/dev/null
grep -F 'iniFileName?: string;' web/src/index.ts >/dev/null
grep -F 'inifilename?: string;' web/src/index.ts >/dev/null
grep -F 'ini_file?: string;' web/src/index.ts >/dev/null
grep -F 'ini_file_name?: string;' web/src/index.ts >/dev/null
grep -F 'INI_FILE_NAME?: string;' web/src/index.ts >/dev/null
grep -F 'halFile?: string;' web/src/index.ts >/dev/null
grep -F 'halfile?: string;' web/src/index.ts >/dev/null
grep -F 'hal_file?: string;' web/src/index.ts >/dev/null
grep -F 'HALFILE?: string;' web/src/index.ts >/dev/null
grep -F 'postguiHalFile?: string;' web/src/index.ts >/dev/null
grep -F 'postguihalfile?: string;' web/src/index.ts >/dev/null
grep -F 'postgui_halfile?: string;' web/src/index.ts >/dev/null
grep -F 'postgui_hal_file?: string;' web/src/index.ts >/dev/null
grep -F 'POSTGUI_HALFILE?: string;' web/src/index.ts >/dev/null
grep -F 'subroutinePath?: string;' web/src/index.ts >/dev/null
grep -F 'subroutinepath?: string;' web/src/index.ts >/dev/null
grep -F 'subroutine_path?: string;' web/src/index.ts >/dev/null
grep -F 'SUBROUTINE_PATH?: string;' web/src/index.ts >/dev/null
grep -F 'kinematics?: string;' web/src/index.ts >/dev/null
grep -F 'trt?: "xyzbc" | "xyzac" | string;' web/src/index.ts >/dev/null
grep -F 'pivotLength?: number;' web/src/index.ts >/dev/null
grep -F 'pivot_length?: number;' web/src/index.ts >/dev/null
grep -F 'kinematicsType?: number;' web/src/index.ts >/dev/null
grep -F 'kinematics_type?: number;' web/src/index.ts >/dev/null
grep -F 'fiveaxisKinematicsType?: number;' web/src/index.ts >/dev/null
grep -F 'fiveaxis_kinematics_type?: number;' web/src/index.ts >/dev/null
grep -F 'xyzbcTrt?: CncXyzbcTrtOptions;' web/src/index.ts >/dev/null
grep -F '): CncEvent[];' web/src/index.ts >/dev/null
grep -F 'options?: CncParseOptions' web/src/wasm-core.d.ts >/dev/null
grep -F 'parseFile(path: string, dialect?: CncDialect, options?: CncParseOptions): Promise<CncEvent[]>;' web/src/wasm-core.d.ts >/dev/null
@@ -82,12 +137,62 @@ grep -F 'export type WasmModuleOptions' web/src/wasm-core.d.ts >/dev/null
grep -F 'printErr?: (text: string) => void;' web/src/wasm-core.d.ts >/dev/null
grep -F '"field":"switchkins"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"remap"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"machine"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"kinematics"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"config"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"configPath"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"configpath"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"config_path"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"ini"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"iniFile"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"inifile"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"iniFileName"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"inifilename"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"ini_file"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"ini_file_name"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"INI_FILE_NAME"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"halFile"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"halfile"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"hal_file"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"HALFILE"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"postguiHalFile"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"postguihalfile"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"postgui_halfile"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"postgui_hal_file"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"POSTGUI_HALFILE"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"subroutinePath"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"subroutinepath"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"subroutine_path"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '"field":"SUBROUTINE_PATH"' web/public/linuxcnc_switchkins_remap_config_cases.json >/dev/null
grep -F '{"switchkins", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"remap", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"machine", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"kinematics", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"config", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"configPath", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"configpath", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"config_path", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"ini", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"iniFile", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"inifile", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"iniFileName", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"inifilename", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"ini_file", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"ini_file_name", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"INI_FILE_NAME", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"halFile", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"halfile", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"hal_file", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"HALFILE", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"postguiHalFile", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"postguihalfile", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"postgui_halfile", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"postgui_hal_file", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"POSTGUI_HALFILE", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"subroutinePath", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"subroutinepath", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"subroutine_path", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '{"SUBROUTINE_PATH", ' core/tests/linuxcnc_switchkins_remap_config_cases.inc >/dev/null
grep -F '"moduleResolution": "Bundler"' web/tsconfig.json >/dev/null
grep -F '"include": ["src/index.ts", "src/**/*.d.ts"]' web/tsconfig.json >/dev/null
grep -F 'createWasmSimulator' test-web-wasm-node-smoke.cjs >/dev/null
@@ -122,6 +227,10 @@ grep -F '"parameters/rs274ngc.var"' web/test-browser-wasm-smoke-opfs-parameter-s
grep -F '"parameters/rs274ngc.var.bak"' web/test-browser-wasm-smoke-opfs-parameter-sections.js >/dev/null
grep -F 'const opfsOptions = options.opfs ?? (isOpfsAvailable() ? {} : false)' web/src/wasm-core.js >/dev/null
grep -F 'OPFS cannot be disabled in browser contexts with OPFS support' web/src/wasm-core.js >/dev/null
if grep -R -n -E 'localStorage|sessionStorage|indexedDB|showOpenFilePicker|showSaveFilePicker|webkitRequestFileSystem|FileReader' web/src; then
echo "browser app/wasm code must not add filesystem persistence outside OPFS" >&2
exit 1
fi
grep -F 'LinuxCNC source basis: rs274ngc_pre.cc restore_parameters() reads the' web/src/wasm-core.js >/dev/null
grep -F 'before replacing the main file and managing filename + ".bak".' web/src/wasm-core.js >/dev/null
grep -F 'await removeOpfsEntry(workspacePath, `${path}.new`, false);' web/src/wasm-core.js >/dev/null

View File

@@ -189,6 +189,16 @@ virtual_time_budget=${BROWSER_SMOKE_VIRTUAL_TIME_BUDGET:-20000}
server_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_browser_smoke_server.XXXXXX.log")
dom_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_browser_smoke_dom.XXXXXX.html")
profile_dir=$(mktemp -d "${TMPDIR:-/tmp}/cnc_sim_browser_smoke_profile.XXXXXX")
remove_profile_dir() {
local attempt
for attempt in {1..20}; do
if rm -rf "$profile_dir"; then
return 0
fi
sleep 0.1
done
rm -rf "$profile_dir" >/dev/null 2>&1 || true
}
cleanup() {
if [[ -n "${chromium_pid:-}" ]]; then
kill "$chromium_pid" >/dev/null 2>&1 || true
@@ -199,7 +209,7 @@ cleanup() {
wait "$server_pid" >/dev/null 2>&1 || true
fi
rm -f "$server_log" "$dom_log"
rm -rf "$profile_dir"
remove_profile_dir
}
trap cleanup EXIT

File diff suppressed because one or more lines are too long

View File

@@ -1,10 +1,13 @@
[
{"field":"config","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
@@ -16,6 +19,10 @@
{"field":"switchkins","value":"Sim-5Axis Bridge Mill","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"5axiskins coordinates=xyzbcwy","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"5axiskins","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal","m428":0,"m429":1,"m430":2},
{"field":"hal_file","value":"configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"configs/sim/axis/vismach/5axis/bridgemill/5axisgui.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"5axisgui.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"5axisgui","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"5axisgui.hal","m428":0,"m429":1,"m430":2},
@@ -24,22 +31,40 @@
{"field":"hal_file","value":"5axisgui","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"5axisgui.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"5axisgui","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"5axis_postgui","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"5axis_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"5axis_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"5axis_postgui","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"5axis_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"5axis_postgui","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/bridgemill/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/bridgemill/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/bridgemill","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"bridgemill","m428":0,"m429":1,"m430":2},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/5axis/bridgemill/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/5axis/bridgemill/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/5axis/bridgemill/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/5axis/bridgemill/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/bridgemill/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/bridgemill/remap_subs/430remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"configPath","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"configpath","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"config_path","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"ini","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"iniFile","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"inifile","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"iniFileName","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"inifilename","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"ini_file","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
@@ -52,22 +77,39 @@
{"field":"switchkins","value":"xyzab_tdr_kins","m428":1,"m429":0,"m430":-1},
{"field":"switchkins","value":"xyzab_tdr","m428":1,"m429":0,"m430":-1},
{"field":"switchkins","value":"xyzab-tdr-kins","m428":1,"m429":0,"m430":-1},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"postguiHalFile","value":"xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"postguiHalFile","value":"xyzab-tdr-postgui","m428":1,"m429":0,"m430":-1},
{"field":"postguihalfile","value":"xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"postguihalfile","value":"xyzab-tdr-postgui","m428":1,"m429":0,"m430":-1},
{"field":"postgui_halfile","value":"xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"postgui_halfile","value":"xyzab-tdr-postgui","m428":1,"m429":0,"m430":-1},
{"field":"postgui_hal_file","value":"xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"postgui_hal_file","value":"xyzab-tdr-postgui","m428":1,"m429":0,"m430":-1},
{"field":"POSTGUI_HALFILE","value":"xyzab-tdr-postgui.hal","m428":1,"m429":0,"m430":-1},
{"field":"POSTGUI_HALFILE","value":"xyzab-tdr-postgui","m428":1,"m429":0,"m430":-1},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs/428remap.ngc","m428":1,"m429":0,"m430":-1},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs","m428":1,"m429":0,"m430":-1},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-dual-rotary","m428":1,"m429":0,"m430":-1},
{"field":"remap","value":"table-dual-rotary","m428":1,"m429":0,"m430":-1},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs","m428":1,"m429":0,"m430":-1},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs","m428":1,"m429":0,"m430":-1},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs","m428":1,"m429":0,"m430":-1},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs","m428":1,"m429":0,"m430":-1},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs/429remap.ngc","m428":1,"m429":0,"m430":-1},
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
@@ -79,22 +121,40 @@
{"field":"switchkins","value":"sim-xyzac-trt-kins","m428":1,"m429":0,"m430":2},
{"field":"switchkins","value":"xyzac-trt-kins sparm=identityfirst","m428":1,"m429":0,"m430":2},
{"field":"switchkins","value":"xyzac-trt-kins","m428":1,"m429":0,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"postguiHalFile","value":"switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"postguiHalFile","value":"switchkins_postgui","m428":1,"m429":0,"m430":2},
{"field":"postguihalfile","value":"switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"postguihalfile","value":"switchkins_postgui","m428":1,"m429":0,"m430":2},
{"field":"postgui_halfile","value":"switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"postgui_halfile","value":"switchkins_postgui","m428":1,"m429":0,"m430":2},
{"field":"postgui_hal_file","value":"switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"postgui_hal_file","value":"switchkins_postgui","m428":1,"m429":0,"m430":2},
{"field":"POSTGUI_HALFILE","value":"switchkins_postgui.hal","m428":1,"m429":0,"m430":2},
{"field":"POSTGUI_HALFILE","value":"switchkins_postgui","m428":1,"m429":0,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc","m428":1,"m429":0,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs","m428":1,"m429":0,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting","m428":1,"m429":0,"m430":2},
{"field":"remap","value":"table-rotary-tilting","m428":1,"m429":0,"m430":2},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs","m428":1,"m429":0,"m430":2},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs","m428":1,"m429":0,"m430":2},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs","m428":1,"m429":0,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs","m428":1,"m429":0,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc","m428":1,"m429":0,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc","m428":1,"m429":0,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
@@ -107,10 +167,13 @@
{"field":"switchkins","value":"xyzbc-trt-kins","m428":1,"m429":0,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
@@ -120,22 +183,40 @@
{"field":"switchkins","value":"xyzacb-trsrn","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"xyzacb-trsrn (switchkins)","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"xyzacb_trsrn","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"xyzacb-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"xyzacb-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"xyzacb-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"xyzacb-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"xyzacb-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"xyzacb-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"table-rotary_spindle-rotary-nutating","m428":0,"m429":1,"m430":2},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/430remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
@@ -145,8 +226,15 @@
{"field":"switchkins","value":"xyzbca-trsrn","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"xyzbca-trsrn (switchkins)","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"xyzbca_trsrn","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"xyzbca-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"xyzbca-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"xyzbca-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"xyzbca-trsrn_postgui.hal","m428":0,"m429":1,"m430":2},
@@ -155,10 +243,13 @@
{"field":"POSTGUI_HALFILE","value":"xyzbca-trsrn_postgui","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
@@ -168,6 +259,10 @@
{"field":"switchkins","value":"hexapod","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"hexapod (switchkins)","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"genhexkins","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"configs/sim/axis/vismach/hexapod-sim/kinematics.hal","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"configs/sim/axis/vismach/hexapod-sim/kinematics.hal","m428":0,"m429":1,"m430":2},
{"field":"hal_file","value":"configs/sim/axis/vismach/hexapod-sim/kinematics.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"configs/sim/axis/vismach/hexapod-sim/kinematics.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"kinematics.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"kinematics","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"kinematics.hal","m428":0,"m429":1,"m430":2},
@@ -176,22 +271,40 @@
{"field":"hal_file","value":"kinematics","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"kinematics.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"kinematics","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"hexapod_postgui","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"hexapod_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"hexapod_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"hexapod_postgui","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"hexapod_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"hexapod_postgui","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/hexapod-sim/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/hexapod-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/hexapod-sim","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"hexapod-sim","m428":0,"m429":1,"m430":2},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/hexapod-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/hexapod-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/hexapod-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/hexapod-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/hexapod-sim/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/hexapod-sim/remap_subs/430remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
@@ -201,6 +314,10 @@
{"field":"switchkins","value":"melfa","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"melfa (mm)","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"genserkins","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"configs/sim/axis/vismach/melfa-sim/melfa_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"configs/sim/axis/vismach/melfa-sim/melfa_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"hal_file","value":"configs/sim/axis/vismach/melfa-sim/melfa_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"configs/sim/axis/vismach/melfa-sim/melfa_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"melfa_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"melfa_dh","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"melfa_dh.hal","m428":0,"m429":1,"m430":2},
@@ -209,22 +326,40 @@
{"field":"hal_file","value":"melfa_dh","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"melfa_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"melfa_dh","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"melfa-postgui","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"melfa-postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"melfa-postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"melfa-postgui","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"melfa-postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"melfa-postgui","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/melfa-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/melfa-sim","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"melfa-sim","m428":0,"m429":1,"m430":2},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/melfa-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/melfa-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/melfa-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/melfa-sim/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/melfa-sim/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/melfa-sim/remap_subs/430remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"configPath","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"configpath","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"config_path","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"ini","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"iniFile","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"inifile","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"iniFileName","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"inifilename","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"ini_file","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
@@ -232,6 +367,10 @@
{"field":"kinematics","value":"millturn","m428":0,"m429":1,"m430":-1},
{"field":"switchkins","value":"millturn","m428":0,"m429":1,"m430":-1},
{"field":"switchkins","value":"millturn (mm)","m428":0,"m429":1,"m430":-1},
{"field":"halFile","value":"configs/sim/axis/vismach/millturn/millturn.hal","m428":0,"m429":1,"m430":-1},
{"field":"halfile","value":"configs/sim/axis/vismach/millturn/millturn.hal","m428":0,"m429":1,"m430":-1},
{"field":"hal_file","value":"configs/sim/axis/vismach/millturn/millturn.hal","m428":0,"m429":1,"m430":-1},
{"field":"HALFILE","value":"configs/sim/axis/vismach/millturn/millturn.hal","m428":0,"m429":1,"m430":-1},
{"field":"halFile","value":"millturn.hal","m428":0,"m429":1,"m430":-1},
{"field":"halFile","value":"millturn","m428":0,"m429":1,"m430":-1},
{"field":"halfile","value":"millturn.hal","m428":0,"m429":1,"m430":-1},
@@ -240,22 +379,39 @@
{"field":"hal_file","value":"millturn","m428":0,"m429":1,"m430":-1},
{"field":"HALFILE","value":"millturn.hal","m428":0,"m429":1,"m430":-1},
{"field":"HALFILE","value":"millturn","m428":0,"m429":1,"m430":-1},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/millturn/millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/millturn/millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/millturn/millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/millturn/millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/millturn/millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"postguiHalFile","value":"millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"postguiHalFile","value":"millturn-postgui","m428":0,"m429":1,"m430":-1},
{"field":"postguihalfile","value":"millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"postguihalfile","value":"millturn-postgui","m428":0,"m429":1,"m430":-1},
{"field":"postgui_halfile","value":"millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"postgui_halfile","value":"millturn-postgui","m428":0,"m429":1,"m430":-1},
{"field":"postgui_hal_file","value":"millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"postgui_hal_file","value":"millturn-postgui","m428":0,"m429":1,"m430":-1},
{"field":"POSTGUI_HALFILE","value":"millturn-postgui.hal","m428":0,"m429":1,"m430":-1},
{"field":"POSTGUI_HALFILE","value":"millturn-postgui","m428":0,"m429":1,"m430":-1},
{"field":"remap","value":"configs/sim/axis/vismach/millturn/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":-1},
{"field":"remap","value":"configs/sim/axis/vismach/millturn/remap_subs","m428":0,"m429":1,"m430":-1},
{"field":"remap","value":"configs/sim/axis/vismach/millturn","m428":0,"m429":1,"m430":-1},
{"field":"remap","value":"millturn","m428":0,"m429":1,"m430":-1},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/millturn/remap_subs","m428":0,"m429":1,"m430":-1},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/millturn/remap_subs","m428":0,"m429":1,"m430":-1},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/millturn/remap_subs","m428":0,"m429":1,"m430":-1},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/millturn/remap_subs","m428":0,"m429":1,"m430":-1},
{"field":"remap","value":"configs/sim/axis/vismach/millturn/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":-1},
{"field":"config","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
@@ -265,6 +421,10 @@
{"field":"switchkins","value":"PUMA (pumakins,switchkins)","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"PUMA","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"pumakins","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"configs/sim/axis/vismach/puma/puma_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"configs/sim/axis/vismach/puma/puma_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"hal_file","value":"configs/sim/axis/vismach/puma/puma_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"configs/sim/axis/vismach/puma/puma_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"puma_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"puma_dh","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"puma_dh.hal","m428":0,"m429":1,"m430":2},
@@ -273,22 +433,40 @@
{"field":"hal_file","value":"puma_dh","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"puma_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"puma_dh","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/puma/puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/puma/puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/puma/puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/puma/puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/puma/puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"puma_postgui","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"puma_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"puma_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"puma_postgui","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"puma_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"puma_postgui","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/puma/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/puma/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/puma","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"puma","m428":0,"m429":1,"m430":2},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/puma/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/puma/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/puma/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/puma/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/puma/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/puma/remap_subs/430remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
@@ -298,16 +476,23 @@
{"field":"switchkins","value":"puma_cube.ini","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
{"field":"machine","value":"puma560 (switchkins) (inch)","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"puma560","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"puma560 (switchkins) (inch)","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"configs/sim/axis/vismach/puma/puma560_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"configs/sim/axis/vismach/puma/puma560_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"hal_file","value":"configs/sim/axis/vismach/puma/puma560_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"configs/sim/axis/vismach/puma/puma560_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"puma560_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"halFile","value":"puma560_dh","m428":0,"m429":1,"m430":2},
{"field":"halfile","value":"puma560_dh.hal","m428":0,"m429":1,"m430":2},
@@ -316,8 +501,15 @@
{"field":"hal_file","value":"puma560_dh","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"puma560_dh.hal","m428":0,"m429":1,"m430":2},
{"field":"HALFILE","value":"puma560_dh","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/puma/puma560_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/puma/puma560_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/puma/puma560_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/puma/puma560_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/puma/puma560_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"puma560_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"puma560_postgui","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"puma560_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"puma560_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"puma560_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"puma560_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"puma560_postgui.hal","m428":0,"m429":1,"m430":2},
@@ -326,20 +518,26 @@
{"field":"POSTGUI_HALFILE","value":"puma560_postgui","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"puma560_uvw","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
@@ -350,34 +548,71 @@
{"field":"switchkins","value":"SCARA","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"scarakins coordinates=xyzcab","m428":0,"m429":1,"m430":2},
{"field":"switchkins","value":"scarakins","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"configs/sim/axis/vismach/scara/scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"configs/sim/axis/vismach/scara/scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"configs/sim/axis/vismach/scara/scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"configs/sim/axis/vismach/scara/scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"configs/sim/axis/vismach/scara/scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguiHalFile","value":"scara_postgui","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postguihalfile","value":"scara_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_halfile","value":"scara_postgui","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"postgui_hal_file","value":"scara_postgui","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"scara_postgui.hal","m428":0,"m429":1,"m430":2},
{"field":"POSTGUI_HALFILE","value":"scara_postgui","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/scara/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/scara","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"scara","m428":0,"m429":1,"m430":2},
{"field":"subroutinePath","value":"configs/sim/axis/vismach/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutinepath","value":"configs/sim/axis/vismach/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutine_path","value":"configs/sim/axis/vismach/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/axis/vismach/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/scara/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/axis/vismach/scara/remap_subs/430remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtaxis/non-trivial/scara/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtaxis/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtaxis/non-trivial/scara","m428":0,"m429":1,"m430":2},
{"field":"subroutinePath","value":"configs/sim/qtaxis/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutinepath","value":"configs/sim/qtaxis/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutine_path","value":"configs/sim/qtaxis/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/qtaxis/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtaxis/non-trivial/scara/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtaxis/non-trivial/scara/remap_subs/430remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"config","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"configPath","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"configpath","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"config_path","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFile","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"inifile","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"iniFileName","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"inifilename","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"ini_file_name","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"INI_FILE_NAME","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtvcp_screens/non-trivial/scara","m428":0,"m429":1,"m430":2}
{"field":"remap","value":"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/428remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtvcp_screens/non-trivial/scara","m428":0,"m429":1,"m430":2},
{"field":"subroutinePath","value":"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutinepath","value":"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"subroutine_path","value":"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"SUBROUTINE_PATH","value":"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/429remap.ngc","m428":0,"m429":1,"m430":2},
{"field":"remap","value":"configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/430remap.ngc","m428":0,"m429":1,"m430":2}
]

View File

@@ -83,20 +83,29 @@ export type CncParseOptions = {
machine?: string;
config?: string;
configPath?: string;
configpath?: string;
config_path?: string;
ini?: string;
iniFile?: string;
inifile?: string;
iniFileName?: string;
inifilename?: string;
ini_file?: string;
ini_file_name?: string;
INI_FILE_NAME?: string;
halFile?: string;
halfile?: string;
hal_file?: string;
HALFILE?: string;
postguiHalFile?: string;
postguihalfile?: string;
postgui_halfile?: string;
postgui_hal_file?: string;
POSTGUI_HALFILE?: string;
subroutinePath?: string;
subroutinepath?: string;
subroutine_path?: string;
SUBROUTINE_PATH?: string;
kinematics?: string;
trt?: "xyzbc" | "xyzac" | string;
pivotLength?: number;

View File

@@ -605,20 +605,29 @@ export async function createWasmSimulator(moduleOptions = {}) {
...(options.machine ? { machine: options.machine } : {}),
...(options.config ? { config: options.config } : {}),
...(options.configPath ? { configPath: options.configPath } : {}),
...(options.configpath ? { configpath: options.configpath } : {}),
...(options.config_path ? { config_path: options.config_path } : {}),
...(options.ini ? { ini: options.ini } : {}),
...(options.iniFile ? { iniFile: options.iniFile } : {}),
...(options.inifile ? { inifile: options.inifile } : {}),
...(options.iniFileName ? { iniFileName: options.iniFileName } : {}),
...(options.inifilename ? { inifilename: options.inifilename } : {}),
...(options.ini_file ? { ini_file: options.ini_file } : {}),
...(options.ini_file_name ? { ini_file_name: options.ini_file_name } : {}),
...(options.INI_FILE_NAME ? { INI_FILE_NAME: options.INI_FILE_NAME } : {}),
...(options.halFile ? { halFile: options.halFile } : {}),
...(options.halfile ? { halfile: options.halfile } : {}),
...(options.hal_file ? { hal_file: options.hal_file } : {}),
...(options.HALFILE ? { HALFILE: options.HALFILE } : {}),
...(options.postguiHalFile ? { postguiHalFile: options.postguiHalFile } : {}),
...(options.postguihalfile ? { postguihalfile: options.postguihalfile } : {}),
...(options.postgui_halfile ? { postgui_halfile: options.postgui_halfile } : {}),
...(options.postgui_hal_file ? { postgui_hal_file: options.postgui_hal_file } : {}),
...(options.POSTGUI_HALFILE ? { POSTGUI_HALFILE: options.POSTGUI_HALFILE } : {}),
...(options.subroutinePath ? { subroutinePath: options.subroutinePath } : {}),
...(options.subroutinepath ? { subroutinepath: options.subroutinepath } : {}),
...(options.subroutine_path ? { subroutine_path: options.subroutine_path } : {}),
...(options.SUBROUTINE_PATH ? { SUBROUTINE_PATH: options.SUBROUTINE_PATH } : {}),
...(options.kinematics ? { kinematics: options.kinematics } : {}),
...(options.trt ? { trt: options.trt } : {}),
...(options.pivotLength !== undefined ? { pivotLength: options.pivotLength } : {}),