View Source Fledex.LedsDriver (fledex v0.2.0)
This module defines a GenServer that manages the LED strip (be it a real one with the SpiDriver or a virtual one with e.g. the KinoDriver). Usually you only want to start one server, even though it is possible to start several. The LedsDriver will take several Leds definitions and merge them together to be displayed on a single LED strip The role the LedsDriver plays is similar to the one a window server plays on a normal computer
Summary
Types
@type t() :: %{ strip_name: atom(), timer: %{ disabled: boolean(), counter: pos_integer(), update_timeout: pos_integer(), update_func: (t() -> t()), only_dirty_update: boolean(), is_dirty: boolean(), ref: reference() }, led_strip: %{merge_strategy: atom(), driver_modules: module(), config: map()}, namespaces: map() }
Functions
@spec apply_merge_strategy([Fledex.Color.Types.colorint()], atom()) :: Fledex.Color.Types.rgb()
@spec extend([Fledex.Color.Types.colorint()], pos_integer()) :: [ Fledex.Color.Types.colorint() ]
@spec get_leds(map()) :: [[Fledex.Color.Types.colorint()]]
@spec match_length([[Fledex.Color.Types.colorint()]]) :: [ [Fledex.Color.Types.colorint()] ]
@spec merge_leds([[Fledex.Color.Types.colorint()]], atom()) :: [ Fledex.Color.Types.colorint() ]
@spec merge_namespaces(map(), atom()) :: [Fledex.Color.Types.colorint()]
@spec merge_pixels([Fledex.Color.Types.colorint()], atom()) :: Fledex.Color.Types.colorint()
@spec reinit_drivers(atom()) :: :ok
@spec set_leds(atom(), atom(), [pos_integer()]) :: :ok | {:error, String.t()}