Current section

Files

Jump to
grizzly lib grizzly zwave command_classes door_lock.ex
Raw

lib/grizzly/zwave/command_classes/door_lock.ex

defmodule Grizzly.ZWave.CommandClasses.DoorLock do
@moduledoc """
DoorLock Command Class
This command class provides commands that are used to operate and configure
door lock devices
"""
@behaviour Grizzly.ZWave.CommandClass
alias Grizzly.ZWave.DecodeError
@type mode ::
:unsecured
| :unsecured_with_timeout
| :unsecured_inside_door_handles
| :unsecured_inside_door_handles_with_timeout
| :unsecured_outside_door_handles
| :unsecured_outside_door_handles_with_timeout
| :secured
| :unknown
@impl true
def byte(), do: 0x62
@impl true
def name(), do: :door_lock
@spec mode_to_byte(mode()) :: byte()
def mode_to_byte(:unsecured), do: 0x00
def mode_to_byte(:unsecured_with_timeout), do: 0x01
def mode_to_byte(:unsecured_inside_door_handles), do: 0x10
def mode_to_byte(:unsecured_inside_door_handles_with_timeout), do: 0x11
def mode_to_byte(:unsecured_outside_door_handles), do: 0x20
def mode_to_byte(:unsecured_outside_door_handles_with_timeout), do: 0x21
def mode_to_byte(:secured), do: 0xFF
# version >= 4
def mode_to_byte(:unknown), do: 0xFE
@spec mode_from_byte(byte()) :: {:ok, mode()} | {:error, DecodeError.t()}
def mode_from_byte(0x00), do: {:ok, :unsecured}
def mode_from_byte(0x01), do: {:ok, :unsecured_with_timeout}
def mode_from_byte(0x10), do: {:ok, :unsecured_inside_door_handles}
def mode_from_byte(0x11), do: {:ok, :unsecured_inside_door_handles_with_timeout}
def mode_from_byte(0x20), do: {:ok, :unsecured_outside_door_handles}
def mode_from_byte(0x21), do: {:ok, :unsecured_outside_door_handles_with_timeout}
def mode_from_byte(0xFF), do: {:ok, :secured}
# version >= 4
def mode_from_byte(0xFE), do: {:ok, :unknown}
def mode_from_byte(byte),
do: {:error, %DecodeError{value: byte, param: :mode, command: :operation_set}}
end