Packages
Sensor fusion framework for Elixir built on OTP. Poll sensors, buffer readings, fuse with weighted averaging and thresholds, and render HUD widgets (gauges, sparklines, threat indicators). Optional Nx backend.
Current section
Files
Jump to
Current section
Files
lib/raxol/sensor/behaviour.ex
defmodule Raxol.Sensor.Reading do
@moduledoc """
A timestamped sensor reading with quality indicator.
"""
@type t :: %__MODULE__{
sensor_id: atom(),
timestamp: integer(),
values: map(),
quality: float(),
metadata: map()
}
@enforce_keys [:sensor_id, :timestamp, :values]
defstruct sensor_id: nil,
timestamp: 0,
values: %{},
quality: 1.0,
metadata: %{}
end
defmodule Raxol.Sensor.Behaviour do
@moduledoc """
Behaviour for sensor implementations.
Sensors produce readings at a configurable sample rate. Each reading
contains timestamped values with a quality indicator.
"""
alias Raxol.Sensor.Reading
@callback connect(opts :: keyword()) :: {:ok, term()} | {:error, term()}
@callback read(state :: term()) ::
{:ok, Reading.t(), term()} | {:error, term()}
@callback disconnect(state :: term()) :: :ok
@doc "Sample rate in milliseconds. Defaults to 100ms."
@callback sample_rate() :: pos_integer()
@optional_callbacks [sample_rate: 0]
end