Drone.Error (ex_drone v0.1.0)

View Source

Error types and helpers for ex_drone.

All errors in ex_drone follow explicit tuple conventions:

  • {:error, reason} for simple errors
  • {:error, :safety, reason} for safety rejections
  • {:error, :invalid_command, details} for command validation errors

Summary

Functions

Creates an adapter error tuple.

Checks if an error is an adapter error.

Creates an invalid command error tuple.

Checks if an error is an invalid command error.

Extracts the reason from any error tuple.

Creates a safety error tuple.

Checks if an error is a safety error.

Types

adapter_reason()

@type adapter_reason() ::
  :timeout
  | :connection_error
  | :command_error
  | :not_in_sdk_mode
  | :not_flying
  | :already_flying
  | :emergency_active
  | :simulated_failure

command_reason()

@type command_reason() ::
  :invalid_direction
  | :invalid_distance
  | :invalid_rotation
  | :invalid_degrees
  | :invalid_speed
  | :invalid_flip_direction
  | :invalid_query_type

reason()

@type reason() :: safety_reason() | adapter_reason() | command_reason() | term()

safety_reason()

@type safety_reason() ::
  :command_not_allowed
  | :not_in_sdk_mode
  | :not_flying
  | :already_flying
  | :emergency_active
  | :max_altitude
  | :max_distance
  | :low_battery
  | :geofence_violation
  | :dangerous_without_prop_guards
  | :invalid_distance
  | :invalid_degrees
  | :invalid_speed
  | :invalid_seconds

Functions

adapter(reason)

@spec adapter(adapter_reason()) :: {:error, adapter_reason()}

Creates an adapter error tuple.

adapter_error?(arg1)

@spec adapter_error?(term()) :: boolean()

Checks if an error is an adapter error.

invalid_command(reason)

@spec invalid_command(command_reason()) ::
  {:error, :invalid_command, command_reason()}

Creates an invalid command error tuple.

invalid_command_error?(arg1)

@spec invalid_command_error?(term()) :: boolean()

Checks if an error is an invalid command error.

reason(arg)

@spec reason(
  {:error, atom()}
  | {:error, :safety, atom()}
  | {:error, :invalid_command, atom()}
) ::
  atom()

Extracts the reason from any error tuple.

safety(reason)

@spec safety(safety_reason()) :: {:error, :safety, safety_reason()}

Creates a safety error tuple.

safety_error?(arg1)

@spec safety_error?(term()) :: boolean()

Checks if an error is a safety error.