defmodule NervesBackdoor.Reset do
use GenServer
def start_link(_opts \\ []) do
init_args = []
GenServer.start_link(__MODULE__, init_args, name: :nbd_reset)
end
@impl true
def init(_args) do
io = NervesBackdoor.io_btn()
{:ok, gpio} = NervesBackdoor.Gpio.io_input(io)
:ok = NervesBackdoor.Gpio.io_rising(gpio)
{:ok, gpio}
end
@impl true
def terminate(_reason, gpio) do
:ok = NervesBackdoor.Gpio.io_close(gpio)
end
@impl true
def handle_info({:circuits_gpio, _, _, _}, gpio) do
NervesBackdoor.pass_reset()
{:noreply, gpio}
end
end