Drone. Adapters. Crazyflie. Transport. Crazyradio
(ex_drone v0.3.0)
View Source
Crazyradio PA / Crazyradio 2.0 transport.
Implements documented USB vendor setup and bulk EP1 send/ACK receive.
Requires a usb_backend module implementing Drone.Adapters.Crazyflie.USB.
When the URI enables SafeLink (?safelink=1), open negotiates SafeLink and
stamps alternating uplink/downlink bits on every CRTP frame.
After Session subscribes to CRTP logging, telemetry/1 reports cached
battery percent and estimator readiness from log-data ACK payloads.
Examples
{:ok, state} =
Drone.Adapters.Crazyflie.Transport.Crazyradio.open(
uri: "radio://0/80/2M",
usb_backend: MyApp.CrazyradioUSB
)
{:ok, ack, state} =
Drone.Adapters.Crazyflie.Transport.Crazyradio.send(
state,
Drone.Adapters.Crazyflie.CRTP.null_packet()
)
:ok = Drone.Adapters.Crazyflie.Transport.Crazyradio.close(state)
Summary
Functions
Closes the USB device via the configured backend.
Opens a Crazyradio USB device, configures RF, and optionally enables SafeLink.
Encodes a CRTP packet, optionally SafeLink-stamps it, and exchanges an ACK.
Returns cached battery / estimator values from CRTP logging.
Types
@type t() :: %Drone.Adapters.Crazyflie.Transport.Crazyradio{ backend: module(), battery: 0..100 | nil, estimator_ready: boolean() | nil, log_block_id: byte() | nil, log_layout: [Drone.Adapters.Crazyflie.Logging.layout_entry()] | nil, safelink_down: 0 | 1, safelink_enabled: boolean(), safelink_up: 0 | 1, uri: Drone.Adapters.Crazyflie.LinkURI.t(), usb: term() }
Open Crazyradio transport state.
| Field | Type | Meaning |
|---|---|---|
:usb | device handle | Opaque USB handle |
:backend | module() | Drone.Adapters.Crazyflie.USB implementation |
:uri | LinkURI.t() | Parsed radio URI |
:safelink_enabled | boolean() | SafeLink negotiated successfully |
:safelink_up | 0 | 1 | Alternating uplink counter |
:safelink_down | 0 | 1 | Alternating downlink counter |
:log_layout | layout | nil | Active log-block decode layout |
:log_block_id | byte() | nil | Active log block id |
:battery | 0..100 | nil | Last logged battery percent |
:estimator_ready | boolean() | nil | Last logged sys.canfly |
Functions
Closes the USB device via the configured backend.
Opens a Crazyradio USB device, configures RF, and optionally enables SafeLink.
Encodes a CRTP packet, optionally SafeLink-stamps it, and exchanges an ACK.
On ACK, advances SafeLink counters and ingests logging data payloads into the transport telemetry cache.
Returns cached battery / estimator values from CRTP logging.
Fields stay nil until configure_logging/3 succeeds and at least one
log-data packet has been received on an ACK.