# group `udi_group` {#group__udi__group}

The UDI provides a common API for all classes, and this is used by UDC for the main control of USB Device interface.

## Summary

 Members                        | Descriptions                                
--------------------------------|---------------------------------------------
`struct `[`udi_api_t`](#structudi__api__t) | UDI API.

# struct `udi_api_t` {#structudi__api__t}

UDI API.

The callbacks within this structure are called only by USB Device Controller (UDC)

The [udc_get_interface_desc()](.build/docs/internals_undefined.md#group__udc__group__interne_1gadb2a0f5ad1e834d4d7e7777f901d64d2) can be use by UDI to know the interface descriptor selected by UDC.

## Summary

 Members                        | Descriptions                                
--------------------------------|---------------------------------------------
`public bool(* `[`enable`](#structudi__api__t_1ab2247f6571bf21eb4139a40a23c78eea) | Enable the interface.
`public void(* `[`disable`](#structudi__api__t_1ace1449d367bdcce8d6ca549dceac7a7f) | Disable the interface.
`public bool(* `[`setup`](#structudi__api__t_1a11fce471b0558711a238238dac0d5e7c) | Handle a control request directed at an interface.
`public uint8_t(* `[`getsetting`](#structudi__api__t_1a095cfc23d86008d478b6d002afbdd66a) | Returns the current setting of the selected interface.
`public void(* `[`sof_notify`](#structudi__api__t_1a9d8887d1cfbe10252f51a733cb66b9a5) | To signal that a SOF is occurred.

## Members

#### `public bool(* `[`enable`](#structudi__api__t_1ab2247f6571bf21eb4139a40a23c78eea) {#structudi__api__t_1ab2247f6571bf21eb4139a40a23c78eea}

Enable the interface.

This function is called when the host selects a configuration to which this interface belongs through a Set Configuration request, and when the host selects an alternate setting of this interface through a Set Interface request.

#### Returns
`1` if function was successfully done, otherwise `0`.

#### `public void(* `[`disable`](#structudi__api__t_1ace1449d367bdcce8d6ca549dceac7a7f) {#structudi__api__t_1ace1449d367bdcce8d6ca549dceac7a7f}

Disable the interface.

This function is called when this interface is currently active, and

* the host selects any configuration through a Set Configuration request, or

* the host issues a USB reset, or

* the device is detached from the host (i.e. Vbus is no longer present)

#### `public bool(* `[`setup`](#structudi__api__t_1a11fce471b0558711a238238dac0d5e7c) {#structudi__api__t_1a11fce471b0558711a238238dac0d5e7c}

Handle a control request directed at an interface.

This function is called when this interface is currently active and the host sends a SETUP request with this interface as the recipient.

Use udd_g_ctrlreq to decode and response to SETUP request.

#### Returns
`1` if this interface supports the SETUP request, otherwise `0`.

#### `public uint8_t(* `[`getsetting`](#structudi__api__t_1a095cfc23d86008d478b6d002afbdd66a) {#structudi__api__t_1a095cfc23d86008d478b6d002afbdd66a}

Returns the current setting of the selected interface.

This function is called when UDC when know alternate setting of selected interface.

#### Returns
alternate setting of selected interface

#### `public void(* `[`sof_notify`](#structudi__api__t_1a9d8887d1cfbe10252f51a733cb66b9a5) {#structudi__api__t_1a9d8887d1cfbe10252f51a733cb66b9a5}

To signal that a SOF is occurred.