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

4.4 KiB
Raw Blame History

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 已由周期内 LcmotStatusSnapshotStandaloneEmcStatus 导出,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.cctaskintf.ccemccanon.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.cctaskintf.ccemccanon.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 通信格式,不作为核心状态机事实源。