Contiki 2.6

usb_task.h File Reference

This file manages the USB task either device/host or both. More...

Go to the source code of this file.

Defines

USB Events
#define Usb_send_event(x)   (g_usb_event |= (1<<x))
 Send event.
#define Usb_ack_event(x)   (g_usb_event &= ~(1<<x))
 Ack event processed.
#define Usb_clear_all_event()   (g_usb_event = 0)
 Clear all events.
#define Is_usb_event(x)   ((g_usb_event & (1<<x)) ? TRUE : FALSE)
 Check for USB event.
#define Is_not_usb_event(x)   ((g_usb_event & (1<<x)) ? FALSE: TRUE)
 Check for USB event NOT occuring.
#define Is_usb_device()   (g_usb_mode==USB_MODE_DEVICE ? TRUE : FALSE)
 Check if USB is device.
#define EVT_USB_POWERED   1
 USB Event: USB plugged.
#define EVT_USB_UNPOWERED   2
 USB Event: USB un-plugged.
#define EVT_USB_DEVICE_FUNCTION   3
 USB Event: USB in device.
#define EVT_USB_HOST_FUNCTION   4
 USB Event: USB in host.
#define EVT_USB_SUSPEND   5
 USB Event: USB suspend.
#define EVT_USB_WAKE_UP   6
 USB Event: USB wake up.
#define EVT_USB_RESUME   7
 USB Event: USB resume.
#define EVT_USB_RESET   8
 USB Event: USB reset.
#define EVT_USB_SETUP_RX   9
 USB Event: USB setup received.
Standard requests defines
#define GET_STATUS   0x00
#define GET_DEVICE   0x01
#define CLEAR_FEATURE   0x01
 see FEATURES below
#define GET_STRING   0x03
#define SET_FEATURE   0x03
 see FEATURES below
#define SET_ADDRESS   0x05
#define GET_DESCRIPTOR   0x06
#define SET_DESCRIPTOR   0x07
#define GET_CONFIGURATION   0x08
#define SET_CONFIGURATION   0x09
#define GET_INTERFACE   0x0A
#define SET_INTERFACE   0x0B
#define SYNCH_FRAME   0x0C
#define GET_DEVICE_DESCRIPTOR   1
#define GET_CONFIGURATION_DESCRIPTOR   4
#define REQUEST_DEVICE_STATUS   0x80
#define REQUEST_INTERFACE_STATUS   0x81
#define REQUEST_ENDPOINT_STATUS   0x82
#define ZERO_TYPE   0x00
#define INTERFACE_TYPE   0x01
#define ENDPOINT_TYPE   0x02
#define DEVICE_DESCRIPTOR   0x01
#define CONFIGURATION_DESCRIPTOR   0x02
#define STRING_DESCRIPTOR   0x03
#define INTERFACE_DESCRIPTOR   0x04
#define ENDPOINT_DESCRIPTOR   0x05
#define DEVICE_QUALIFIER_DESCRIPTOR   0x06
#define OTHER_SPEED_CONFIGURATION_DESCRIPTOR   0x07
#define FEATURE_DEVICE_REMOTE_WAKEUP   0x01
#define FEATURE_ENDPOINT_HALT   0x00
#define TEST_J   0x01
#define TEST_K   0x02
#define TEST_SEO_NAK   0x03
#define TEST_PACKET   0x04
#define TEST_FORCE_ENABLE   0x05
#define BUS_POWERED   0
#define SELF_POWERED   1

Functions

void usb_start_device (void)
 This function initializes the USB device controller.

Variables

volatile uint16_t 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) Usb_clear_all_event() Is_usb_event(x) Is_not_usb_event(x)

Detailed Description

This file manages 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 USB_DEVICE_FEATURE and USB_HOST_FEATURE value (located in 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:

  • The usb_task belongs to the scheduler, the usb_device_task and usb_host do not, they are called from the general usb_task
  • See conf_usb.h file for more details about the configuration of this module

Definition in file usb_task.h.