# I2C master

## Commands

### WRITE (0)

*Request:*
- u16 - slave address
- u8[] - bytes to write

### READ (1)

*Request:*
- u16 - slave address
- u16 - number of bytes to read

*Response:*
- u8[] - received bytes

### WRITE_REG (2)

Write a register; first writes the register number, then (in the same transaction)
the data. If the device supports it, can write multiple registers at once.

*Request:*
- u16 - address
- u8 - register number
- u8[] - bytes to write

### READ_REG (3)

Read a register value. First writes the register number, then reads a number of bytes.
For devices implementing auto-increment, the register width field can be used to read
multiple registers at once.

*Request:*
- u16 - address
- u8 - register number
- u16 - register width (number of bytes to read)

*Response:*
- u8[] - received bytes


## Events

*No events defined for this unit type.*