Current section

Files

Jump to
circuits_i2c lib i2c i2c_nif.ex
Raw

lib/i2c/i2c_nif.ex

defmodule Circuits.I2C.Nif do
@moduledoc false
defp load_nif() do
nif_binary = Application.app_dir(:circuits_i2c, "priv/i2c_nif")
:erlang.load_nif(to_charlist(nif_binary), 0)
end
def open(device) do
with :ok <- load_nif() do
apply(__MODULE__, :open, [device])
end
end
def read(_ref, _address, _count, _retries), do: :erlang.nif_error(:nif_not_loaded)
def write(_ref, _address, _data, _retries), do: :erlang.nif_error(:nif_not_loaded)
def write_read(_ref, _address, _write_data, _read_count, _retries),
do: :erlang.nif_error(:nif_not_loaded)
def close(_ref), do: :erlang.nif_error(:nif_not_loaded)
def info() do
:ok = load_nif()
apply(__MODULE__, :info, [])
end
end