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