Current section

Files

Jump to
grizzly lib grizzly node_id.ex
Raw

lib/grizzly/node_id.ex

defmodule Grizzly.NodeId do
@moduledoc false
@doc "Returns true if the given value is a valid classic Z-Wave node ID"
defguard is_classic_node_id(node_id)
when is_integer(node_id) and node_id >= 0 and node_id <= 232
@doc "Returns true if the given value is a valid Z-Wave Long Range node ID"
defguard is_long_range_node_id(node_id)
when is_integer(node_id) and node_id > 255 and node_id <= 4000
@doc "Returns true if the given value is a valid Z-Wave node ID (classic or long range)"
defguard is_zwave_node_id(node_id)
when is_classic_node_id(node_id) or is_long_range_node_id(node_id)
@doc "Returns true if the given value is a virtual node ID"
defguard is_virtual_node_id(node_id)
when is_tuple(node_id) and tuple_size(node_id) == 2 and elem(node_id, 0) == :virtual and
is_integer(elem(node_id, 1))
@doc "Returns true if the given value is a valid node ID (classic, long range, or virtual)"
defguard is_node_id(node_id) when is_zwave_node_id(node_id) or is_virtual_node_id(node_id)
end