@@ -91,27 +91,37 @@ class USBDevice_SAMD21G18x {
91
91
// Interrupts
92
92
inline uint16_t epInterruptSummary () { return usb.EPINTSMRY .reg ; }
93
93
94
+ inline bool epHasPendingInterrupts (ep_t ep) { return usb.DeviceEndpoint [ep].EPINTFLAG .reg != 0 ; }
94
95
inline bool epBank0IsSetupReceived (ep_t ep) { return usb.DeviceEndpoint [ep].EPINTFLAG .bit .RXSTP ; }
95
96
inline bool epBank0IsStalled (ep_t ep) { return usb.DeviceEndpoint [ep].EPINTFLAG .bit .STALL0 ; }
96
97
inline bool epBank1IsStalled (ep_t ep) { return usb.DeviceEndpoint [ep].EPINTFLAG .bit .STALL1 ; }
98
+ inline bool epBank0IsTransferFailed (ep_t ep) { return usb.DeviceEndpoint [ep].EPINTFLAG .bit .TRFAIL0 ; }
99
+ inline bool epBank1IsTransferFailed (ep_t ep) { return usb.DeviceEndpoint [ep].EPINTFLAG .bit .TRFAIL1 ; }
97
100
inline bool epBank0IsTransferComplete (ep_t ep) { return usb.DeviceEndpoint [ep].EPINTFLAG .bit .TRCPT0 ; }
98
101
inline bool epBank1IsTransferComplete (ep_t ep) { return usb.DeviceEndpoint [ep].EPINTFLAG .bit .TRCPT1 ; }
99
102
103
+ inline void epAckPendingInterrupts (ep_t ep) { usb.DeviceEndpoint [ep].EPINTFLAG .reg = 0x7F ; }
100
104
inline void epBank0AckSetupReceived (ep_t ep) { usb.DeviceEndpoint [ep].EPINTFLAG .reg = USB_DEVICE_EPINTFLAG_RXSTP; }
101
105
inline void epBank0AckStalled (ep_t ep) { usb.DeviceEndpoint [ep].EPINTFLAG .reg = USB_DEVICE_EPINTFLAG_STALL (1 ); }
102
106
inline void epBank1AckStalled (ep_t ep) { usb.DeviceEndpoint [ep].EPINTFLAG .reg = USB_DEVICE_EPINTFLAG_STALL (2 ); }
107
+ inline void epBank0AckTransferFailed (ep_t ep) { usb.DeviceEndpoint [ep].EPINTFLAG .reg = USB_DEVICE_EPINTFLAG_TRFAIL (1 ); }
108
+ inline void epBank1AckTransferFailed (ep_t ep) { usb.DeviceEndpoint [ep].EPINTFLAG .reg = USB_DEVICE_EPINTFLAG_TRFAIL (2 ); }
103
109
inline void epBank0AckTransferComplete (ep_t ep) { usb.DeviceEndpoint [ep].EPINTFLAG .reg = USB_DEVICE_EPINTFLAG_TRCPT (1 ); }
104
110
inline void epBank1AckTransferComplete (ep_t ep) { usb.DeviceEndpoint [ep].EPINTFLAG .reg = USB_DEVICE_EPINTFLAG_TRCPT (2 ); }
105
111
106
112
inline void epBank0EnableSetupReceived (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENSET .bit .RXSTP = 1 ; }
107
113
inline void epBank0EnableStalled (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENSET .bit .STALL0 = 1 ; }
108
114
inline void epBank1EnableStalled (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENSET .bit .STALL1 = 1 ; }
115
+ inline void epBank0EnableTransferFailed (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENSET .bit .TRFAIL0 = 1 ; }
116
+ inline void epBank1EnableTransferFailed (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENSET .bit .TRFAIL1 = 1 ; }
109
117
inline void epBank0EnableTransferComplete (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENSET .bit .TRCPT0 = 1 ; }
110
118
inline void epBank1EnableTransferComplete (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENSET .bit .TRCPT1 = 1 ; }
111
119
112
120
inline void epBank0DisableSetupReceived (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENCLR .bit .RXSTP = 1 ; }
113
121
inline void epBank0DisableStalled (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENCLR .bit .STALL0 = 1 ; }
114
122
inline void epBank1DisableStalled (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENCLR .bit .STALL1 = 1 ; }
123
+ inline void epBank0DisableTransferFailed (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENCLR .bit .TRFAIL0 = 1 ; }
124
+ inline void epBank1DisableTransferFailed (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENCLR .bit .TRFAIL1 = 1 ; }
115
125
inline void epBank0DisableTransferComplete (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENCLR .bit .TRCPT0 = 1 ; }
116
126
inline void epBank1DisableTransferComplete (ep_t ep) { usb.DeviceEndpoint [ep].EPINTENCLR .bit .TRCPT1 = 1 ; }
117
127
0 commit comments