# drivers/usb/usb_lib.c File Reference

USB core layer. More...

`#include <assert.h>`
`#include <mempool.h>`
`#include <physmem.h>`
`#include <util.h>`
`#include <usb/request.h>`
`#include <app/config_usb.h>`

Include dependency graph for usb_lib.c:

Go to the source code of this file.

## Functions
void | usb_req_init (struct usb_request *req)
| Initialize a USB request.
struct usb_request * | usb_req_alloc (void)
| Allocate and initialize a USB request structure.
void | usb_req_free (struct usb_request *req)
| Free a USB request structure.
struct usb_request * | usb_req_alloc_single_tx (const void *data, size_t len)
| Allocate a USB request and initialize with a single buffer for transmission.
struct usb_request * | usb_req_alloc_single_rx (void *data, size_t len)
| Allocate a USB request and initialize with a single buffer for reception.
void | usb_req_free_all (struct usb_request *req)
| Free a USB request and all associated buffers.
void | usb_init (void)
| Initialize the USB core subsystem.

## Detailed Description

USB core layer.

This file contains hardware-independent USB utility functions.

- Compiler: IAR EWAVR32 and GNU GCC for AVR32
- Supported devices: All devices with a USB host and/or device controller
- AppNote:

Author:
  Atmel Corporation: http://www.atmel.com
  Support and FAQ: http://support.atmel.no/

Definition in file usb_lib.c.

## Function Documentation

void usb_init | ( | void |  | ) |

Initialize the USB core subsystem.

This function will initialize the USB buffer pool.

Definition at line 179 of file usb_lib.c.

References CONFIG_USB_NR_REQUESTS, cpu_sram_pool, and mem_pool_init_physmem().

Here is the call graph for this function:

struct usb_request* usb_req_alloc | ( | void |  | ) | `[read]`

Allocate and initialize a USB request structure.

Returns:
  A pointer to the newly allocated USB request, or NULL if the pool is exhausted.

Definition at line 75 of file usb_lib.c.

References mem_pool_alloc(), and usb_req_init().

Referenced by msc_submit_write_data_req(), usb_req_alloc_single_rx(), and usb_req_alloc_single_tx().

Here is the call graph for this function:

struct usb_request* usb_req_alloc_single_rx | ( | void * | data,
|  | size_t | len |
| ) |  |  | `[read]`

Allocate a USB request and initialize with a single buffer for reception.

Parameters:

  | data | Data area for the buffer
  | len | Length of the data area in bytes

Returns:
  A new USB request structure, or NULL if the memory pool is exhausted.

Definition at line 137 of file usb_lib.c.

References buffer_init_rx(), usb_req_add_buffer(), and usb_req_alloc().

Here is the call graph for this function:

struct usb_request* usb_req_alloc_single_tx | ( | const void * | data,
|  | size_t | len |
| ) |  |  | `[read]`

Allocate a USB request and initialize with a single buffer for transmission.

Parameters:

  | data | Data area for the buffer
  | len | Length of the data area in bytes

Returns:
  A new USB request structure, or NULL if the memory pool is exhausted.

Definition at line 107 of file usb_lib.c.

References buffer_init_tx(), usb_req_add_buffer(), and usb_req_alloc().

Here is the call graph for this function:

void usb_req_free | ( | struct usb_request * | req | ) |

Free a USB request structure.

Parameters:

  | req | The request to be released back to the pool.

Definition at line 91 of file usb_lib.c.

References mem_pool_free().

Referenced by msc_submit_write_data_req(), and usb_req_free_all().

Here is the call graph for this function:

void usb_req_free_all | ( | struct usb_request * | req | ) |

Free a USB request and all associated buffers.

Parameters:

  | req | The request to be freed

Definition at line 162 of file usb_lib.c.

References dbg_printf, usb_req_for_each_buffer_safe, and usb_req_free().

Here is the call graph for this function:

void usb_req_init | ( | struct usb_request * | req | ) |

Initialize a USB request.

This initializes a USB request and makes sure that it doesn't have any special flags set, and that it doesn't have any other buffers associated with it.

Parameters:

  | req | The USB request to be initialized.

Definition at line 62 of file usb_lib.c.

References usb_request::buf_list, usb_request::bytes_xfered, usb_request::flags, and slist_init().

Referenced by usb_func_get_descriptor(), and usb_req_alloc().

Here is the call graph for this function: