51 lines
4.4 KiB
Markdown
51 lines
4.4 KiB
Markdown
# 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 通信格式,不作为核心状态机事实源。
|