USB Device Driver for USBHS. Compliant with common UDD driver. More...
#include "conf_usb.h"#include "sysclk.h"#include "udd.h"#include "usbhs_otg.h"#include "usbhs_device.h"#include <string.h>#include "sleep.h"#include "sleepmgr.h"
Go to the source code of this file.
Macros | |
| #define | dbg_print(...) | 
| #define | UDD_BULK_NB_BANK(ep) 2 | 
| #define | UDD_BULK_NB_BANK_ERROR | 
| #define | UDD_EP_BULK_NB_BANK_ERROR(ep) (UDD_EP_USED(ep) && UDD_EP_ISO_NBANK_ERROR(ep)) | 
| #define | UDD_EP_BULK_NBANK_ERROR(ep) ( (UDD_BULK_NB_BANK(ep) < 1) || (UDD_BULK_NB_BANK(ep) > 2) ) | 
| #define | UDD_EP_INT_NB_BANK_ERROR(ep) (UDD_EP_USED(ep) && UDD_EP_ISO_NBANK_ERROR(ep)) | 
| #define | UDD_EP_INT_NBANK_ERROR(ep) ( (UDD_INTERRUPT_NB_BANK(ep) < 1) || (UDD_INTERRUPT_NB_BANK(ep) > 2) ) | 
| #define | UDD_EP_ISO_NB_BANK_ERROR(ep) (UDD_EP_USED(ep) && UDD_EP_ISO_NBANK_ERROR(ep)) | 
| #define | UDD_EP_ISO_NBANK_ERROR(ep) | 
| #define | UDD_EP_NB_BANK_ERROR(ep, type) (ATPASTE3(UDD_EP_, type, _NB_BANK_ERROR(ep))) | 
| #define | UDD_EP_USED(ep) (USB_DEVICE_MAX_EP >= ep) | 
| #define | UDD_INTERRUPT_NB_BANK(ep) 1 | 
| #define | UDD_INTERRUPT_NB_BANK_ERROR | 
| #define | UDD_ISO_NB_BANK_ERROR | 
| #define | UDD_ISOCHRONOUS_NB_BANK(ep) 2 | 
| #define | UDD_USB_INT_FUN USBHS_Handler | 
| #define | UDD_USB_INT_LEVEL 5 | 
Functions | |
| if (udd_ctrl_interrupt()) | |
| if (Is_udd_reset()) | |
| if (Is_udd_suspend_interrupt_enabled() &&Is_udd_suspend()) | |
| if (Is_udd_wake_up_interrupt_enabled() &&Is_udd_wake_up()) | |
| void | udd_attach (void) | 
| Attach device to the bus when possible.  More... | |
| void | udd_detach (void) | 
| Detaches the device from the bus.  More... | |
| void | udd_disable (void) | 
| Disables the USB Device mode.  More... | |
| void | udd_enable (void) | 
| Enables the USB Device mode.  More... | |
| uint16_t | udd_get_frame_number (void) | 
| Returns the current start of frame number.  More... | |
| uint16_t | udd_get_micro_frame_number (void) | 
| Returns the current micro start of frame number.  More... | |
| uint8_t | udd_getaddress (void) | 
| Returns the USB address of device.  More... | |
| bool | udd_include_vbus_monitoring (void) | 
| Authorizes the VBUS event.  More... | |
| bool | udd_is_high_speed (void) | 
| Test whether the USB Device Controller is running at high speed or not.  More... | |
| void | udd_send_remotewakeup (void) | 
| The USB driver sends a resume signal called Upstream Resume.  More... | |
| void | udd_set_address (uint8_t address) | 
| Changes the USB address of device.  More... | |
| void | udd_set_setup_payload (uint8_t *payload, uint16_t payload_size) | 
| Load setup payload.  More... | |
Variables | |
| udd_interrupt_end | __pad0__ | 
| udd_interrupt_sof_end | __pad1__ | 
Power management routine. | |
| #define | USBHS_SLEEP_MODE_USB_SUSPEND SLEEPMGR_WAIT_FAST | 
| Definition of sleep levels.  More... | |
| #define | USBHS_SLEEP_MODE_USB_IDLE SLEEPMGR_SLEEP_WFI | 
| static bool | udd_b_idle | 
| State of USB line.  More... | |
| static bool | udd_b_sleep_initialized = false | 
| State of sleep manager.  More... | |
| static void | udd_sleep_mode (bool b_idle) | 
| Authorize or not the CPU powerdown mode.  More... | |
VBus monitor routine | |
| #define | udd_vbus_monitor_sleep_mode(lock) | 
| static void | udd_vbus_handler (uint32_t id, uint32_t mask) | 
Control endpoint low level management routine. | |
This function performs control endpoint mangement. It handle the SETUP/DATA/HANDSHAKE phases of a control transaction.  | |
| enum | udd_ctrl_ep_state_t {  UDD_EPCTRL_SETUP = 0, UDD_EPCTRL_DATA_OUT = 1, UDD_EPCTRL_DATA_IN = 2, UDD_EPCTRL_HANDSHAKE_WAIT_IN_ZLP = 3, UDD_EPCTRL_HANDSHAKE_WAIT_OUT_ZLP = 4, UDD_EPCTRL_STALL_REQ = 5 }  | 
| Bit definitions about endpoint control state machine for udd_ep_control_state.  More... | |
| COMPILER_WORD_ALIGNED udd_ctrl_request_t | udd_g_ctrlreq | 
| Global variable to give and record information about setup request management.  More... | |
| static udd_ctrl_ep_state_t | udd_ep_control_state | 
| State of the endpoint control management.  More... | |
| static uint16_t | udd_ctrl_prev_payload_buf_cnt | 
| Total number of data received/sent during data packet phase with previous payload buffers.  More... | |
| static uint16_t | udd_ctrl_payload_buf_cnt | 
| Number of data received/sent to/from udd_g_ctrlreq.payload buffer.  More... | |
| static void | udd_reset_ep_ctrl (void) | 
| Reset control endpoint.  More... | |
| static void | udd_ctrl_init (void) | 
| Reset control endpoint management.  More... | |
| static void | udd_ctrl_setup_received (void) | 
| Managed reception of SETUP packet on control endpoint.  More... | |
| static void | udd_ctrl_in_sent (void) | 
| Managed reception of IN packet on control endpoint.  More... | |
| static void | udd_ctrl_out_received (void) | 
| Managed reception of OUT packet on control endpoint.  More... | |
| static void | udd_ctrl_underflow (void) | 
| Managed underflow event of IN packet on control endpoint.  More... | |
| static void | udd_ctrl_overflow (void) | 
| Managed overflow event of OUT packet on control endpoint.  More... | |
| static void | udd_ctrl_stall_data (void) | 
| Managed stall event of IN/OUT packet on control endpoint.  More... | |
| static void | udd_ctrl_send_zlp_in (void) | 
| Send a ZLP IN on control endpoint.  More... | |
| static void | udd_ctrl_send_zlp_out (void) | 
| Send a ZLP OUT on control endpoint.  More... | |
| static void | udd_ctrl_endofrequest (void) | 
| Call callback associated to setup request.  More... | |
| static bool | udd_ctrl_interrupt (void) | 
| Main interrupt routine for control endpoint.  More... | |
USB Device Driver for USBHS. Compliant with common UDD driver.
Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries.
Definition in file usbhs_device.c.
| #define dbg_print | ( | ... | ) | 
Definition at line 102 of file usbhs_device.c.
| #define UDD_EP_USED | ( | ep | ) | (USB_DEVICE_MAX_EP >= ep) | 
Definition at line 60 of file usbhs_device.c.
| #define UDD_USB_INT_FUN USBHS_Handler | 
Definition at line 53 of file usbhs_device.c.
| #define UDD_USB_INT_LEVEL 5 | 
Definition at line 57 of file usbhs_device.c.