# SystemDefinition

## class SystemDefinition( devices: dict[str, ~instro.i2c.types.RegisterDevice | ~instro.i2c.types.CommandDevice]=<factory>, )[source]

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object "(in Python v3.15)")

Top-level container of all I2C device definitions, passed to `I2CInterface`.

```
>>> system = SystemDefinition()
>>> system.add_device(RegisterDevice(name="power_gpio", address=0x20))
>>> system.add_device(CommandDevice(name="adc", address=0x09, data_format=DataFormat(...)))
>>> i2c = I2CInterface(
...     name="main_i2c",
...     driver=Aardvark(serial_number="123456"),
...     system_definition=system,
... )
>>> i2c.write("power_gpio", "LED_OUTPUT_STATE", 0xFF)
```

### devices: dict[str, RegisterDevice | CommandDevice]

### add_device( dev: RegisterDevice | CommandDevice, ) → None[source]

### device( periph: str, ) → RegisterDevice | CommandDevice[source]
