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

Types

t()

Open Crazyradio transport state.

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

t()

@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.

FieldTypeMeaning
:usbdevice handleOpaque USB handle
:backendmodule()Drone.Adapters.Crazyflie.USB implementation
:uriLinkURI.t()Parsed radio URI
:safelink_enabledboolean()SafeLink negotiated successfully
:safelink_up0 | 1Alternating uplink counter
:safelink_down0 | 1Alternating downlink counter
:log_layoutlayout | nilActive log-block decode layout
:log_block_idbyte() | nilActive log block id
:battery0..100 | nilLast logged battery percent
:estimator_readyboolean() | nilLast logged sys.canfly

Functions

close(crazyradio)

Closes the USB device via the configured backend.

open(opts)

Opens a Crazyradio USB device, configures RF, and optionally enables SafeLink.

send(state, packet)

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.

telemetry(state)

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.