#include void usb_ll_enable_irq (uint16_t irq) { if (irq & USB_IRQ_ID_DEVICE) UDIEN |= (irq & 0xFF); else if (irq & USB_IRQ_ID_INTERFACE) USBCON |= (irq & 0xFF); else if (irq & USB_IRQ_ID_ENDPOINT) UEIENX |= (irq & 0xFF); }; void usb_ll_disable_irq (uint16_t irq) { if (irq & USB_IRQ_ID_DEVICE) UDIEN &= ~(irq & 0xFF); else if (irq & USB_IRQ_ID_INTERFACE) USBCON &= ~(irq & 0xFF); else if (irq & USB_IRQ_ID_ENDPOINT) UEIENX &= ~(irq & 0xFF); }; void usb_ll_clear_irq (uint16_t irq) { if (irq & USB_IRQ_ID_DEVICE) UDINT &= ~(irq & 0xFF); else if (irq & USB_IRQ_ID_INTERFACE) USBINT &= ~(irq & 0xFF); else if (irq & USB_IRQ_ID_ENDPOINT) UEINTX &= ~(irq & 0xFF); }; void usb_ll_disable_all_irq (void) { usb_ll_disable_irq( USB_IRQ_STARTOFFRAME ); usb_ll_disable_irq( USB_IRQ_ENDOFRESET ); usb_ll_disable_irq( USB_IRQ_ENDOFRESUME ); usb_ll_disable_irq( USB_IRQ_UPSTREAMRESUME ); usb_ll_disable_irq( USB_IRQ_WAKEUP ); usb_ll_disable_irq( USB_IRQ_SUSPEND ); usb_ll_disable_irq( USB_IRQ_VBUST ); usb_ll_disable_irq( USB_IRQ_SETUP ); usb_ll_disable_irq( USB_IRQ_FLOWERR ); usb_ll_disable_irq( USB_IRQ_NAKIN ); usb_ll_disable_irq( USB_IRQ_NAKOUT ); usb_ll_disable_irq( USB_IRQ_RXOUT ); usb_ll_disable_irq( USB_IRQ_STALLED ); usb_ll_disable_irq( USB_IRQ_TXIN ); }; void usb_ll_disable_all_endpoint_irq (void) { usb_ll_disable_irq( USB_IRQ_SETUP ); usb_ll_disable_irq( USB_IRQ_FLOWERR ); usb_ll_disable_irq( USB_IRQ_NAKIN ); usb_ll_disable_irq( USB_IRQ_NAKOUT ); usb_ll_disable_irq( USB_IRQ_RXOUT ); usb_ll_disable_irq( USB_IRQ_STALLED ); usb_ll_disable_irq( USB_IRQ_TXIN ); };