Current section
Files
Jump to
Current section
Files
lib/rpi_backlight.ex
defmodule RpiBacklight do
@moduledoc """
Simple Raspberry Pi backlight control (via sysfs).
"""
require Logger
@bl_power "/sys/class/backlight/rpi_backlight/bl_power"
@brightness "/sys/class/backlight/rpi_backlight/brightness"
@doc """
Turns off display backlight.
"""
@spec off :: :ok | {:error, :operation}
def off do
@bl_power
|> File.write("1")
|> handle_result()
end
@doc """
Turns on display backlight.
"""
@spec on :: :ok | {:error, :operation}
def on do
@bl_power
|> File.write("0")
|> handle_result()
end
@doc """
Sets display brightness. Level must be between 0 and 255.
"""
@spec brightness(integer()) :: :ok | {:error, :operation | :out_of_bound}
def brightness(level) when level < 0, do: {:error, :out_of_bound}
def brightness(level) when level > 255, do: {:error, :out_of_bound}
def brightness(level) when is_integer(level) do
@brightness
|> File.write(Integer.to_string(level))
|> handle_result()
end
defp handle_result(:ok), do: :ok
defp handle_result({:error, err}) do
Logger.warn("Got error #{inspect(err)} while trying to write to sysfs")
{:error, :operation}
end
end