Phase 115.C — C-side mirror of nros_rmw::custom_transport::NrosTransportOps. Same #[repr(C)] layout — single ABI, no parallel definitions.
Field semantics:
abi_version: must be [NROS_TRANSPORT_OPS_ABI_VERSION_V1] (Phase 115.A.2).
_reserved: padding for future minor-version detection. Set to 0.
user_data: opaque caller context, threaded back into every callback as the first argument. Lifetime: must outlive the transport's active period (i.e. until close returns).
open: open the underlying medium. params is opaque per-transport metadata supplied by the caller (e.g. UART baud rate). May be NULL. Returns 0 on success, negative nros_ret_t on failure.
close: tear the transport down. Complement of open.
write: send len bytes from buf. Returns 0 on success, negative nros_ret_t on failure.
read: receive up to len bytes within timeout_ms. Returns the non-negative byte count on success, negative nros_ret_t on error / timeout.