Raxol.Sensor.Fusion (Raxol v2.3.0)

View Source

Batches sensor readings and produces fused state.

Receives {:sensor_reading, reading} messages from Feed processes, accumulates them in a batch, and on a configurable timer flushes the batch through a pure fusion function. Subscribers receive {:fused_update, fused_state} on each flush.

Summary

Types

t()

@type t() :: %Raxol.Sensor.Fusion{
  batch: [Raxol.Sensor.Reading.t()],
  batch_ref: reference() | nil,
  batch_window_ms: pos_integer(),
  feeds: %{required(atom()) => pid()},
  fused_state: map(),
  subscribers: MapSet.t(pid()),
  thresholds: map()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get_fused_state(server \\ __MODULE__)

@spec get_fused_state(GenServer.server()) :: map()

register_feed(server \\ __MODULE__, sensor_id, feed_pid)

@spec register_feed(GenServer.server(), atom(), pid()) :: :ok

start_link(opts \\ [])

@spec start_link(keyword()) :: GenServer.on_start()

subscribe(server \\ __MODULE__)

@spec subscribe(GenServer.server()) :: :ok

unregister_feed(server \\ __MODULE__, sensor_id)

@spec unregister_feed(GenServer.server(), atom()) :: :ok