Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
CSPCL - Rust Bindings
Minimal Rust bindings for the CubeSat Space Protocol Convergence Layer (CSPCL), enabling Bundle Protocol 7 (BP7) bundles to be transmitted over CubeSat Space Protocol (CSP).
Features
- Operational sys crate - The workspace builds the local C implementation instead of assuming prelinked symbols
- Hardy-facing runtime surface - Explicit shutdown, connection stats, peer helpers, and split send/receive handles
- Optional Tokio async wrappers - Feature-gated async sender and receiver handles layered over the sync runtime
- Automatic cleanup - Resource management via RAII
- Cross-platform - POSIX (Linux) and FreeRTOS support at the C layer
Quick Start
Add to Cargo.toml:
[]
= "0.1"
Basic usage:
use ;
let cspcl = from_config?;
let = cspcl.split;
sender.send_bundle?;
let bundle = receiver.recv_bundle?;
println!;
let stats = cspcl.connection_stats;
println!;
cspcl.shutdown?;
Enable the optional async API with:
[]
= { = "0.1", = ["async-tokio"] }
use AsyncCspcl;
use ;
let cspcl = from_config?;
let async_cspcl = from_sync;
let = async_cspcl.split;
sender.send_bundle.await?;
let mut buffer = ;
let received = receiver.recv_bundle_into.await?;
println!;
async_cspcl.shutdown.await?;
Public Surface
CspclBootstrap handle withsplit(),shutdown(),connection_stats(), and convenience send/receive methods.SenderShared outbound handle withsend_bundle()andconnection_stats().ReceiverBlocking inbound handle withrecv_bundle()andrecv_bundle_into().ReceivedBundleandReceivedBundleViewReceived metadata plus helpers to derive aRemotePeer.RemotePeerTransport-native remote identity helper for CSP address and port handling.async_api::{AsyncCspcl, AsyncSender, AsyncReceiver}Optional Tokio wrappers that delegate to the sync runtime throughspawn_blocking.
Documentation
See main repository README for complete documentation and examples.
Testing
The Rust tests exercise the safe crate against a built libcsp v1.6 checkout.
Point CSP_REPO_DIR at that checkout, or update the local override in
rust-bindings/.cargo/config.toml to match your machine.
Example setup:
If rust-bindings/.cargo/config.toml already points at your local libcsp checkout,
the explicit export is not required.
Run the feature-gated async suite with:
Coverage
Install the coverage tool once:
Then generate a coverage summary for the safe Rust crate:
Optional report variants:
To include the async wrappers in coverage:
License
MIT