# `Grizzly.ZWave.DeviceClasses`
[🔗](https://github.com/smartrent/grizzly/blob/v9.1.4/lib/grizzly/zwave/device_classes.ex#L1)

Z-Wave device classes

# `basic_device_class`

```elixir
@type basic_device_class() :: atom()
```

# `generic_device_class`

```elixir
@type generic_device_class() :: atom()
```

# `specific_device_class`

```elixir
@type specific_device_class() :: atom()
```

# `decode_basic`

```elixir
@spec decode_basic(byte()) :: basic_device_class() | :unknown
```

Try to make a basic device class from a byte

# `decode_generic`

```elixir
@spec decode_generic(byte()) :: generic_device_class() | :unknown
```

Try to get the generic device class for the byte

# `decode_specific`

```elixir
@spec decode_specific(generic_device_class(), byte()) ::
  specific_device_class() | :unknown
```

Try to get the specific device class from the byte given the generic device class

# `encode_basic`

```elixir
@spec encode_basic(basic_device_class()) :: byte()
```

Make a byte from a device class

# `encode_generic`

```elixir
@spec encode_generic(generic_device_class()) :: byte()
```

Turn the generic device class into a byte

# `encode_specific`

```elixir
@spec encode_specific(generic_device_class(), specific_device_class()) :: byte()
```

Make the specific device class into a byte

---

*Consult [api-reference.md](api-reference.md) for complete listing*
