Files
cnc_wams/wasm-port/working/README.md
2026-07-08 09:20:47 -04:00

51 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# wasm-port task 主循环完全对标推进索引
## 目标
本目录用于推进 `wasm-port` 对标 LinuxCNC `linuxcnc/src/emc/task/emctaskmain.cc` 的 task 主循环,重点补齐每个 task 周期读取 motion 状态并驱动 task 状态机的结构。
当前基线结论:
- 上游 LinuxCNC task 主循环每周期执行 command read、`emcTaskPlan()``emcTaskExecute()``emcMotionUpdate(&emcStatus->motion)`、subordinate sync、`emcTaskUpdate()`、status write。
- `wasm-port` 当前 task-HAL runtime 已闭合本目录任务矩阵:`lctask_run_cycles()` 具备 command read、plan、execute、motion update、subordinate sync、task update、status write 的 LinuxCNC 式周期骨架。
- task status 已由周期内 `LcmotStatusSnapshot``StandaloneEmcStatus` 导出,`lctask_read_status_json()` 只读取最后一次 status write不推进或重新同步 motion。
- RUN 文件主路径已由 staged program 的 plan read/command/execute、`emccanon.cc` command envelope 和 `taskintf.cc` motion issue 驱动host JSON motion plan 仅保留为 timed-plan 兼容/调试入口。
- vendored/upstream `emctask.cc``taskintf.cc``emccanon.cc` 的窄子集已按 T-033 到 T-046 分阶段接入;完整 `emctaskmain.cc`/NML/native HAL/native motion process topology 仍未 promoted。
## 文档索引
| 文件 | 用途 |
| --- | --- |
| `01-项目功能内容.md` | 定义本阶段要实现的功能边界和 LinuxCNC 对标范围。 |
| `02-项目程序开发详细步骤.md` | 拆解从当前 minimal adapter 到 LinuxCNC task 主循环对标的开发步骤。 |
| `03-推进台账.md` | 记录每轮做了什么、改了哪些文件、验证了什么、下一步是什么。 |
| `04-任务矩阵.md` | 维护任务编号、状态、验收标准,防止重复做和口径漂移。 |
| `05-验收证据.md` | 记录命令、报告、截图、页面、job/report id 等证据。 |
| `06-决策记录.md` | 记录关键技术决策和理由,后续变更避免重复争论。 |
| `07-emctaskmain周期对标蓝图.md` | 把上游 `emctaskmain.cc` 周期拆成 WASM 可执行阶段、字段映射和验收要求。 |
| `08-上游task源码替换分解.md` | 拆解 `emctask.cc``taskintf.cc``emccanon.cc` 的函数族迁移顺序、shim 和验收。 |
| `09-emc_nml复用评估.md` | 记录完整 `emc_nml.hh` 直接复用评估、依赖清单和当前窄 status 容器路线。 |
| `10-taskintf-usrmot-shim设计.md` | 设计 `taskintf.cc` usrmot shim 到 `lcmot_*` 的 command/status/config/error 映射。 |
| `11-WASM核心状态机边界与后续完善路线.md` | 固定 WASM/C++、JS/SDK、JSON 的职责边界,并给出后续完善 WASM 核心状态机的任务拆分规则。 |
| `12-status-json-LinuxCNC对标方案.md` | 对标 LinuxCNC `EMC_STAT` / status buffer定义 WASM 中 `StandaloneEmcStatus -> status JSON` 的字段映射、禁止链路和后续实施批次。 |
## 使用方式
1. 每轮实施前先看 `04-任务矩阵.md`,选择 `待办``进行中` 任务。
2. 修改代码或文档后同步更新 `03-推进台账.md`
3. 每条任务完成前,把可复现命令和关键输出写入 `05-验收证据.md`
4. 如改变迁移路线、边界或验收口径,先更新 `06-决策记录.md`
5. 涉及 task 主循环实现时,必须同步查看 `07-emctaskmain周期对标蓝图.md`
6. 涉及上游 task 源码替换时,必须同步查看 `08-上游task源码替换分解.md`
7. 涉及完整 `emc_nml.hh` 复用或 status 容器时,必须同步查看 `09-emc_nml复用评估.md`
8. 涉及 `taskintf.cc` motion bridge 或 usrmot shim 时,必须同步查看 `10-taskintf-usrmot-shim设计.md`
9. 涉及 WASM 程序核心状态机、JS/SDK 边界或 status JSON 时,必须同步查看 `11-WASM核心状态机边界与后续完善路线.md`
10. 涉及 status JSON 字段、SDK status API 或 UI status 展示时,必须同步查看 `12-status-json-LinuxCNC对标方案.md`
11. 每轮结束后遵守仓库 `AGENTS.md`,追加中文执行日志。
## 当前闭合状态
`04-任务矩阵.md` 当前所有任务均为完成,下一条优先任务为“无”。后续继续扩展对标范围时,先在矩阵中新增任务编号、验收标准和 gate再实施代码或文档变更。
后续 WASM 程序完善的默认方向是WASM/C++ 承载核心状态机和 LinuxCNC 语义JS/SDK 承担加载、命令传递、状态读取和文件/OPFS 边界JSON 仅作为 host/browser 通信格式,不作为核心状态机事实源。