diff --git a/.iex.exs b/.iex.exs index c93fe0b..0df3d89 100644 --- a/.iex.exs +++ b/.iex.exs @@ -25,11 +25,11 @@ defmodule Helpers do Utils.to_hex_string(tag[:epc]) |> String.replace(" ", "") end - def start_async_test(device \\ "/dev/ttyACM0", pulse_width \\ 100, period \\ 500, power \\ 2000) do + def start_async_test(device \\ "/dev/ttyACM0", on_time_ms \\ 100, off_time_ms \\ 400, power \\ 2000) do Logger.configure(level: :info) reader = - case Reader.start_link(device: device) do + case Reader.start_link(device) do {:ok, pid} -> pid {:error, {:already_started, pid}} -> pid end @@ -37,7 +37,7 @@ defmodule Helpers do :ok = Reader.set_read_tx_power(reader, power) {:ok, listener} = Task.start_link(&print_tags_async/0) - Reader.read_async_start(reader, listener, pulse_width, period) + Reader.read_async_start(reader, listener, on_time_ms, off_time_ms) reader end diff --git a/lib/tm_mercury/reader.ex b/lib/tm_mercury/reader.ex index 91c3e21..b8a1c0d 100644 --- a/lib/tm_mercury/reader.ex +++ b/lib/tm_mercury/reader.ex @@ -294,12 +294,12 @@ defmodule TM.Mercury.Reader do Start a process and open a connection with the reader over UART connected via TTL / USB - ## Options - - The reader requires the following keys: + The reader requires the following parameters: * `device` - the device file for the reader serial connection. + ## Optional Parameters + The following keys are optional: * `speed` - the serial port speed. Defaults to `115200`. @@ -327,9 +327,8 @@ defmodule TM.Mercury.Reader do * `:max_save` * `:sleep` """ - @spec start_link(keyword) :: {:ok, pid} | error - def start_link(opts) do - device = opts[:device] + @spec start_link(String.t, keyword) :: {:ok, pid} | error + def start_link(device, opts \\ []) do name = Path.basename(device) |> String.to_atom GenServer.start_link(__MODULE__, {device, opts}, name: name) end @@ -338,9 +337,9 @@ defmodule TM.Mercury.Reader do Logger.debug "Starting RFID reader process for #{device} with pid #{inspect self()}" # Pass this subset of options along to the transport process - ts_opts = Keyword.take(opts, [:device, :speed, :timeout, :framing]) + ts_opts = Keyword.take(opts, [:speed, :timeout, :framing]) - case Connection.start_link(Transport, {self(), ts_opts}) do + case Connection.start_link(Transport, {device, self(), ts_opts}) do {:ok, ts} -> new_reader = struct(%__MODULE__{}, opts) diff --git a/lib/tm_mercury/transport.ex b/lib/tm_mercury/transport.ex index 8f178cb..d6c00b5 100644 --- a/lib/tm_mercury/transport.ex +++ b/lib/tm_mercury/transport.ex @@ -45,12 +45,12 @@ defmodule TM.Mercury.Transport do # Connection API - def init({owner, opts}) do + def init({device, owner, opts}) do opts = Keyword.merge(@defaults, opts) {:ok, uart} = Nerves.UART.start_link s = %{ - device: opts[:device], + device: device, opts: opts, uart: uart, owner: owner, diff --git a/test/reader_test.exs b/test/reader_test.exs index 07a6b7b..1553ecc 100644 --- a/test/reader_test.exs +++ b/test/reader_test.exs @@ -4,7 +4,7 @@ defmodule TM.Mercury.ReaderTest do alias TM.Mercury.{Reader, SimpleReadPlan, StopTriggerReadPlan} setup_all do - {:ok, pid} = Reader.start_link(device: "/dev/ttyACM0", speed: 115200) + {:ok, pid} = Reader.start_link("/dev/ttyACM0", speed: 115200) {:ok, %{pid: pid}} end