defmodule Grizzly.ZWave.CommandClasses.ApplicationStatus do
@moduledoc """
"ApplicationStatus" Command Class
This command class is used by devices to report an exceptional status for a received command request (try later or rejected.)
"""
@behaviour Grizzly.ZWave.CommandClass
alias Grizzly.ZWave.DecodeError
@type status :: :try_again_later | :try_again_after_wait | :request_queued
@impl true
def byte(), do: 0x22
@impl true
def name(), do: :application_status
def status_to_byte(:try_again_later), do: 0x00
def status_to_byte(:try_again_after_wait), do: 0x01
def status_to_byte(:request_queued), do: 0x02
def status_from_byte(0x00), do: {:ok, :try_again_later}
def status_from_byte(0x01), do: {:ok, :try_again_after_wait}
def status_from_byte(0x02), do: {:ok, :request_queued}
def status_from_byte(byte), do: {:error, %DecodeError{value: byte, param: :status}}
end