Current section

Files

Jump to
grizzly priv templates zwave.gen command.eex
Raw

priv/templates/zwave.gen/command.eex

defmodule <%= inspect command_module %> do
@moduledoc """
<%= command_module_short %><%= if params != [] do %>
<%!-- --%>
## Parameters
<%= for p <- params do %>
* `<%= inspect String.to_atom(elem(p, 0)) %>`<% end %><% end %>
"""
@behaviour Grizzly.ZWave.Command
alias Grizzly.ZWave.{Command, DecodeError}
alias <%= inspect command_class_module %>
<%= if params != [] do %>
@type param :: <%= Enum.map_join(params, " | ", &("{#{inspect String.to_atom(elem(&1, 0))}, #{elem(&1, 1)}}")) %>
<% end %>
@impl Grizzly.ZWave.Command<%= if params == [] do %>
@spec new(keyword()) :: {:ok, Command.t()}<% else %>
@spec new([param()]) :: {:ok, Command.t()}<% end %>
def new(params) do
command = %Command{
name: <%= inspect command_name %>,
command_byte: <%= command_id %>,
command_class: <%= inspect command_class_module_short %>,
params: params,
impl: __MODULE__
}
{:ok, command}
end
@impl Grizzly.ZWave.Command
@spec encode_params(Command.t()) :: binary()
def encode_params(_command) do
<<>>
end
@impl Grizzly.ZWave.Command<%= if params == [] do %>
@spec decode_params(binary()) :: {:ok, [keyword()]} | {:error, DecodeError.t()}<% else %>
@spec decode_params(binary()) :: {:ok, [param()]} | {:error, DecodeError.t()}<% end %>
def decode_params(_binary) do
{:ok, []}
end
end