/* Enums: */\r
enum USB_Interrupts_t\r
{\r
- USB_INT_NONE = 0, // TODO\r
+ USB_INT_BUSEVENTI = 1,\r
+ USB_INT_BUSEVENTI_Suspend = 2,\r
+ USB_INT_BUSEVENTI_Resume = 3,\r
+ USB_INT_BUSEVENTI_Reset = 4,\r
+ USB_INT_SOFI = 5,\r
};\r
\r
/* Inline Functions: */\r
static inline void USB_INT_Enable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
static inline void USB_INT_Enable(const uint8_t Interrupt)\r
{\r
- // TODO\r
+ switch (Interrupt)\r
+ {\r
+ case USB_INT_BUSEVENTI:\r
+ USB.INTCTRLA |= USB_BUSEVIE_bm;\r
+ return;\r
+ case USB_INT_SOFI:\r
+ USB.INTCTRLA |= USB_SOFIE_bm; \r
+ return; \r
+ }\r
}\r
\r
static inline void USB_INT_Disable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
static inline void USB_INT_Disable(const uint8_t Interrupt)\r
{\r
- // TODO\r
+ switch (Interrupt)\r
+ {\r
+ case USB_INT_BUSEVENTI:\r
+ USB.INTCTRLA &= ~USB_BUSEVIE_bm;\r
+ return;\r
+ case USB_INT_SOFI:\r
+ USB.INTCTRLA &= ~USB_SOFIE_bm; \r
+ return; \r
+ }\r
}\r
\r
static inline void USB_INT_Clear(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
static inline void USB_INT_Clear(const uint8_t Interrupt)\r
{\r
- // TODO\r
+ switch (Interrupt)\r
+ {\r
+ case USB_INT_BUSEVENTI_Suspend:\r
+ USB.INTFLAGSACLR = USB_SUSPENDIF_bm;\r
+ return;\r
+ case USB_INT_BUSEVENTI_Resume:\r
+ USB.INTFLAGSACLR = USB_RESUMEIF_bm;\r
+ return;\r
+ case USB_INT_BUSEVENTI_Reset:\r
+ USB.INTFLAGSACLR = USB_RSTIF_bm;\r
+ return;\r
+ case USB_INT_SOFI:\r
+ USB.INTFLAGSACLR = USB_SOFIF_bm; \r
+ return; \r
+ }\r
}\r
\r
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;\r
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt)\r
{\r
- return false; // TODO\r
+ switch (Interrupt)\r
+ {\r
+ case USB_INT_BUSEVENTI:\r
+ return (USB.INTCTRLA & USB_BUSEVIE_bm);\r
+ case USB_INT_SOFI:\r
+ return (USB.INTCTRLA & USB_SOFIE_bm);\r
+ }\r
+ \r
+ return false;\r
}\r
\r
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;\r
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt)\r
{\r
- return false; // TODO\r
+ switch (Interrupt)\r
+ {\r
+ case USB_INT_BUSEVENTI_Suspend:\r
+ return (USB.INTFLAGSACLR & USB_SUSPENDIF_bm);\r
+ case USB_INT_BUSEVENTI_Resume:\r
+ return (USB.INTFLAGSACLR & USB_RESUMEIF_bm);\r
+ case USB_INT_BUSEVENTI_Reset:\r
+ return (USB.INTFLAGSACLR & USB_RSTIF_bm);\r
+ case USB_INT_SOFI:\r
+ return (USB.INTFLAGSACLR & USB_SOFIF_bm);\r
+ }\r
+ \r
+ return false;\r
}\r
\r
/* Includes: */\r