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:
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. |