# I2cBusDriver

Summary:[Methods](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver#inhmethods)\|[\[Expand All\]](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver#)  

# I2cBusDriver

`
public


interface
I2cBusDriver
`  
`


implements

`[Closeable](https://developer.android.com/reference/java/io/Closeable)`


`

|-------------------------------------------------------|
| com.google.android.things.userdriver.pio.I2cBusDriver |

<br />

*** ** * ** ***

I2C user driver. An I2cBusDriver defines an entire I2C bus with multiple possible devices attached to it. Individual I2cDevice objects can be opened and closed on the bus independently.

## Summary

|                                                                                                                                          ### Public methods                                                                                                                                          ||
|----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` default void`                                                                                          | ` `[close](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver#close())`() ` Closes the bus.                                                     |
| ` abstract `[I2cDevice](https://developer.android.com/reference/com/google/android/things/pio/I2cDevice) | ` `[createI2cDevice](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver#createI2cDevice(int))`(int address) ` Creates an I2C device on the bus. |
| ` default void`                                                                                          | ` `[open](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver#open())`() ` Opens the bus.                                                        |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver#)From interface` `[java.io.Closeable](https://developer.android.com/reference/java/io/Closeable)` ` |------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[close](https://developer.android.com/reference/java/io/Closeable#close())`() ` Closes this stream and releases any system resources associated with it. | ||
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver#)From interface` `[java.lang.AutoCloseable](https://developer.android.com/reference/java/lang/AutoCloseable)` ` |------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[close](https://developer.android.com/reference/java/lang/AutoCloseable#close())`() ` Closes this resource, relinquishing any underlying resources. | ||

## Public methods

### close

```
void close ()
```

Closes the bus. This will be called just after the last device is closed by its owner. Any resources that need to be cleaned up can be done so here. This method may throw IOException to indicate I/O failure, but the bus will still be considered closed and may attempt to be re-opened in the future.

<br />

|                                                                Throws                                                                ||
|----------------------------------------------------------------------------|----------------------------------------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | on I/O failure; the bus will still be considered closed. |

### createI2cDevice

```
I2cDevice createI2cDevice (int address)
```

Creates an I2C device on the bus. This will be called when ownership of a single I2C device is requested. The driver should create and return a new I2cDevice object. The driver manager will internally make sure that no other I2C device is opened at this address until the returned device is closed.

<br />

|                        Parameters                        ||
|-----------|-----------------------------------------------|
| `address` | `int`: The I2C device address to open. <br /> |

|                                                                       Returns                                                                        ||
|----------------------------------------------------------------------------------------------|--------------------------------------------------------|
| [I2cDevice](https://developer.android.com/reference/com/google/android/things/pio/I2cDevice) | A new I2cDevice connected to the given address. <br /> |

|                                                                Throws                                                                 ||
|----------------------------------------------------------------------------|-----------------------------------------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | on I/O failure; the I2C slave device will remain unowned. |

### open

```
void open ()
```

Opens the bus. This will be called just before the first device is requested on this bus. The driver may do any initialization needed to configure the bus for use here.

<br />

|                                                         Throws                                                          ||
|----------------------------------------------------------------------------|---------------------------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | on I/O failure; the bus will remain closed. |

-

  ## Interfaces

  - [GpioDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/GpioDriver)
  - [I2cBusDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver)
  - [PwmDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver)
  - [SpiBusDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/SpiBusDriver)
  - [UartDeviceDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/UartDeviceDriver)
-

  ## Classes

  - [PioDriverManager](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PioDriverManager)