Packages
grizzly
5.2.4
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/node_add_keys_report.ex
defmodule Grizzly.ZWave.Commands.NodeAddKeysReport do
@moduledoc """
Command to report the security keys requested by an including node if that
node is participating in S2 bootstrapping.
Params:
* `:seq_number` - the sequence number of the command (required)
* `:csa` - if the including node is doing client side authentication
(require)
* `:requested_keys` - a list of requested security keys see
`Grizzly.ZWave.Security` for more information. (required)
"""
@behaviour Grizzly.ZWave.Command
alias Grizzly.ZWave.{Command, Security}
alias Grizzly.ZWave.CommandClasses.NetworkManagementInclusion
@impl true
def new(params) do
# TODO validate params
command = %Command{
name: :node_add_keys_report,
command_byte: 0x11,
command_class: NetworkManagementInclusion,
params: params,
impl: __MODULE__
}
{:ok, command}
end
@impl true
def encode_params(command) do
seq_number = Command.param!(command, :seq_number)
csa = Command.param!(command, :csa)
requested_keys = Command.param!(command, :requested_keys)
<<seq_number, encode_csa(csa), encode_requested_keys(requested_keys)>>
end
@impl true
def decode_params(<<seq_number, csa, requested_keys>>) do
{:ok,
[
seq_number: seq_number,
csa: decode_csa(csa),
requested_keys: decode_requested_keys(requested_keys)
]}
end
def encode_csa(true), do: 0x01
def encode_csa(false), do: 0x00
def decode_csa(0x01), do: true
def decode_csa(0x00), do: false
def decode_requested_keys(requested_keys_mask), do: Security.byte_to_keys(requested_keys_mask)
def encode_requested_keys(requested_keys), do: Security.keys_to_byte(requested_keys)
end