Drone. Adapters. Crazyflie. LinkURI
(ex_drone v0.3.0)
View Source
Parses Crazyflie link URIs.
Supported forms:
radio://0/80/2M/E7E7E7E7E7
radio://0/80/2M
mock://default
mock://readyOptional query parameters: safelink=0|1, timeout=<ms>.
Examples
{:ok, uri} = Drone.Adapters.Crazyflie.LinkURI.parse("radio://0/80/2M")
:radio = uri.scheme
80 = uri.channel
:rate_2m = uri.datarate
Summary
Functions
Parses a URI string into a structured map.
Types
@type t() :: %{ scheme: :radio | :mock, radio_index: non_neg_integer() | nil, channel: 0..125 | nil, datarate: :rate_250k | :rate_1m | :rate_2m | nil, address: binary() | nil, mock_profile: atom() | nil, safelink: boolean(), timeout_ms: pos_integer() }
Parsed link URI used by Crazyflie transports.
| Field | Type | Meaning |
|---|---|---|
:scheme | :radio | :mock | Transport family |
:radio_index | non_neg_integer() | nil | Crazyradio device index (radio://) |
:channel | 0..125 | nil | RF channel (radio://) |
:datarate | :rate_250k | :rate_1m | :rate_2m | nil | Radio data rate |
:address | binary() | nil | 5-byte radio address (default E7E7E7E7E7) |
:mock_profile | atom() | nil | Mock profile (:ready, :low_battery, …) |
:safelink | boolean() | SafeLink framing (default false; enable with ?safelink=1) |
:timeout_ms | pos_integer() | USB/IO timeout in milliseconds (default 1000) |
Examples
%{
scheme: :radio,
radio_index: 0,
channel: 80,
datarate: :rate_2m,
address: <<0xE7, 0xE7, 0xE7, 0xE7, 0xE7>>,
mock_profile: nil,
safelink: false,
timeout_ms: 1000
}
%{
scheme: :mock,
mock_profile: :ready,
radio_index: nil,
channel: nil,
datarate: nil,
address: nil,
safelink: false,
timeout_ms: 500
}
Functions
Parses a URI string into a structured map.
Parameters
uri(String.t()) — for example"radio://0/80/2M"or"mock://ready?timeout=500"
Returns
{:ok, t()}— parsed URI{:error, term()}— common reasons::unsupported_scheme,:invalid_uri:missing_radio_index,:invalid_radio_index:missing_channel,:invalid_channel:invalid_datarate,:invalid_address,:invalid_address_length:invalid_safelink,:invalid_timeout
Examples
{:ok, %{scheme: :mock, mock_profile: :ready}} =
Drone.Adapters.Crazyflie.LinkURI.parse("mock://ready")
{:ok, %{channel: 80, safelink: false, timeout_ms: 2000}} =
Drone.Adapters.Crazyflie.LinkURI.parse(
"radio://0/80/2M?safelink=0&timeout=2000"
)
{:error, :unsupported_scheme} =
Drone.Adapters.Crazyflie.LinkURI.parse("usb://0")