# `AVModbus.Serial.Transport`
[🔗](https://github.com/piyopiyoex/avmodbus/blob/v0.1.0/lib/avmodbus/serial/transport.ex#L1)

Modbus serial transport adapter の contract です。

`open/1` は instance ごとの設定を keyword list で受け取ります。`read/2` は timeout を
millisecond で受け取り、`write/2` は
response の受信へ安全に移れる時点で返す必要があります。manual DE / RE を使う RS485
adapter では、送信完了待ちと direction の切り替えも `write/2` の責務です。

# `handle`

```elixir
@type handle() :: term()
```

# `options`

```elixir
@type options() :: keyword()
```

# `close`

```elixir
@callback close(handle()) :: :ok | {:error, term()}
```

# `open`

```elixir
@callback open(options()) :: {:ok, handle()} | {:error, term()}
```

# `read`

```elixir
@callback read(handle(), non_neg_integer()) :: {:ok, binary()} | {:error, term()}
```

# `write`

```elixir
@callback write(handle(), iodata()) :: :ok | {:error, term()}
```

---

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