Packages
grizzly
0.6.3
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/command_class/door_lock.ex
defmodule Grizzly.CommandClass.DoorLock do
@moduledoc """
Functions and types for working with data found found in the door lock command
class.
"""
@typedoc """
A type to represent the different door lock modes
- `:secured` - an alias to `0xFF`
- `:unsecured` - an alias to `0x00`
- `0x00` - unsecured
- `0x01` - unsecured with timeout
- `0x10` - unsecured inside door handles
- `0x11` - unsecured inside door handles with timeout
- `0x20` - unsecured for outside door handles
- `0x21` - unsecured for outside door handles with timeout
- `0xFF` - secured
"""
@type door_lock_mode :: :secured | :unsecured | door_lock_mode_byte()
@type door_lock_mode_byte :: 0x00 | 0x01 | 0x10 | 0x11 | 0x20 | 0x21 | 0xFF
@type decoded_mode :: :secured | :unsecured | 0x01 | 0x10 | 0x11 | 0x20 | 0x21
@modes [0x00, 0x01, 0x10, 0x11, 0x20, 0x21, 0xFF]
@spec encode_mode(door_lock_mode) :: door_lock_mode_byte() | {:error, :invalid_arg, any()}
def encode_mode(:secured), do: {:ok, 0xFF}
def encode_mode(:unsecured), do: {:ok, 0x00}
def encode_mode(door_lock_mode) when door_lock_mode in @modes, do: {:ok, door_lock_mode}
def encode_mode(arg), do: {:error, :invalid_arg, arg}
@spec decode_mode(door_lock_mode_byte) :: decoded_mode()
def decode_mode(0xFF), do: :secured
def decode_mode(0x00), do: :unsecured
def decode_mode(mode) when mode in @modes, do: mode
end