Packages
grizzly
6.7.0
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/command_classes/powerlevel.ex
defmodule Grizzly.ZWave.CommandClasses.Powerlevel do
@moduledoc """
"Powerlevel" Command Class
The Powerlevel Command Class defines RF transmit power controlling Commands useful when
installing or testing a network. The Commands makes it possible for supporting controllers to set/get
the RF transmit power level of a node and test specific links between nodes with a specific RF transmit
power level.
"""
@behaviour Grizzly.ZWave.CommandClass
alias Grizzly.ZWave.DecodeError
@type power_level ::
:normal_power
| :minus1dBm
| :minus2dBm
| :minus3dBm
| :minus4dBm
| :minus5dBm
| :minus6dBm
| :minus7dBm
| :minus8dBm
| :minus9dBm
@type status_of_operation :: :test_failed | :test_success | :test_in_progress
@impl true
def byte(), do: 0x73
@impl true
def name(), do: :powerlevel
def power_level_to_byte(:normal_power), do: 0x00
def power_level_to_byte(:minus1dBm), do: 0x01
def power_level_to_byte(:minus2dBm), do: 0x02
def power_level_to_byte(:minus3dBm), do: 0x03
def power_level_to_byte(:minus4dBm), do: 0x04
def power_level_to_byte(:minus5dBm), do: 0x05
def power_level_to_byte(:minus6dBm), do: 0x06
def power_level_to_byte(:minus7dBm), do: 0x07
def power_level_to_byte(:minus8dBm), do: 0x08
def power_level_to_byte(:minus9dBm), do: 0x09
def power_level_from_byte(0x00), do: {:ok, :normal_power}
def power_level_from_byte(0x01), do: {:ok, :minus1dBm}
def power_level_from_byte(0x02), do: {:ok, :minus2dBm}
def power_level_from_byte(0x03), do: {:ok, :minus3dBm}
def power_level_from_byte(0x04), do: {:ok, :minus4dBm}
def power_level_from_byte(0x05), do: {:ok, :minus5dBm}
def power_level_from_byte(0x06), do: {:ok, :minus6dBm}
def power_level_from_byte(0x07), do: {:ok, :minus7dBm}
def power_level_from_byte(0x08), do: {:ok, :minus8dBm}
def power_level_from_byte(0x09), do: {:ok, :minus9dBm}
def power_level_from_byte(byte), do: {:error, %DecodeError{value: byte, param: :power_level}}
def status_of_operation_to_byte(:test_failed), do: 0x00
def status_of_operation_to_byte(:test_success), do: 0x01
def status_of_operation_to_byte(:test_in_progress), do: 0x02
def status_of_operation_from_byte(0x00), do: {:ok, :test_failed}
def status_of_operation_from_byte(0x01), do: {:ok, :test_success}
def status_of_operation_from_byte(0x02), do: {:ok, :test_in_progress}
def status_of_operation_from_byte(byte),
do: {:error, %DecodeError{value: byte, param: :status_of_operation}}
end