Microchip® Advanced Software Framework

usb_task.h File Reference
#include "compiler.h"
#include "preprocessor.h"
#include "conf_usb.h"

Macros

#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_CONNECTION   12
 
#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. More...
 
#define Get_desc_ep_nbr(ep_addr)   (Rd_bitfield(ep_addr, MSK_EP_NBR))
 Extract endpoint number from endpoint address in endpoint descriptor. More...
 
#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_DEV_STATUS_REMOTEWAKEUP   2
 
#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))
 Convert 16-, 32- or 64-bit data between MCU and USB endianisms. More...
 
#define Usb_format_usb_to_mcu_data(width, data)   (TPASTE2(Swap, width)(data))
 
#define usb_format_mcu_to_usb_data(width, data)   (TPASTE2(swap, width)(data))
 
#define usb_format_usb_to_mcu_data(width, data)   (TPASTE2(swap, width)(data))
 

Functions

U32 host_get_timeout (void)
 
void usb_task (void)
 Entry point of the USB mamnagement. More...
 
void usb_task_init (void)
 This function initializes the USB process. More...
 

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() More...
 
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. More...
 
volatile U32 private_sof_counter
 Private: U8 private_sof_counter Incremented by host SOF interrupt subroutine This counter is used to detect time-out in host requests. More...