mctp-server: add in-process SPDM requester Parallel to the existing in-process SPDM responder. Same src/main.rs, selected by Cargo feature flag (in-process-responder vs in-process-requester) on the Bazel rust_app target, enforced mutually exclusive via compile_error!. - New system_image at //target/ast1060-evb/mctp-requester:mctp_requester; the existing //target/ast1060-evb/mctp:mctp keeps the responder role. - Second rust_app target mctp_server_requester in services/mctp/server/ with distinct codegen_crate_name (app_mctp_server_requester). - Phase-2 loop body runs an 8-state VCA FSM one step per iteration (SendVersion -> AwaitVersion -> ... -> Done / Failed), interleaved with the existing Phase-1 I2C drain. - AWAIT_STEP_BUDGET (10_000) safety net: an Await state that sits on TimedOut too long transitions to Failed instead of hanging. - Counters req_send_ok / req_recv_ok / req_recv_pending logged on the Done transition. Bundled pre-Phase-1 unblockers for the mctp-lib hotfix at 023e75e: - Server::inbound now discards the new Option<AppCookie> return. - main.rs consumes the MctpI2cHeader struct from receiver.decode() (was a bare u8 source address). Docs updated: DESIGN_IN_PROCESS_REQUESTER.md, IMPLEMENTATION_PLAN.md (new), INITIALIZATION.md (requester setup + glossary). Build verification: bazel build --config=k_ast1060_evb //target/ast1060-evb/mctp:mctp bazel build --config=k_ast1060_evb //target/ast1060-evb/mctp-requester:mctp_requester
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.