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

Command for sending Z-Wave commands via Z/IP

# `flag`

```elixir
@type flag() ::
  :ack_response
  | :ack_request
  | :nack_response
  | :nack_waiting
  | :nack_queue_full
  | :nack_option_error
  | :invalid
```

# `param`

```elixir
@type param() ::
  {:command, Grizzly.ZWave.Command.t() | nil}
  | {:flag, flag() | nil}
  | {:seq_number, Grizzly.ZWave.seq_number()}
  | {:source, Grizzly.ZWave.node_id()}
  | {:dest, Grizzly.ZWave.node_id()}
  | {:header_extensions,
     [Grizzly.ZWave.Commands.ZIPPacket.HeaderExtensions.extension()]}
  | {:secure, boolean()}
  | {:more_info, boolean()}
```

# `ack_response?`

```elixir
@spec ack_response?(Grizzly.ZWave.Command.t()) :: boolean()
```

# `command_name`

```elixir
@spec command_name(Grizzly.ZWave.Command.t()) :: atom() | nil
```

# `extension`

```elixir
@spec extension(Grizzly.ZWave.Command.t(), atom(), any()) :: any()
```

Get the extension by extension name

# `make_ack_response`

```elixir
@spec make_ack_response(
  Grizzly.ZWave.seq_number(),
  keyword()
) :: Grizzly.ZWave.Command.t()
```

# `make_nack_response`

```elixir
@spec make_nack_response(Grizzly.ZWave.seq_number()) :: Grizzly.ZWave.Command.t()
```

Make a `:nack_response`

# `make_nack_waiting_response`

```elixir
@spec make_nack_waiting_response(
  Grizzly.ZWave.seq_number(),
  seconds :: non_neg_integer()
) ::
  Grizzly.ZWave.Command.t()
```

# `nack_response?`

```elixir
@spec nack_response?(Grizzly.ZWave.Command.t()) :: boolean()
```

# `nack_waiting?`

```elixir
@spec nack_waiting?(Grizzly.ZWave.Command.t()) :: boolean()
```

# `unwrap`

```elixir
@spec unwrap(binary()) :: binary()
```

Removes the Z/IP Packet encapsulation from a command and returns the original command
as a binary.

# `with_zwave_command`

```elixir
@spec with_zwave_command(
  Grizzly.ZWave.Command.t() | binary(),
  Grizzly.ZWave.seq_number(),
  [param()]
) ::
  {:ok, Grizzly.ZWave.Command.t()} | {:error, :unknown_command}
```

Make a Z/IP Packet Command that encapsulates another Z-Wave command

---

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