mctp-api: add Stack facade and update mctp_echo to use high-level traits - Add services/mctp/api/src/stack.rs: Stack<C: MctpClient> facade that wraps any MctpClient and returns StackListener, StackReqChannel and StackRespChannel implementing the MctpListener / MctpReqChannel / MctpRespChannel traits. All channel types release server handles on Drop. - Update services/mctp/api/src/lib.rs: expose stack module and re-export Stack, StackListener, StackReqChannel, StackRespChannel. - Update target/ast1060-evb/mctp/mctp_echo.rs: replace direct MctpClient calls with Stack::new(IpcMctpClient) + MctpListener / MctpRespChannel traits, matching the Hubris mctp-echo task structure. - Update services/mctp/server/tests/integration.rs: add Stack facade tests exercising echo-via-Stack and req/resp roundtrip using DirectClient as the MctpClient strategy. - Update services/mctp/api/README.md: document the two-layer abstraction, Stack API, Strategy pattern, and wire protocol.
The OpenPRoT Technical Charter can be found at https://github.com/OpenPRoT/.github/blob/main/GOVERNANCE.md
This project uses cargo-xtask for build automation and project management.
You can run tasks using cargo xtask <task-name>:
cargo xtask build - Build the projectcargo xtask test - Run all testscargo xtask check - Run cargo checkcargo xtask clippy - Run clippy lintscargo xtask fmt - Format code with rustfmtcargo xtask clean - Clean build artifactscargo xtask dist - Build a distribution (release build)cargo xtask docs - Build documentation with mdbookcargo xtask cargo-lock - Manage Cargo.lock filecargo xtask precheckin - Run all pre-checkin validation checkscargo xtask header-check - Check license headers in source filescargo xtask header-fix - Fix missing license headers in source files# Build the project cargo xtask build # Run tests cargo xtask test # Create a distribution cargo xtask dist # Format code cargo xtask fmt # Run clippy cargo xtask clippy # Build documentation cargo xtask docs # Run all pre-checkin validation checks cargo xtask precheckin # Check license headers cargo xtask header-check # Fix missing license headers cargo xtask header-fix
The project is structured as a Cargo workspace with two main components:
openprot/ - The main applicationxtask/ - Build automation scriptsThe xtask workflow allows you to add custom build steps, automation, and project management tasks written in Rust, making them cross-platform and easy to maintain.
No additional tools are required - everything is handled through Cargo and the xtask scripts.