View Source Grizzly.ZWave.Command behaviour (grizzly v4.0.0)

Data struct and behaviour for working with Z-Wave commands

Link to this section Summary

Callbacks

Decode the binary string of command params

Encode the command parameters

Encode the command parameters with encoding options

Make a new Command.t() from the params provided

Functions

Just like param/3 but will raise if the the param is not in the param list

Get the command param value out the params list

Put the param value into the params list, updating pervious value if there is one

Encode the Command.t() into it's binary representation

Link to this section Types

@type delay_seconds() :: non_neg_integer()
@type params() :: Keyword.t()
@type t() :: %Grizzly.ZWave.Command{
  command_byte: byte() | nil,
  command_class: Grizzly.ZWave.CommandClass.t(),
  impl: module(),
  name: atom(),
  params: params()
}

Command struct

  • :name - the name of the command
  • :command_class - the command class module for the command
  • :command_byte - the byte representation of the command
  • :params - the parameters for the command as outlined by the Z-Wave specification
  • :impl - the module that implements the Command behaviour

Link to this section Callbacks

@callback decode_params(binary()) ::
  {:ok, keyword()} | {:error, Grizzly.ZWave.DecodeError.t()}

Decode the binary string of command params

@callback encode_params(t()) :: binary()

Encode the command parameters

Link to this callback

encode_params(t, opts)

View Source (optional)
@callback encode_params(t(), opts :: keyword()) :: binary()

Encode the command parameters with encoding options

The encoding options help pass extra context to how the parameters for the command should be encoded.

This is an optional callback.

@callback new(params :: keyword()) :: {:ok, t()} | {:error, reason :: any()}

Make a new Command.t() from the params provided

Param validation should take place here.

Link to this section Functions

@spec encode_params(t()) :: binary()
@spec param!(t(), atom()) :: term() | no_return()

Just like param/3 but will raise if the the param is not in the param list

Link to this function

param(command, param, default \\ nil)

View Source
@spec param(t(), atom(), term()) :: term() | nil

Get the command param value out the params list

Link to this function

put_param(command, param, new_value)

View Source
@spec put_param(t(), atom(), any()) :: t()

Put the param value into the params list, updating pervious value if there is one

@spec to_binary(t()) :: binary()

Encode the Command.t() into it's binary representation