Sergey Pastor / grbl1
Committer:
Sergunb
Date:
Mon Sep 04 12:04:13 2017 +0000
Revision:
0:8f0d870509fe
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sergunb 0:8f0d870509fe 1 /******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
Sergunb 0:8f0d870509fe 2 * File Name : usb_istr.c
Sergunb 0:8f0d870509fe 3 * Author : MCD Application Team
Sergunb 0:8f0d870509fe 4 * Version : V3.3.0
Sergunb 0:8f0d870509fe 5 * Date : 21-March-2011
Sergunb 0:8f0d870509fe 6 * Description : ISTR events interrupt service routines
Sergunb 0:8f0d870509fe 7 ********************************************************************************
Sergunb 0:8f0d870509fe 8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
Sergunb 0:8f0d870509fe 9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
Sergunb 0:8f0d870509fe 10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
Sergunb 0:8f0d870509fe 11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
Sergunb 0:8f0d870509fe 12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
Sergunb 0:8f0d870509fe 13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
Sergunb 0:8f0d870509fe 14 *******************************************************************************/
Sergunb 0:8f0d870509fe 15
Sergunb 0:8f0d870509fe 16 /* Includes ------------------------------------------------------------------*/
Sergunb 0:8f0d870509fe 17 #include "usb_lib.h"
Sergunb 0:8f0d870509fe 18 #include "usb_prop.h"
Sergunb 0:8f0d870509fe 19 #include "usb_pwr.h"
Sergunb 0:8f0d870509fe 20 #include "usb_istr.h"
Sergunb 0:8f0d870509fe 21
Sergunb 0:8f0d870509fe 22 /* Private typedef -----------------------------------------------------------*/
Sergunb 0:8f0d870509fe 23 /* Private define ------------------------------------------------------------*/
Sergunb 0:8f0d870509fe 24 /* Private macro -------------------------------------------------------------*/
Sergunb 0:8f0d870509fe 25 /* Private variables ---------------------------------------------------------*/
Sergunb 0:8f0d870509fe 26 __IO uint16_t wIstr; /* ISTR register last read value */
Sergunb 0:8f0d870509fe 27 __IO uint8_t bIntPackSOF = 0; /* SOFs received between 2 consecutive packets */
Sergunb 0:8f0d870509fe 28
Sergunb 0:8f0d870509fe 29 /* Extern variables ----------------------------------------------------------*/
Sergunb 0:8f0d870509fe 30 /* Private function prototypes -----------------------------------------------*/
Sergunb 0:8f0d870509fe 31 /* Private functions ---------------------------------------------------------*/
Sergunb 0:8f0d870509fe 32 /* function pointers to non-control endpoints service routines */
Sergunb 0:8f0d870509fe 33 void (*pEpInt_IN[7])(void) =
Sergunb 0:8f0d870509fe 34 {
Sergunb 0:8f0d870509fe 35 EP1_IN_Callback,
Sergunb 0:8f0d870509fe 36 EP2_IN_Callback,
Sergunb 0:8f0d870509fe 37 EP3_IN_Callback,
Sergunb 0:8f0d870509fe 38 EP4_IN_Callback,
Sergunb 0:8f0d870509fe 39 EP5_IN_Callback,
Sergunb 0:8f0d870509fe 40 EP6_IN_Callback,
Sergunb 0:8f0d870509fe 41 EP7_IN_Callback,
Sergunb 0:8f0d870509fe 42 };
Sergunb 0:8f0d870509fe 43
Sergunb 0:8f0d870509fe 44 void (*pEpInt_OUT[7])(void) =
Sergunb 0:8f0d870509fe 45 {
Sergunb 0:8f0d870509fe 46 EP1_OUT_Callback,
Sergunb 0:8f0d870509fe 47 EP2_OUT_Callback,
Sergunb 0:8f0d870509fe 48 EP3_OUT_Callback,
Sergunb 0:8f0d870509fe 49 EP4_OUT_Callback,
Sergunb 0:8f0d870509fe 50 EP5_OUT_Callback,
Sergunb 0:8f0d870509fe 51 EP6_OUT_Callback,
Sergunb 0:8f0d870509fe 52 EP7_OUT_Callback,
Sergunb 0:8f0d870509fe 53 };
Sergunb 0:8f0d870509fe 54
Sergunb 0:8f0d870509fe 55 #ifndef STM32F10X_CL
Sergunb 0:8f0d870509fe 56
Sergunb 0:8f0d870509fe 57 /*******************************************************************************
Sergunb 0:8f0d870509fe 58 * Function Name : USB_Istr
Sergunb 0:8f0d870509fe 59 * Description : STR events interrupt service routine
Sergunb 0:8f0d870509fe 60 * Input :
Sergunb 0:8f0d870509fe 61 * Output :
Sergunb 0:8f0d870509fe 62 * Return :
Sergunb 0:8f0d870509fe 63 *******************************************************************************/
Sergunb 0:8f0d870509fe 64 void USB_Istr(void)
Sergunb 0:8f0d870509fe 65 {
Sergunb 0:8f0d870509fe 66
Sergunb 0:8f0d870509fe 67 wIstr = _GetISTR();
Sergunb 0:8f0d870509fe 68
Sergunb 0:8f0d870509fe 69 #if (IMR_MSK & ISTR_SOF)
Sergunb 0:8f0d870509fe 70 if (wIstr & ISTR_SOF & wInterrupt_Mask)
Sergunb 0:8f0d870509fe 71 {
Sergunb 0:8f0d870509fe 72 _SetISTR((uint16_t)CLR_SOF);
Sergunb 0:8f0d870509fe 73 bIntPackSOF++;
Sergunb 0:8f0d870509fe 74
Sergunb 0:8f0d870509fe 75 #ifdef SOF_CALLBACK
Sergunb 0:8f0d870509fe 76 SOF_Callback();
Sergunb 0:8f0d870509fe 77 #endif
Sergunb 0:8f0d870509fe 78 }
Sergunb 0:8f0d870509fe 79 #endif
Sergunb 0:8f0d870509fe 80 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 81
Sergunb 0:8f0d870509fe 82 #if (IMR_MSK & ISTR_CTR)
Sergunb 0:8f0d870509fe 83 if (wIstr & ISTR_CTR & wInterrupt_Mask)
Sergunb 0:8f0d870509fe 84 {
Sergunb 0:8f0d870509fe 85 /* servicing of the endpoint correct transfer interrupt */
Sergunb 0:8f0d870509fe 86 /* clear of the CTR flag into the sub */
Sergunb 0:8f0d870509fe 87 CTR_LP();
Sergunb 0:8f0d870509fe 88 #ifdef CTR_CALLBACK
Sergunb 0:8f0d870509fe 89 CTR_Callback();
Sergunb 0:8f0d870509fe 90 #endif
Sergunb 0:8f0d870509fe 91 }
Sergunb 0:8f0d870509fe 92 #endif
Sergunb 0:8f0d870509fe 93 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 94 #if (IMR_MSK & ISTR_RESET)
Sergunb 0:8f0d870509fe 95 if (wIstr & ISTR_RESET & wInterrupt_Mask)
Sergunb 0:8f0d870509fe 96 {
Sergunb 0:8f0d870509fe 97 _SetISTR((uint16_t)CLR_RESET);
Sergunb 0:8f0d870509fe 98 Device_Property.Reset();
Sergunb 0:8f0d870509fe 99 #ifdef RESET_CALLBACK
Sergunb 0:8f0d870509fe 100 RESET_Callback();
Sergunb 0:8f0d870509fe 101 #endif
Sergunb 0:8f0d870509fe 102 }
Sergunb 0:8f0d870509fe 103 #endif
Sergunb 0:8f0d870509fe 104 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 105 #if (IMR_MSK & ISTR_DOVR)
Sergunb 0:8f0d870509fe 106 if (wIstr & ISTR_DOVR & wInterrupt_Mask)
Sergunb 0:8f0d870509fe 107 {
Sergunb 0:8f0d870509fe 108 _SetISTR((uint16_t)CLR_DOVR);
Sergunb 0:8f0d870509fe 109 #ifdef DOVR_CALLBACK
Sergunb 0:8f0d870509fe 110 DOVR_Callback();
Sergunb 0:8f0d870509fe 111 #endif
Sergunb 0:8f0d870509fe 112 }
Sergunb 0:8f0d870509fe 113 #endif
Sergunb 0:8f0d870509fe 114 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 115 #if (IMR_MSK & ISTR_ERR)
Sergunb 0:8f0d870509fe 116 if (wIstr & ISTR_ERR & wInterrupt_Mask)
Sergunb 0:8f0d870509fe 117 {
Sergunb 0:8f0d870509fe 118 _SetISTR((uint16_t)CLR_ERR);
Sergunb 0:8f0d870509fe 119 #ifdef ERR_CALLBACK
Sergunb 0:8f0d870509fe 120 ERR_Callback();
Sergunb 0:8f0d870509fe 121 #endif
Sergunb 0:8f0d870509fe 122 }
Sergunb 0:8f0d870509fe 123 #endif
Sergunb 0:8f0d870509fe 124 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 125 #if (IMR_MSK & ISTR_WKUP)
Sergunb 0:8f0d870509fe 126 if (wIstr & ISTR_WKUP & wInterrupt_Mask)
Sergunb 0:8f0d870509fe 127 {
Sergunb 0:8f0d870509fe 128 _SetISTR((uint16_t)CLR_WKUP);
Sergunb 0:8f0d870509fe 129 Resume(RESUME_EXTERNAL);
Sergunb 0:8f0d870509fe 130 #ifdef WKUP_CALLBACK
Sergunb 0:8f0d870509fe 131 WKUP_Callback();
Sergunb 0:8f0d870509fe 132 #endif
Sergunb 0:8f0d870509fe 133 }
Sergunb 0:8f0d870509fe 134 #endif
Sergunb 0:8f0d870509fe 135 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 136 #if (IMR_MSK & ISTR_SUSP)
Sergunb 0:8f0d870509fe 137 if (wIstr & ISTR_SUSP & wInterrupt_Mask)
Sergunb 0:8f0d870509fe 138 {
Sergunb 0:8f0d870509fe 139
Sergunb 0:8f0d870509fe 140 /* check if SUSPEND is possible */
Sergunb 0:8f0d870509fe 141 if (fSuspendEnabled)
Sergunb 0:8f0d870509fe 142 {
Sergunb 0:8f0d870509fe 143 Suspend();
Sergunb 0:8f0d870509fe 144 }
Sergunb 0:8f0d870509fe 145 else
Sergunb 0:8f0d870509fe 146 {
Sergunb 0:8f0d870509fe 147 /* if not possible then resume after xx ms */
Sergunb 0:8f0d870509fe 148 Resume(RESUME_LATER);
Sergunb 0:8f0d870509fe 149 }
Sergunb 0:8f0d870509fe 150 /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */
Sergunb 0:8f0d870509fe 151 _SetISTR((uint16_t)CLR_SUSP);
Sergunb 0:8f0d870509fe 152 #ifdef SUSP_CALLBACK
Sergunb 0:8f0d870509fe 153 SUSP_Callback();
Sergunb 0:8f0d870509fe 154 #endif
Sergunb 0:8f0d870509fe 155 }
Sergunb 0:8f0d870509fe 156 #endif
Sergunb 0:8f0d870509fe 157 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 158
Sergunb 0:8f0d870509fe 159 #if (IMR_MSK & ISTR_ESOF)
Sergunb 0:8f0d870509fe 160 if (wIstr & ISTR_ESOF & wInterrupt_Mask)
Sergunb 0:8f0d870509fe 161 {
Sergunb 0:8f0d870509fe 162 _SetISTR((uint16_t)CLR_ESOF);
Sergunb 0:8f0d870509fe 163 /* resume handling timing is made with ESOFs */
Sergunb 0:8f0d870509fe 164 Resume(RESUME_ESOF); /* request without change of the machine state */
Sergunb 0:8f0d870509fe 165
Sergunb 0:8f0d870509fe 166 #ifdef ESOF_CALLBACK
Sergunb 0:8f0d870509fe 167 ESOF_Callback();
Sergunb 0:8f0d870509fe 168 #endif
Sergunb 0:8f0d870509fe 169 }
Sergunb 0:8f0d870509fe 170 #endif
Sergunb 0:8f0d870509fe 171 } /* USB_Istr */
Sergunb 0:8f0d870509fe 172
Sergunb 0:8f0d870509fe 173 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 174 #else /* STM32F10X_CL */
Sergunb 0:8f0d870509fe 175
Sergunb 0:8f0d870509fe 176
Sergunb 0:8f0d870509fe 177 /*******************************************************************************
Sergunb 0:8f0d870509fe 178 * Function Name : STM32_PCD_OTG_ISR_Handler
Sergunb 0:8f0d870509fe 179 * Description : Handles all USB Device Interrupts
Sergunb 0:8f0d870509fe 180 * Input : None
Sergunb 0:8f0d870509fe 181 * Output : None
Sergunb 0:8f0d870509fe 182 * Return : status
Sergunb 0:8f0d870509fe 183 *******************************************************************************/
Sergunb 0:8f0d870509fe 184 u32 STM32_PCD_OTG_ISR_Handler (void)
Sergunb 0:8f0d870509fe 185 {
Sergunb 0:8f0d870509fe 186 USB_OTG_GINTSTS_TypeDef gintr_status;
Sergunb 0:8f0d870509fe 187 u32 retval = 0;
Sergunb 0:8f0d870509fe 188
Sergunb 0:8f0d870509fe 189 if (USBD_FS_IsDeviceMode()) /* ensure that we are in device mode */
Sergunb 0:8f0d870509fe 190 {
Sergunb 0:8f0d870509fe 191 gintr_status.d32 = OTGD_FS_ReadCoreItr();
Sergunb 0:8f0d870509fe 192
Sergunb 0:8f0d870509fe 193 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 194
Sergunb 0:8f0d870509fe 195 /* If there is no interrupt pending exit the interrupt routine */
Sergunb 0:8f0d870509fe 196 if (!gintr_status.d32)
Sergunb 0:8f0d870509fe 197 {
Sergunb 0:8f0d870509fe 198 return 0;
Sergunb 0:8f0d870509fe 199 }
Sergunb 0:8f0d870509fe 200
Sergunb 0:8f0d870509fe 201 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 202 /* Early Suspend interrupt */
Sergunb 0:8f0d870509fe 203 #ifdef INTR_ERLYSUSPEND
Sergunb 0:8f0d870509fe 204 if (gintr_status.b.erlysuspend)
Sergunb 0:8f0d870509fe 205 {
Sergunb 0:8f0d870509fe 206 retval |= OTGD_FS_Handle_EarlySuspend_ISR();
Sergunb 0:8f0d870509fe 207 }
Sergunb 0:8f0d870509fe 208 #endif /* INTR_ERLYSUSPEND */
Sergunb 0:8f0d870509fe 209
Sergunb 0:8f0d870509fe 210 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 211 /* End of Periodic Frame interrupt */
Sergunb 0:8f0d870509fe 212 #ifdef INTR_EOPFRAME
Sergunb 0:8f0d870509fe 213 if (gintr_status.b.eopframe)
Sergunb 0:8f0d870509fe 214 {
Sergunb 0:8f0d870509fe 215 retval |= OTGD_FS_Handle_EOPF_ISR();
Sergunb 0:8f0d870509fe 216 }
Sergunb 0:8f0d870509fe 217 #endif /* INTR_EOPFRAME */
Sergunb 0:8f0d870509fe 218
Sergunb 0:8f0d870509fe 219 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 220 /* Non Periodic Tx FIFO Empty interrupt */
Sergunb 0:8f0d870509fe 221 #ifdef INTR_NPTXFEMPTY
Sergunb 0:8f0d870509fe 222 if (gintr_status.b.nptxfempty)
Sergunb 0:8f0d870509fe 223 {
Sergunb 0:8f0d870509fe 224 retval |= OTGD_FS_Handle_NPTxFE_ISR();
Sergunb 0:8f0d870509fe 225 }
Sergunb 0:8f0d870509fe 226 #endif /* INTR_NPTXFEMPTY */
Sergunb 0:8f0d870509fe 227
Sergunb 0:8f0d870509fe 228 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 229 /* Wakeup or RemoteWakeup interrupt */
Sergunb 0:8f0d870509fe 230 #ifdef INTR_WKUPINTR
Sergunb 0:8f0d870509fe 231 if (gintr_status.b.wkupintr)
Sergunb 0:8f0d870509fe 232 {
Sergunb 0:8f0d870509fe 233 retval |= OTGD_FS_Handle_Wakeup_ISR();
Sergunb 0:8f0d870509fe 234 }
Sergunb 0:8f0d870509fe 235 #endif /* INTR_WKUPINTR */
Sergunb 0:8f0d870509fe 236
Sergunb 0:8f0d870509fe 237 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 238 /* Suspend interrupt */
Sergunb 0:8f0d870509fe 239 #ifdef INTR_USBSUSPEND
Sergunb 0:8f0d870509fe 240 if (gintr_status.b.usbsuspend)
Sergunb 0:8f0d870509fe 241 {
Sergunb 0:8f0d870509fe 242 /* check if SUSPEND is possible */
Sergunb 0:8f0d870509fe 243 if (fSuspendEnabled)
Sergunb 0:8f0d870509fe 244 {
Sergunb 0:8f0d870509fe 245 Suspend();
Sergunb 0:8f0d870509fe 246 }
Sergunb 0:8f0d870509fe 247 else
Sergunb 0:8f0d870509fe 248 {
Sergunb 0:8f0d870509fe 249 /* if not possible then resume after xx ms */
Sergunb 0:8f0d870509fe 250 Resume(RESUME_LATER); /* This case shouldn't happen in OTG Device mode because
Sergunb 0:8f0d870509fe 251 there's no ESOF interrupt to increment the ResumeS.bESOFcnt in the Resume state machine */
Sergunb 0:8f0d870509fe 252 }
Sergunb 0:8f0d870509fe 253
Sergunb 0:8f0d870509fe 254 retval |= OTGD_FS_Handle_USBSuspend_ISR();
Sergunb 0:8f0d870509fe 255 }
Sergunb 0:8f0d870509fe 256 #endif /* INTR_USBSUSPEND */
Sergunb 0:8f0d870509fe 257
Sergunb 0:8f0d870509fe 258 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 259 /* Start of Frame interrupt */
Sergunb 0:8f0d870509fe 260 #ifdef INTR_SOFINTR
Sergunb 0:8f0d870509fe 261 if (gintr_status.b.sofintr)
Sergunb 0:8f0d870509fe 262 {
Sergunb 0:8f0d870509fe 263 /* Update the frame number variable */
Sergunb 0:8f0d870509fe 264 bIntPackSOF++;
Sergunb 0:8f0d870509fe 265
Sergunb 0:8f0d870509fe 266 retval |= OTGD_FS_Handle_Sof_ISR();
Sergunb 0:8f0d870509fe 267 }
Sergunb 0:8f0d870509fe 268 #endif /* INTR_SOFINTR */
Sergunb 0:8f0d870509fe 269
Sergunb 0:8f0d870509fe 270 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 271 /* Receive FIFO Queue Status Level interrupt */
Sergunb 0:8f0d870509fe 272 #ifdef INTR_RXSTSQLVL
Sergunb 0:8f0d870509fe 273 if (gintr_status.b.rxstsqlvl)
Sergunb 0:8f0d870509fe 274 {
Sergunb 0:8f0d870509fe 275 retval |= OTGD_FS_Handle_RxStatusQueueLevel_ISR();
Sergunb 0:8f0d870509fe 276 }
Sergunb 0:8f0d870509fe 277 #endif /* INTR_RXSTSQLVL */
Sergunb 0:8f0d870509fe 278
Sergunb 0:8f0d870509fe 279 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 280 /* Enumeration Done interrupt */
Sergunb 0:8f0d870509fe 281 #ifdef INTR_ENUMDONE
Sergunb 0:8f0d870509fe 282 if (gintr_status.b.enumdone)
Sergunb 0:8f0d870509fe 283 {
Sergunb 0:8f0d870509fe 284 retval |= OTGD_FS_Handle_EnumDone_ISR();
Sergunb 0:8f0d870509fe 285 }
Sergunb 0:8f0d870509fe 286 #endif /* INTR_ENUMDONE */
Sergunb 0:8f0d870509fe 287
Sergunb 0:8f0d870509fe 288 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 289 /* Reset interrupt */
Sergunb 0:8f0d870509fe 290 #ifdef INTR_USBRESET
Sergunb 0:8f0d870509fe 291 if (gintr_status.b.usbreset)
Sergunb 0:8f0d870509fe 292 {
Sergunb 0:8f0d870509fe 293 retval |= OTGD_FS_Handle_UsbReset_ISR();
Sergunb 0:8f0d870509fe 294 }
Sergunb 0:8f0d870509fe 295 #endif /* INTR_USBRESET */
Sergunb 0:8f0d870509fe 296
Sergunb 0:8f0d870509fe 297 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 298 /* IN Endpoint interrupt */
Sergunb 0:8f0d870509fe 299 #ifdef INTR_INEPINTR
Sergunb 0:8f0d870509fe 300 if (gintr_status.b.inepint)
Sergunb 0:8f0d870509fe 301 {
Sergunb 0:8f0d870509fe 302 retval |= OTGD_FS_Handle_InEP_ISR();
Sergunb 0:8f0d870509fe 303 }
Sergunb 0:8f0d870509fe 304 #endif /* INTR_INEPINTR */
Sergunb 0:8f0d870509fe 305
Sergunb 0:8f0d870509fe 306 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 307 /* OUT Endpoint interrupt */
Sergunb 0:8f0d870509fe 308 #ifdef INTR_OUTEPINTR
Sergunb 0:8f0d870509fe 309 if (gintr_status.b.outepintr)
Sergunb 0:8f0d870509fe 310 {
Sergunb 0:8f0d870509fe 311 retval |= OTGD_FS_Handle_OutEP_ISR();
Sergunb 0:8f0d870509fe 312 }
Sergunb 0:8f0d870509fe 313 #endif /* INTR_OUTEPINTR */
Sergunb 0:8f0d870509fe 314
Sergunb 0:8f0d870509fe 315 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 316 /* Mode Mismatch interrupt */
Sergunb 0:8f0d870509fe 317 #ifdef INTR_MODEMISMATCH
Sergunb 0:8f0d870509fe 318 if (gintr_status.b.modemismatch)
Sergunb 0:8f0d870509fe 319 {
Sergunb 0:8f0d870509fe 320 retval |= OTGD_FS_Handle_ModeMismatch_ISR();
Sergunb 0:8f0d870509fe 321 }
Sergunb 0:8f0d870509fe 322 #endif /* INTR_MODEMISMATCH */
Sergunb 0:8f0d870509fe 323
Sergunb 0:8f0d870509fe 324 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 325 /* Global IN Endpoints NAK Effective interrupt */
Sergunb 0:8f0d870509fe 326 #ifdef INTR_GINNAKEFF
Sergunb 0:8f0d870509fe 327 if (gintr_status.b.ginnakeff)
Sergunb 0:8f0d870509fe 328 {
Sergunb 0:8f0d870509fe 329 retval |= OTGD_FS_Handle_GInNakEff_ISR();
Sergunb 0:8f0d870509fe 330 }
Sergunb 0:8f0d870509fe 331 #endif /* INTR_GINNAKEFF */
Sergunb 0:8f0d870509fe 332
Sergunb 0:8f0d870509fe 333 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 334 /* Global OUT Endpoints NAK effective interrupt */
Sergunb 0:8f0d870509fe 335 #ifdef INTR_GOUTNAKEFF
Sergunb 0:8f0d870509fe 336 if (gintr_status.b.goutnakeff)
Sergunb 0:8f0d870509fe 337 {
Sergunb 0:8f0d870509fe 338 retval |= OTGD_FS_Handle_GOutNakEff_ISR();
Sergunb 0:8f0d870509fe 339 }
Sergunb 0:8f0d870509fe 340 #endif /* INTR_GOUTNAKEFF */
Sergunb 0:8f0d870509fe 341
Sergunb 0:8f0d870509fe 342 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 343 /* Isochronous Out packet Dropped interrupt */
Sergunb 0:8f0d870509fe 344 #ifdef INTR_ISOOUTDROP
Sergunb 0:8f0d870509fe 345 if (gintr_status.b.isooutdrop)
Sergunb 0:8f0d870509fe 346 {
Sergunb 0:8f0d870509fe 347 retval |= OTGD_FS_Handle_IsoOutDrop_ISR();
Sergunb 0:8f0d870509fe 348 }
Sergunb 0:8f0d870509fe 349 #endif /* INTR_ISOOUTDROP */
Sergunb 0:8f0d870509fe 350
Sergunb 0:8f0d870509fe 351 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 352 /* Endpoint Mismatch error interrupt */
Sergunb 0:8f0d870509fe 353 #ifdef INTR_EPMISMATCH
Sergunb 0:8f0d870509fe 354 if (gintr_status.b.epmismatch)
Sergunb 0:8f0d870509fe 355 {
Sergunb 0:8f0d870509fe 356 retval |= OTGD_FS_Handle_EPMismatch_ISR();
Sergunb 0:8f0d870509fe 357 }
Sergunb 0:8f0d870509fe 358 #endif /* INTR_EPMISMATCH */
Sergunb 0:8f0d870509fe 359
Sergunb 0:8f0d870509fe 360 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 361 /* Incomplete Isochronous IN transfer error interrupt */
Sergunb 0:8f0d870509fe 362 #ifdef INTR_INCOMPLISOIN
Sergunb 0:8f0d870509fe 363 if (gintr_status.b.incomplisoin)
Sergunb 0:8f0d870509fe 364 {
Sergunb 0:8f0d870509fe 365 retval |= OTGD_FS_Handle_IncomplIsoIn_ISR();
Sergunb 0:8f0d870509fe 366 }
Sergunb 0:8f0d870509fe 367 #endif /* INTR_INCOMPLISOIN */
Sergunb 0:8f0d870509fe 368
Sergunb 0:8f0d870509fe 369 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
Sergunb 0:8f0d870509fe 370 /* Incomplete Isochronous OUT transfer error interrupt */
Sergunb 0:8f0d870509fe 371 #ifdef INTR_INCOMPLISOOUT
Sergunb 0:8f0d870509fe 372 if (gintr_status.b.outepintr)
Sergunb 0:8f0d870509fe 373 {
Sergunb 0:8f0d870509fe 374 retval |= OTGD_FS_Handle_IncomplIsoOut_ISR();
Sergunb 0:8f0d870509fe 375 }
Sergunb 0:8f0d870509fe 376 #endif /* INTR_INCOMPLISOOUT */
Sergunb 0:8f0d870509fe 377
Sergunb 0:8f0d870509fe 378 }
Sergunb 0:8f0d870509fe 379 return retval;
Sergunb 0:8f0d870509fe 380 }
Sergunb 0:8f0d870509fe 381
Sergunb 0:8f0d870509fe 382 #endif /* STM32F10X_CL */
Sergunb 0:8f0d870509fe 383
Sergunb 0:8f0d870509fe 384 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/