# `EtherCAT.Simulator.Slave.Definition`
[🔗](https://github.com/sid2baker/ethercat/blob/main/lib/ethercat/simulator/slave/definition.ex#L1)

Public authored definition for a simulated EtherCAT slave.

A definition describes the high-level device identity, process-data layout,
mailbox/object-dictionary capabilities, and behavior module. Derived low-level
ESC state such as EEPROM contents and register memory is hydrated internally
by the simulator runtime and is not part of this public type.

# `mailbox_config`

```elixir
@type mailbox_config() :: %{
  recv_offset: non_neg_integer(),
  recv_size: non_neg_integer(),
  send_offset: non_neg_integer(),
  send_size: non_neg_integer()
}
```

Mailbox SM layout declared by the simulated device.

# `t`

```elixir
@opaque t()
```

High-level, authored simulator device definition.

# `build`

```elixir
@spec build(
  atom(),
  keyword()
) :: t()
```

# `from_driver`

```elixir
@spec from_driver(module(), map(), module()) :: t()
```

---

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