# fuchsia.hardware.i2cimpl

<br />

Added: HEAD

## **PROTOCOLS**

## Device

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=32)*

Low-level protocol for i2c drivers.

<br />

### GetMaxTransferSize

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#Device_GetMaxTransferSize_Result` |

### SetBitrate

Sets the bitrate for the i2c bus in KHz units.

#### Request

| Name | Type |
|---|---|
| `bitrate` | `uint32` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#Device_SetBitrate_Result` |

### Transact

\|Transact\| assumes that write ops write_data length are not zero.
\|Transact\| assumes that at least the last op has stop set to true.

For each read-transaction, there will be a corresponding ReadData
returned. Write-transactions produce no data result.

#### Request

| Name | Type |
|---|---|
| `op` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#I2cImplOp>:256` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#Device_Transact_Result` |

## **STRUCTS**

### Device_GetMaxTransferSize_Response

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=33)*

| Field | Type | Description | Default |
|---|---|---|---|
| `size` | `uint64` |   | No default |

### Device_SetBitrate_Response

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=40)*

\<EMPTY\>

### Device_Transact_Response

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=49)*

| Field | Type | Description | Default |
|---|---|---|---|
| `read` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#ReadData>:256` |   | No default |

### I2cImplOp

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=18)*

See `Transact` below for usage.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `address` | `uint16` |   | No default |
| `type` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#I2cImplOpType` |   | No default |
| `stop` | `bool` |   | No default |

### ReadData

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=25)*

The result of one read transaction.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `data` | `vector<uint8>:32768` |   | No default |

## **UNIONS**

### Device_GetMaxTransferSize_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=33)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#Device_GetMaxTransferSize_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

### Device_SetBitrate_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=40)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#Device_SetBitrate_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

### Device_Transact_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=49)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.i2cimpl#Device_Transact_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

### I2cImplOpType [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=12)*

If `read_size` is set: This is a read operation and `read_size` bytes will be read.
If `write_data` is set: This is a write operation and `write_data` will be written.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `read_size` | `uint32` |   |
| ### 2 | `write_data` | `vector<uint8>:32768` |   |

<br />

## **SERVICES**

### Service

*Defined in [fuchsia.hardware.i2cimpl/i2cimpl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=54)*

| Name | Type | Transport |
|---|---|---|
| [device](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.i2cimpl/i2cimpl.fidl;l=55) | `fuchsia.hardware.i2cimpl/Device` | Driver |

<br />