Drone. Telemetry
(ex_drone v0.3.0)
View Source
Telemetry event helpers for ex_drone.
Emits standard Elixir :telemetry events for vehicle and swarm lifecycle.
Event names follow [:drone, namespace, action].
Attach handlers with :telemetry.attach/4 or :telemetry.attach_many/4.
Vehicle events
[:drone, :connect, :start | :stop | :error][:drone, :disconnect][:drone, :command, :start | :stop | :error][:drone, :safety, :reject | :warning][:drone, :telemetry, :update][:drone, :emergency]
Swarm events
[:drone, :swarm, :start | :stop][:drone, :swarm, :command, :start | :stop | :error][:drone, :swarm, :emergency]
Example
:telemetry.attach(
"drone-logger",
[:drone, :command, :stop],
fn _event, measurements, metadata, _config ->
IO.inspect({measurements.command, metadata.name})
end,
nil
)
Summary
Functions
Emits [:drone, :command, :error] when the adapter fails.
Emits [:drone, :command, :start] after safety approval.
Emits [:drone, :command, :stop] on success.
Emits [:drone, :connect, :error].
Emits [:drone, :connect, :start].
Emits [:drone, :connect, :stop] after a successful connect.
Emits [:drone, :disconnect].
Emits [:drone, :emergency] when an emergency stop is requested.
Emits [:drone, :safety, :reject].
Emits [:drone, :safety, :warning] when a command is allowed with warnings.
Emits [:drone, :swarm, :command, :error] on partial or plan failure.
Emits [:drone, :swarm, :command, :start] before a coordinated op.
Emits [:drone, :swarm, :command, :stop] after a successful coordinated op.
Emits [:drone, :swarm, :emergency] when swarm-wide emergency is requested.
Emits [:drone, :swarm, :start] when a swarm coordinator starts.
Emits [:drone, :swarm, :stop] when a swarm coordinator terminates.
Emits [:drone, :telemetry, :update] with pose / battery measurements.
Functions
@spec emit_command_error(atom(), atom(), atom(), atom(), non_neg_integer()) :: :ok
Emits [:drone, :command, :error] when the adapter fails.
Parameters
adapter(atom())name(atom())command_type(atom())reason(atom()|term())duration(non_neg_integer())
Returns
:ok
@spec emit_command_start(atom(), atom(), Drone.Command.t()) :: :ok
Emits [:drone, :command, :start] after safety approval.
Parameters
adapter(atom())name(atom())command(Drone.Command.t())
Returns
:ok
@spec emit_command_stop(atom(), atom(), atom(), atom(), non_neg_integer()) :: :ok
Emits [:drone, :command, :stop] on success.
Parameters
adapter(atom())name(atom())command_type(atom()) — e.g.:takeoffresult(atom()) — e.g.:ok,:dry_runduration(non_neg_integer())
Returns
:ok
Emits [:drone, :connect, :error].
Parameters
adapter(atom())name(atom())reason(term())
Returns
:ok
Emits [:drone, :connect, :start].
Parameters
adapter(atom()) — e.g.:sim,:telloname(atom()) — vehicle name
Returns
:ok
@spec emit_connect_stop(atom(), atom(), non_neg_integer()) :: :ok
Emits [:drone, :connect, :stop] after a successful connect.
Parameters
adapter(atom())name(atom())duration(non_neg_integer()) — monotonic time units
Returns
:ok
Emits [:drone, :disconnect].
Parameters
adapter(atom())name(atom())
Returns
:ok
Emits [:drone, :emergency] when an emergency stop is requested.
Parameters
adapter(atom())name(atom())
Returns
:ok
Emits [:drone, :safety, :reject].
Parameters
adapter(atom())name(atom())command_type(atom())reason(atom()) — e.g.:max_altitude,:low_battery
Returns
:ok
Emits [:drone, :safety, :warning] when a command is allowed with warnings.
Parameters
adapter(atom())name(atom())command_type(atom())warning(atom()) — e.g.:no_prop_guards
Returns
:ok
@spec emit_swarm_command_error( atom() | nil, [atom()], atom(), term(), non_neg_integer() ) :: :ok
Emits [:drone, :swarm, :command, :error] on partial or plan failure.
Parameters
swarm(atom() | nil)members([atom()])command(atom())reason(term()) — e.g.:partial,:separation_violationduration(non_neg_integer())
Returns
:ok
Emits [:drone, :swarm, :command, :start] before a coordinated op.
Parameters
swarm(atom() | nil)members([atom()])command(atom()) — e.g.:takeoff,:land,:run,:connect_sdk
Returns
:ok
@spec emit_swarm_command_stop(atom() | nil, [atom()], atom(), non_neg_integer()) :: :ok
Emits [:drone, :swarm, :command, :stop] after a successful coordinated op.
Parameters
swarm(atom() | nil)members([atom()])command(atom())duration(non_neg_integer())
Returns
:ok
Emits [:drone, :swarm, :emergency] when swarm-wide emergency is requested.
Parameters
swarm(atom() | nil)members([atom()])
Returns
:ok
Emits [:drone, :swarm, :start] when a swarm coordinator starts.
Parameters
swarm(atom() | nil) — registered swarm name, ornilif anonymousmembers([atom()]) — ordered member drone names
Returns
:ok
Example
Drone.Telemetry.emit_swarm_start(:advisors, [:good, :bad])
Emits [:drone, :swarm, :stop] when a swarm coordinator terminates.
Parameters
swarm(atom() | nil)members([atom()])reason(term(), optional) — OTP terminate reason (:normal,:shutdown, crash reason, etc.)
Returns
:ok
Emits [:drone, :telemetry, :update] with pose / battery measurements.
Parameters
adapter(atom())name(atom())telemetry(map()) — typically includes:x,:y,:z,:yaw,:battery
Returns
:ok