This repository was archived by the owner on Jul 2, 2026. It is now read-only.
feat(ddsm115)!: migrate the driver to the new framework (phoxal 0.15)#7
Merged
Conversation
Port the ddsm115 wheel-motor driver from the old phoxal 0.9 authoring surface to the
new one: a single `#[derive(phoxal::Runtime)]` + `#[phoxal(id = "ddsm115", api =
y2026_1)]` driver with `#[setup]`/`#[step]`/`#[shutdown]` and a blocking
`phoxal::run::<Ddsm115>()`. It reads its per-instance binding via `ctx.component()`
(D47/D53) and binds the dynamic per-component `motor_command` (subscribe) /
`encoder_sample` (publish) topics (D17/D38) — the framework's typed contracts, no
hand-rolled bus code.
- Replace `src/{main,runtime}.rs` (old split + old `RuntimeProcess`/`clap`) with one
`main.rs`; drop the `async-trait`/`clap`/`tokio`/`tracing` deps (the runner owns the
process now) — deps are just `phoxal` + `anyhow` (+ `serde_json` dev-dep for the
emit-apis test).
- Pin `phoxal = "0.15"` directly (not the workspace's 0.9): cargo keeps both in the
lock, so this driver builds on 0.15 while the other four catalog drivers stay on 0.9
until they migrate. `component.yaml` / URDF / simulation.yaml are unchanged (the
component grammar is separate).
This is the first driver on the new framework — it also confirms component drivers
live here and are built from git source (not framework images), per REPOSITORIES.md.
`cargo check --workspace` (0.9 + 0.15 coexisting), `cargo test -p
phoxal-component-ddsm115` (3 tests), clippy, fmt all green.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Migrates the ddsm115 wheel-motor driver from phoxal 0.9 to the new framework
authoring surface (phoxal 0.15): a single
#[derive(phoxal::Runtime)]+#[phoxal(id = "ddsm115", api = y2026_1)]driver with#[setup]/#[step]/#[shutdown]and
phoxal::run::<Ddsm115>(). It reads its instance viactx.component()(D47/D53) andbinds the dynamic
motor_command(subscribe) /encoder_sample(publish) per-componenttopics (D17/D38).
Why
Part of relocating component drivers to where they belong (
phoxal/components, builtfrom git source — confirmed by
REPOSITORIES.md:18) and off the framework. ddsm115 isthe first of the five catalog drivers to move to the new framework.
How
src/{main,runtime}.rswith onemain.rs; dropasync-trait/clap/tokio/tracing(the runner owns the process) → deps arephoxal+anyhow(+serde_jsondev-dep).
phoxal = "0.15"directly (not the workspace's 0.9) so this crate builds on0.15 while the other four drivers stay on 0.9 until they migrate — cargo keeps both in
the lock.
component.yaml/URDF/simulation.yamlunchanged.Tests
cargo check --workspace(0.9 + 0.15 coexisting),cargo test -p phoxal-component-ddsm115(3 tests incl. emit-apis), clippy
-D warnings, fmt — all green.🤖 Generated with Claude Code