lib/jeff/events/card_read.ex

defmodule Jeff.Events.CardRead do
  @moduledoc """
  Event that is triggered when readers receive input from card reads
  """

  @type t :: %__MODULE__{
          address: Jeff.osdp_address(),
          data: binary(),
          format: non_neg_integer(),
          length: non_neg_integer(),
          reader: non_neg_integer()
        }
  defstruct ~w[address data format length reader]a

  alias Jeff.Reply

  @spec from_reply(Reply.t()) :: t()
  def from_reply(%Reply{} = reply) do
    %__MODULE__{
      address: reply.address,
      data: reply.data.data,
      format: reply.data.format,
      length: reply.data.length,
      reader: reply.data.reader
    }
  end
end