Proc-macros for the phoxal framework.
Three macro families make up the authoring surface:
- [
phoxal_api_tree!] - declares concrete API-revision modules (phoxal_api::v0_1, …), their revision-local body types, theContractBody/ApiVersionimpls, and the api-local topic builders. - [
derive@Config] - derives the config schema embedded in participant metadata. - [
macro@service] / [macro@driver] / [macro@simulator] / [macro@tool] - declare a unit marker'sConfig/State/Apitypes and identity (ParticipantSpec). - [
macro@step] - records cadence on the ordinaryParticipant::stepoverride. Setup, reset, shutdown, and query handlers are plain Rust.
The participant authoring macros (macro@service / macro@driver /
macro@tool / macro@simulator / macro@step) reference the framework
through ::phoxal::…; the engine crate makes that path resolve to itself with
extern crate self as phoxal;. The
phoxal_api_tree! output instead targets the bus ABI floor directly as
::phoxal_bus, since it is invoked in the phoxal-api crate, which does not
depend on the engine.