usb_task.h File Reference


Detailed Description

Management of the USB task either device/host or both.

The USB task selects the correct USB task (USB device task or USB host task) to be executed depending on the current mode available.

According to the values of USB_DEVICE_FEATURE and USB_HOST_FEATURE (located in the conf_usb.h file), the USB task can be configured to support USB device mode or USB host mode or both for a dual-role device application.

This module also contains the general USB interrupt subroutine. This subroutine is used to detect asynchronous USB events.

Note:

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

Definition in file usb_task.h.

#include "compiler.h"
#include "preprocessor.h"
#include "conf_usb.h"

Go to the source code of this file.

Defines

#define BUS_POWERED   0
#define CLEAR_FEATURE   0x01
#define CONFIGURATION_DESCRIPTOR   0x02
#define DEVICE_DESCRIPTOR   0x01
#define DEVICE_QUALIFIER_DESCRIPTOR   0x06
#define DEVICE_TYPE   0x00
#define ENDPOINT_DESCRIPTOR   0x05
#define ENDPOINT_TYPE   0x02
#define EVT_HOST_DISCONNECTION   11
#define EVT_HOST_HWUP   10
#define EVT_HOST_SOF   9
#define EVT_USB_DEVICE_FUNCTION   3
#define EVT_USB_HOST_FUNCTION   4
#define EVT_USB_POWERED   1
#define EVT_USB_RESET   8
#define EVT_USB_RESUME   7
#define EVT_USB_SUSPEND   5
#define EVT_USB_UNPOWERED   2
#define EVT_USB_WAKE_UP   6
#define FEATURE_DEVICE_REMOTE_WAKEUP   0x01
#define FEATURE_ENDPOINT_HALT   0x00
#define FEATURE_TEST_MODE   0x02
#define GET_CONFIGURATION   0x08
#define GET_CONFIGURATION_DESCRIPTOR   4
#define Get_desc_ep_dir(ep_addr)   (Rd_bitfield(ep_addr, MSK_EP_DIR))
 Extract endpoint direction from endpoint address in endpoint descriptor.
#define Get_desc_ep_nbr(ep_addr)   (Rd_bitfield(ep_addr, MSK_EP_NBR))
 Extract endpoint number from endpoint address in endpoint descriptor.
#define GET_DESCRIPTOR   0x06
#define GET_DEVICE   0x01
#define GET_DEVICE_DESCRIPTOR   1
#define GET_INTERFACE   0x0A
#define GET_STATUS   0x00
#define GET_STRING   0x03
#define INTERFACE_DESCRIPTOR   0x04
#define INTERFACE_TYPE   0x01
#define Is_host_emergency_exit()   (Is_usb_device() || Is_usb_event(EVT_HOST_DISCONNECTION) || Is_usb_event(EVT_USB_DEVICE_FUNCTION))
#define Is_usb_device()   (g_usb_mode == USB_MODE_DEVICE)
#define Is_usb_event(x)   (Tst_bits(g_usb_event, 1 << (x)))
#define Is_usb_host()   (g_usb_mode == USB_MODE_HOST)
#define MSK_EP_DIR   0x80
#define MSK_EP_NBR   0x0F
#define OTHER_SPEED_CONFIGURATION_DESCRIPTOR   0x07
#define REQUEST_DEVICE_STATUS   0x80
#define REQUEST_ENDPOINT_STATUS   0x82
#define REQUEST_INTERFACE_STATUS   0x81
#define SELF_POWERED   1
#define SET_ADDRESS   0x05
#define SET_CONFIGURATION   0x09
#define SET_DESCRIPTOR   0x07
#define SET_FEATURE   0x03
#define SET_INTERFACE   0x0B
#define STRING_DESCRIPTOR   0x03
#define SYNCH_FRAME   0x0C
#define TEST_FORCE_ENABLE   0x05
#define TEST_J   0x01
#define TEST_K   0x02
#define TEST_PACKET   0x04
#define TEST_SE0_NAK   0x03
#define Usb_ack_event(x)   (Clr_bits(g_usb_event, 1 << (x)))
#define Usb_clear_all_event()   (g_usb_event = 0x0000)
#define USB_HIGH_SPEED_SUPPORT   DISABLED
#define USB_MODE_DEVICE   0x01
#define USB_MODE_HOST   0x02
#define USB_MODE_UNDEFINED   0x00
#define Usb_send_event(x)   (Set_bits(g_usb_event, 1 << (x)))
#define usb_format_mcu_to_usb_data(width, data)   (TPASTE2(swap, width)(data))
#define Usb_format_mcu_to_usb_data(width, data)   (TPASTE2(Swap, width)(data))
 Convert 16-, 32- or 64-bit data between MCU and USB endianisms.
#define usb_format_usb_to_mcu_data(width, data)   (TPASTE2(swap, width)(data))
#define Usb_format_usb_to_mcu_data(width, data)   (TPASTE2(Swap, width)(data))

Functions

void usb_task (void *pvParameters)
 Entry point of the USB mamnagement.
void usb_task_init (void)
 This function initializes the USB process.

Variables

volatile U16 g_usb_event
 Public: U16 g_usb_event usb_connected is used to store USB events detected upon USB general interrupt subroutine Its value is managed by the following macros (See usb_task.h file) Usb_send_event(x) Usb_ack_event(x) Is_usb_event(x) Usb_clear_all_event().
volatile U8 g_usb_mode
 Public: U8 g_usb_mode Used in dual-role application (both device/host) to store the current mode the USB controller is operating.
volatile U32 private_sof_counter
 Private: U8 private_sof_counter Incremented by host SOF interrupt subroutime This counter is used to detect time-out in host requests.


Generated on Fri Feb 19 02:27:52 2010 for AVR32 - USB Enumeration Example by  doxygen 1.5.5