Packages

Interact with Linux framebuffers

Current section

Files

Jump to
framebuffer lib framebuffer.ex
Raw

lib/framebuffer.ex

defmodule Framebuffer do
@moduledoc """
Abstraction over Linux framebuffer devices.
## Linux headers
- [linux/fb.h](https://github.com/torvalds/linux/blob/master/include/linux/fb.h)
- [uapi/linux/fb.h](https://github.com/torvalds/linux/blob/master/include/uapi/linux/fb.h)
## Linux documentation
- [fb device API](https://github.com/torvalds/linux/blob/5bfc75d92efd494db37f5c4c173d3639d4772966/Documentation/fb/api.rst)
- [fb driver API](https://github.com/torvalds/linux/blob/master/Documentation/driver-api/frame-buffer.rst)
"""
defstruct [
:ref,
:fix_screeninfo,
:var_screeninfo
]
@type t() :: %__MODULE__{
ref: reference(),
fix_screeninfo: Framebuffer.Screeninfo.Fix.t(),
var_screeninfo: Framebuffer.Screeninfo.Var.t()
}
@type device_t() :: Path.t()
@doc """
Opens a framebuffer device and returns an `:ok` tuple with a `t:Framebuffer.t/0`
including fixed and variable device information and a reference to an open
file descriptor. This file descriptor is kept open for the lifetime of the
reference.
## Arguments
| parameter | required | default |
| --------- | -------- | -------- |
| device | false | /dev/fb0 |
"""
@spec open(device_t()) :: {:ok, Framebuffer.t()} | {:error, term()}
def open(device \\ "/dev/fb0"), do: Framebuffer.NIF.open(device)
@doc """
Given an open framebuffer, refresh its fixed and variable device information.
## Arguments
| parameter | required | default |
| ----------- | -------- | ------- |
| framebuffer | true | |
"""
@spec info(Framebuffer.t()) :: {:ok, Framebuffer.t()} | {:error, term()}
def info(framebuffer), do: Framebuffer.NIF.info(framebuffer)
end