按规划继续工作
结论:补齐 LinuxCNC tooldata_common.cc 随机换刀器 load/save 验证边界,WASM/SDK/OPFS 只透传 random-toolchanger 配置;native、WASM、OPFS 和浏览器 smoke 验证已通过。
This commit is contained in:
@@ -243,17 +243,21 @@ restore/save behavior through the exported C ABI, including out-of-order file
|
||||
rejection, missing-file success, required numeric parameter writeback, removal
|
||||
of named-parameter-only lines from saved output, and the `.bak` backup produced
|
||||
by vendored `save_parameters()`. It also covers LinuxCNC tool-table
|
||||
load/save behavior through vendored `tooldata_common.cc`, with the SDK only
|
||||
copying text into the Emscripten filesystem and calling the exported C ABI.
|
||||
load/save behavior through vendored `tooldata_common.cc`, including the
|
||||
non-random and random-toolchanger `tooldata_init()` branches, with the SDK
|
||||
only copying text into the Emscripten filesystem and calling the exported C
|
||||
ABI.
|
||||
OPFS validation covers the JavaScript host-boundary adapter, the INI browser
|
||||
smoke harness, the INI panel UI's machine-session load and G-code run buttons,
|
||||
the raw canonical-event display fed directly by LinuxCNC interpreter WASM
|
||||
output, the Node parameter/tool-table bridges that copy OPFS text through the
|
||||
SDK into vendored LinuxCNC file APIs, the Node machine-session bridge that
|
||||
groups INI, parameter, and tool-table loading, and a browser interpreter smoke
|
||||
that uses the same session bridge before saving OPFS-backed parameter and
|
||||
tool-table text through vendored LinuxCNC file APIs. Full browser coverage,
|
||||
full SDK coverage, and richer machine-state validation remain future work.
|
||||
groups INI, parameter, and tool-table loading, the random-toolchanger flag as
|
||||
a host boundary passed through to the LinuxCNC-backed tool-table ABI, and a
|
||||
browser interpreter smoke that uses the same session bridge before saving
|
||||
OPFS-backed parameter and tool-table text through vendored LinuxCNC file APIs.
|
||||
Full browser coverage, full SDK coverage, and richer machine-state validation
|
||||
remain future work.
|
||||
|
||||
## WASM/Browser Fixture Matrix
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ semantic rewrites:
|
||||
| Canonical output | Canonical calls are captured as test events instead of driving hardware. |
|
||||
| Feed-rate state | `SET_FEED_RATE` updates standalone canonical runtime state so vendored `convert_length_units()` can read it back through `GET_EXTERNAL_FEED_RATE()` during G20/G21 changes. |
|
||||
| Tool-data reload | LinuxCNC `RELOAD_TOOLDATA` is captured as a canonical test event; browser/native tool-table reload plumbing remains a future host/runtime adapter. |
|
||||
| Tool table storage | Vendored LinuxCNC `tooldata_common.cc` owns tool-table parsing and formatting; the standalone boundary only supplies the in-memory `tooldata_get()`/`tooldata_put()` callbacks and exposes load/save through the WASM C ABI. |
|
||||
| Tool table storage | Vendored LinuxCNC `tooldata_common.cc` owns tool-table parsing and formatting; the standalone boundary only supplies the in-memory `tooldata_get()`/`tooldata_put()` callbacks, exposes load/save through the WASM C ABI, and forwards the host random-toolchanger flag to LinuxCNC `tooldata_init()`. |
|
||||
| Tool slot status | Standalone tool adapter state supplies `GET_EXTERNAL_TOOL_SLOT()` and `GET_EXTERNAL_SELECTED_TOOL_SLOT()` for vendored `Interp::synch()`; `linuxcnc_interp_init_harness` guards current/selected slot synchronization. |
|
||||
| Interpreter state tags | LinuxCNC `UPDATE_TAG` callbacks are captured from the state tags packed by vendored interpreter code; standalone code does not derive modal state. |
|
||||
| Rotary indexer lock state | LinuxCNC `UNLOCK_ROTARY` and `LOCK_ROTARY` callbacks are captured from the vendored single-axis indexer path; standalone code does not implement rotary-indexing semantics. |
|
||||
|
||||
@@ -47,7 +47,7 @@ Current validation is intentionally mechanical:
|
||||
| RS274 interpreter state and parser | `src/emc/rs274ngc/modal_state.*`, `interp_internal.*`, `interp_read.cc`, `interp_check.cc`, `interp_execute.cc`, `interp_find.cc`, `interp_array.cc`, `interp_queue.*`, `rs274ngc*`, `units.h` | Copy unchanged | Python/remap/runtime edges are isolated in standalone wrappers and shims; parser and execution logic remain LinuxCNC source | Vendor byte sync, per-file source probes, interpreter harness fixtures |
|
||||
| RS274 conversion semantics | `src/emc/rs274ngc/interp_convert.cc`, `interp_arc.cc`, `interp_inverse.cc`, `interp_cycles.cc`, `interp_g7x.cc`, `interp_o_word.cc`, `interp_write.cc` | Copy unchanged | Canonical calls are captured by standalone event sink functions; conversion behavior stays in vendored LinuxCNC files; feed-rate state is read back through the canonical runtime boundary during length-unit conversion | Vendor byte sync, per-file source probes, canonical fixture suite, no standalone `Interp::convert_g()` guard |
|
||||
| Named parameters and tool slot status | `src/emc/rs274ngc/interp_namedparams.cc`, related interpreter headers | Copy unchanged | `_ini[...]` and `_hal[...]` resolve through standalone INI/HAL adapters while lookup order stays LinuxCNC-derived; current/selected tool slot reads for vendored `Interp::synch()` come from the standalone tool adapter | Vendor byte sync, source probe, `linuxcnc_namedparam_harness`, `linuxcnc_interp_init_harness` |
|
||||
| Tool table parsing and formatting | `src/emc/tooldata/tooldata_common.cc` | Copy unchanged plus standalone storage callbacks | Native file parsing/formatting stays in vendored LinuxCNC source; the standalone tool adapter supplies `tooldata_get()`/`tooldata_put()` storage and index lookup, while OPFS remains a host-side persistence boundary | Vendor byte sync, `linuxcnc_tooldata_common_source_probe`, `tests/wasm/node/verify_interp_wasm.sh` load/save tool-table assertions |
|
||||
| Tool table parsing and formatting | `src/emc/tooldata/tooldata_common.cc` | Copy unchanged plus standalone storage callbacks | Native file parsing/formatting stays in vendored LinuxCNC source; the standalone tool adapter supplies `tooldata_get()`/`tooldata_put()` storage and index lookup, the WASM boundary only selects the LinuxCNC non-random or random-toolchanger branch via `tooldata_init()`, and OPFS remains a host-side persistence boundary | Vendor byte sync, `linuxcnc_tooldata_common_source_probe`, `tests/wasm/node/verify_interp_wasm.sh` non-random/random load/save tool-table assertions |
|
||||
| Dynamic interpreter base | `src/emc/rs274ngc/interp_base.*` | Copy unchanged | `interp_base.cc` source probe uses standalone `EMC2_HOME` compile-time path boundary for LinuxCNC dynamic interpreter lookup | Vendor byte sync, `linuxcnc_interp_base_source_probe` |
|
||||
|
||||
## Dependency Matrix
|
||||
@@ -75,9 +75,10 @@ Current validation is intentionally mechanical:
|
||||
the current interpreter-core smoke scope. The interpreter SDK is a thin
|
||||
allocation, filesystem, and C ABI wrapper over vendored LinuxCNC execution
|
||||
paths, including parameter-file restore/save through vendored
|
||||
`rs274ngc_pre.cc` and tool-table load/save through vendored
|
||||
`tooldata_common.cc`; it does not define G-code, parameter, or tool-table
|
||||
semantics. Full planner/session SDK coverage remains future work.
|
||||
`rs274ngc_pre.cc` and non-random/random tool-table load/save through
|
||||
vendored `tooldata_common.cc`; it does not define G-code, parameter, or
|
||||
tool-table semantics. Full planner/session SDK coverage remains future
|
||||
work.
|
||||
- OPFS persistence is connected to the INI panel through the host-side
|
||||
`runtime/opfs/file-service.js` adapter. `runtime/opfs/path-model.js` now
|
||||
defines paths for INI, tool table, parameter file, G-code program,
|
||||
|
||||
Reference in New Issue
Block a user