Packages
grizzly
8.15.1
9.1.4
9.1.2
9.1.1
9.1.0
9.0.0
8.15.3
8.15.2
8.15.1
8.15.0
8.14.0
8.13.0
8.12.0
8.11.3
8.11.2
8.11.1
8.11.0
8.10.0
8.9.0
8.8.1
8.8.0
8.7.1
8.7.0
8.6.12
8.6.11
8.6.10
8.6.9
8.6.8
8.6.7
retired
8.6.6
8.6.5
8.6.4
8.6.3
8.6.2
8.6.1
8.6.0
8.5.3
8.5.2
8.5.1
8.5.0
8.4.0
8.3.0
8.2.3
8.2.2
8.2.1
8.2.0
8.1.0
8.0.1
8.0.0
7.4.3
7.4.2
7.4.1
7.4.0
7.3.0
7.2.0
7.1.4
7.1.3
7.1.2
7.1.1
7.1.0
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.8.8
6.8.7
6.8.6
6.8.5
6.8.4
6.8.3
6.8.2
6.8.1
6.8.0
6.7.1
6.7.0
6.6.1
6.6.0
6.5.1
6.5.0
6.4.0
6.3.0
6.2.0
6.1.1
6.1.0
6.0.1
6.0.0
5.4.1
5.4.0
5.3.0
5.2.8
5.2.7
5.2.6
5.2.5
5.2.4
5.2.3
5.2.2
5.2.1
5.2.0
5.1.2
5.1.1
5.1.0
5.0.2
5.0.1
5.0.0
4.0.1
4.0.0
3.0.0
2.1.0
2.0.0
1.0.1
1.0.0
0.22.7
0.22.6
0.22.5
0.22.4
0.22.3
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.1
0.19.0
0.18.3
0.18.2
0.18.1
0.18.0
0.17.7
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.9.0-rc.4
0.9.0-rc.3
0.9.0-rc.2
0.9.0-rc.1
0.9.0-rc.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
Elixir Z-Wave library
Current section
Files
Jump to
Current section
Files
lib/grizzly/zwave/commands/admin_pin_code_report.ex
defmodule Grizzly.ZWave.Commands.AdminPinCodeReport do
@moduledoc """
AdminPinCodeReport is used to report the admin code currently set at the sending node.
## Parameters
* `:result` - the result of the operation (required)
* `:code` - the admin code (required)
"""
@behaviour Grizzly.ZWave.Command
alias Grizzly.ZWave.{Command, DecodeError}
alias Grizzly.ZWave.CommandClasses.UserCredential
@type result ::
:modified
| :unmodified
| :response_to_get
| :duplicate
| :manufacturer_security_rules
| :admin_code_not_supported
| :deactivation_not_supported
| :unspecified_error
@type param :: {:result, result()} | {:code, binary()}
@impl Grizzly.ZWave.Command
@spec new([param()]) :: {:ok, Command.t()}
def new(params) do
command = %Command{
name: :admin_pin_code_report,
command_byte: 0x1C,
command_class: UserCredential,
params: params,
impl: __MODULE__
}
{:ok, command}
end
@impl Grizzly.ZWave.Command
@spec encode_params(Command.t()) :: binary()
def encode_params(command) do
result = Command.param!(command, :result)
code = Command.param!(command, :code) |> binary_slice(0, 15)
<<encode_result(result)::4, byte_size(code)::4, code::binary>>
end
@impl Grizzly.ZWave.Command
@spec decode_params(binary()) :: {:ok, [param()]} | {:error, DecodeError.t()}
def decode_params(<<result::4, length::4, code::binary-size(length)>>) do
{:ok,
[
result: decode_result(result),
code: code
]}
end
def encode_result(:modified), do: 0x01
def encode_result(:unmodified), do: 0x03
def encode_result(:response_to_get), do: 0x04
def encode_result(:duplicate), do: 0x07
def encode_result(:manufacturer_security_rules), do: 0x08
def encode_result(:admin_code_not_supported), do: 0x0D
def encode_result(:deactivation_not_supported), do: 0x0E
def encode_result(:unspecified_error), do: 0x0F
def decode_result(0x01), do: :modified
def decode_result(0x03), do: :unmodified
def decode_result(0x04), do: :response_to_get
def decode_result(0x07), do: :duplicate
def decode_result(0x08), do: :manufacturer_security_rules
def decode_result(0x0D), do: :admin_code_not_supported
def decode_result(0x0E), do: :deactivation_not_supported
def decode_result(0x0F), do: :unspecified_error
def decode_result(_), do: :unknown
end