Packages
grizzly
0.14.7
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/antitheft_unlock_report.ex
defmodule Grizzly.ZWave.Commands.AntitheftUnlockReport do
@moduledoc """
This command is used to advertise the current locked/unlocked state of the node with some additional
information.
Params:
* `:state` - This field MUST indicate the current :locked/:unlocked state of the device (required)
* `:restricted` - This boolean field indicates whether the node currently runs in restricted mode (required)
* `:manufacturer_id` - This field describes the Z-Wave Manufacturer ID of the company’s product that has locked the node (required)
* `:antitheft_hint` - This field is used as a 1 to 10 byte identifier or key value to help retriving the Magic Code (required)
* `:locking_entity_id` - This field specifies a unique Z-Wave Alliance identifier for the entity that has locked the node (required)
"""
@behaviour Grizzly.ZWave.Command
alias Grizzly.ZWave.Command
alias Grizzly.ZWave.CommandClasses.AntitheftUnlock
@type param ::
{:state, AntitheftUnlock.state()}
| {:restricted, boolean}
| {:manufacturer_id, non_neg_integer}
| {:antitheft_hint, String.t()}
| {:locking_entity_id, non_neg_integer}
@impl true
@spec new([param()]) :: {:ok, Command.t()}
def new(params) do
command = %Command{
name: :antitheft_unlock_report,
command_byte: 0x02,
command_class: AntitheftUnlock,
params: params,
impl: __MODULE__
}
{:ok, command}
end
@impl true
def encode_params(command) do
state_bit = Command.param!(command, :state) |> AntitheftUnlock.state_to_bit()
restricted? = Command.param!(command, :restricted)
restricted_bit = if restricted?, do: 1, else: 0
hint = Command.param!(command, :antitheft_hint) |> AntitheftUnlock.validate_hint()
manufacturer_id = Command.param!(command, :manufacturer_id)
locking_entity_id = Command.param!(command, :locking_entity_id)
<<0x00::size(2), byte_size(hint)::size(4), restricted_bit::size(1), state_bit::size(1)>> <>
hint <>
<<manufacturer_id::size(16), locking_entity_id::size(16)>>
end
@impl true
def decode_params(
<<_reserved::size(2), hint_length::size(4), restricted_bit::size(1), state_bit::size(1),
hint::binary-size(hint_length), manufacturer_id::size(16), locking_entity_id::size(16)>>
) do
state = AntitheftUnlock.state_from_bit(state_bit)
restricted? = restricted_bit == 1
{:ok,
[
state: state,
restricted: restricted?,
antitheft_hint: hint,
manufacturer_id: manufacturer_id,
locking_entity_id: locking_entity_id
]}
end
end