defmodule Grizzly.ZWave.CommandClasses.NodeNaming do
@moduledoc """
"NodeNaming" Command Class
The Node Naming (and Location) Command Class is used to assign a name and a location text string to a
supporting node.
"""
@behaviour Grizzly.ZWave.CommandClass
alias Grizzly.ZWave.DecodeError
@impl true
def byte(), do: 0x77
@impl true
def name(), do: :node_naming
def encoding_to_byte(:ascii), do: 0x00
def encoding_to_byte(:extended_ascii), do: 0x01
def encoding_to_byte(:utf_16), do: 0x02
def encoding_from_byte(0x00), do: {:ok, :ascii}
def encoding_from_byte(0x01), do: {:ok, :extended_ascii}
def encoding_from_byte(0x02), do: {:ok, :utf_16}
def encoding_from_byte(byte),
do: {:error, %DecodeError{value: byte, param: :encoding, command: :node_name_set}}
end