# `EtherCAT.Slave.ProcessData.Signal`
[🔗](https://github.com/sid2baker/ethercat/blob/main/lib/ethercat/slave/process_data/signal.ex#L1)

Declarative mapping of one logical process-data signal to a PDO or slice of a PDO.

A signal always belongs to exactly one PDO object (`0x1600+` or `0x1A00+`), as
described by the slave's SII/ESI mapping. By default the signal spans the whole
PDO. `bit_offset` and `bit_size` may be used to expose a smaller field inside
that PDO when the driver knows the entry layout.

# `t`

```elixir
@type t() :: %EtherCAT.Slave.ProcessData.Signal{
  bit_offset: non_neg_integer(),
  bit_size: pos_integer() | nil,
  pdo_index: non_neg_integer()
}
```

# `slice`

```elixir
@spec slice(non_neg_integer(), non_neg_integer(), pos_integer()) :: t()
```

# `whole_pdo`

```elixir
@spec whole_pdo(non_neg_integer()) :: t()
```

---

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