# `AVModbus.Memory`
[🔗](https://github.com/piyopiyoex/avmodbus/blob/v0.1.0/lib/avmodbus/memory.ex#L1)

Modbus data model の sparse in-memory implementation です。

coils、discrete inputs、holding registers、input registers、file records、FIFO を
`AVModbus.Server` handler API から利用できます。未設定の bit は `false`、register は `0` として読み、
明示的に書き込まれた値だけを memory に保持します。

# `server`

```elixir
@type server() :: pid() | atom()
```

# `table`

```elixir
@type table() :: :coil | :discrete_input | :holding_register | :input_register
```

# `get`

```elixir
@spec get(server(), table(), non_neg_integer(), pos_integer()) ::
  [boolean() | non_neg_integer()] | {:error, term()}
```

data-model table から `count` 個の値を返します。

# `put`

```elixir
@spec put(server(), table(), non_neg_integer(), term() | [term()]) ::
  :ok | {:error, term()}
```

data-model table に 1 個以上の値を書き込みます。

# `start_link`

```elixir
@spec start_link(keyword()) :: {:ok, pid()} | {:error, term()}
```

caller に link した sparse Modbus data model を起動します。

---

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