Expand description
§Crazyflie library
This crate allows to connect, communicate with and control the Crazyflie using the crazyflie-link crate to open a communication link. The link implementation only supports radio for now, but more will be implemented in the future (at least USB).
§Status
The crate aims at implementing a Rust API to control the Crazyflie. The Crazyflie functionalities are implemented in subsystems. The current status is:
| Subsystem | Support |
|---|---|
| App channel | Full |
| Commander | Full |
| Console | Full |
| High-level Commander | Full |
| Localization | Full |
| Log | Full (V2) |
| Memory | None |
| Param | Full(V2) |
| Platform | Full |
§Compatibility
This crate is compatible with Crazyflie protocol versions MIN_SUPPORTED_PROTOCOL_VERSION
to MAX_SUPPORTED_PROTOCOL_VERSION. The Crazyflie guarantees backward compatibility for one
protocol version, so this library will work with both the current and next protocol version.
§Usage
The basic procedure to use the lib is:
- Find the link URI to connect, either by scanning or as a config or user input
- Create a Crazyflie object from the URI or a connected Link, this will connect to the Crazyflie and initializes the subsystems
- Subsystems are available as public fields of the Crazyflie struct.
- Use the subsystems in the Crazyflie object to control the Crazyflie
- Drop the Crazyflie object or call crazyflie::Crazyflie::disconnect()
All subsystems functions are only taking an un-mutable reference to self (&self), the intention is for the
Crazyflie object to be shared between tasks using Arc<> or Rc<>.
For example:
let link_context = crazyflie_link::LinkContext::new();
// Scan for Crazyflies on the default address
let found = link_context.scan([0xE7; 5]).await?;
if let Some(uri) = found.first() {
let cf = crazyflie_lib::Crazyflie::connect_from_uri(
&link_context,
uri,
crazyflie_lib::NoTocCache
).await?;
println!("List of params variables: ");
for name in cf.param.names() {
println!(" - {}", name);
}
println!("List of log variables: ");
for name in cf.param.names() {
println!(" - {}", name);
}
cf.disconnect().await;
}Modules§
- subsystems
- Crazyflie subsystems
Structs§
- Crazyflie
- The Crazyflie
- NoToc
Cache - Null implementation of ToC cache to be used when no caching is needed.
Enums§
Constants§
- MAX_
SUPPORTED_ PROTOCOL_ VERSION - Maximum supported protocol version
- MIN_
SUPPORTED_ PROTOCOL_ VERSION - Minimum supported protocol version
Traits§
- TocCache
- A trait for caching Table of Contents (TOC) data.