Skip to content

Commit

Permalink
Add function to reset a relay board
Browse files Browse the repository at this point in the history
  • Loading branch information
adriankumpf committed Apr 8, 2018
1 parent 44aa5a2 commit dd5ee01
Show file tree
Hide file tree
Showing 8 changed files with 38 additions and 127 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Add `:arb` to your list of dependencies:
```elixir
def deps do
[
{:arb, "~> 0.1.0"}
{:arb, "~> 0.2.0"}
]
end
```
Expand Down
14 changes: 14 additions & 0 deletions lib/arb.ex
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,18 @@ defmodule Arb do
def get_active(port \\ nil)
def get_active(port) when is_integer(port) or is_nil(port), do: Native.get_active(port)
def get_active(_port), do: {:error, :invalid_args}

@doc """
Resets the relay board.
## Examples
iex> Arb.reset()
:ok
"""
@spec reset(integer) :: {:ok, list(integer)} | {:error, atom}
def reset(port \\ nil)
def reset(port) when is_integer(port) or is_nil(port), do: Native.reset(port)
def reset(_port), do: {:error, :invalid_args}
end
2 changes: 2 additions & 0 deletions lib/arb/native.ex
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,7 @@ defmodule Arb.Native do

def get_active(_port), do: error()

def reset(_port), do: error()

defp error, do: :erlang.nif_error(:nif_not_loaded)
end
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule Arb.MixProject do
def project do
[
app: :arb,
version: "0.1.0",
version: "0.2.0",
elixir: "~> 1.6",
start_permanent: Mix.env() == :prod,
compilers: [:rustler] ++ Mix.compilers(),
Expand Down
2 changes: 2 additions & 0 deletions native/arb/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/target/
**/*.rs.bk
129 changes: 6 additions & 123 deletions native/arb/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion native/arb/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ crate-type = ["dylib"]
rustler = "0.16.0"
rustler_codegen = "0.16.0"
lazy_static = "0.2"
arb = { git = "https://github.com/adriankumpf/abacom-relay-board", tag = 'v0.1.0' }
arb = { git = "https://github.com/adriankumpf/abacom-relay-board", tag = 'v0.2.0' }
12 changes: 11 additions & 1 deletion native/arb/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,21 @@ fn get_active<'a>(env: NifEnv<'a>, args: &[NifTerm<'a>]) -> NifResult<NifTerm<'a
Ok((atoms::ok(), active_relays).encode(env))
}

fn reset<'a>(env: NifEnv<'a>, args: &[NifTerm<'a>]) -> NifResult<NifTerm<'a>> {
let port: Option<u8> = args[0].decode()?;

match arb::reset(port) {
Err(err) => return Ok(arb_error_to_term(env, err)),
Ok(()) => Ok(atoms::ok().encode(env)),
}
}

rustler_export_nifs! {
"Elixir.Arb.Native",
[
("activate", 2, activate),
("get_active", 1, get_active)
("get_active", 1, get_active),
("reset", 1, reset)
],
None
}

0 comments on commit dd5ee01

Please sign in to comment.