Glitch filter configuration options and update to PSoC Creator v3.2
[SCSI2SD-V6.git] / software / SCSI2SD / v3 / SCSI2SD.cydsn / Generated_Source / PSoC5 / SCSI_RST_ISR.c
1 /*******************************************************************************\r
2 * File Name: SCSI_RST_ISR.c  \r
3 * Version 1.70\r
4 *\r
5 *  Description:\r
6 *   API for controlling the state of an interrupt.\r
7 *\r
8 *\r
9 *  Note:\r
10 *\r
11 ********************************************************************************\r
12 * Copyright 2008-2015, Cypress Semiconductor Corporation.  All rights reserved.\r
13 * You may use this file only in accordance with the license, terms, conditions, \r
14 * disclaimers, and limitations in the end user license agreement accompanying \r
15 * the software package with which this file was provided.\r
16 *******************************************************************************/\r
17 \r
18 \r
19 #include <cydevice_trm.h>\r
20 #include <CyLib.h>\r
21 #include <SCSI_RST_ISR.h>\r
22 \r
23 #if !defined(SCSI_RST_ISR__REMOVED) /* Check for removal by optimization */\r
24 \r
25 /*******************************************************************************\r
26 *  Place your includes, defines and code here \r
27 ********************************************************************************/\r
28 /* `#START SCSI_RST_ISR_intc` */\r
29 \r
30 /* `#END` */\r
31 \r
32 #ifndef CYINT_IRQ_BASE\r
33 #define CYINT_IRQ_BASE      16\r
34 #endif /* CYINT_IRQ_BASE */\r
35 #ifndef CYINT_VECT_TABLE\r
36 #define CYINT_VECT_TABLE    ((cyisraddress **) CYREG_NVIC_VECT_OFFSET)\r
37 #endif /* CYINT_VECT_TABLE */\r
38 \r
39 /* Declared in startup, used to set unused interrupts to. */\r
40 CY_ISR_PROTO(IntDefaultHandler);\r
41 \r
42 \r
43 /*******************************************************************************\r
44 * Function Name: SCSI_RST_ISR_Start\r
45 ********************************************************************************\r
46 *\r
47 * Summary:\r
48 *  Set up the interrupt and enable it. This function disables the interrupt, \r
49 *  sets the default interrupt vector, sets the priority from the value in the\r
50 *  Design Wide Resources Interrupt Editor, then enables the interrupt to the \r
51 *  interrupt controller.\r
52 *\r
53 * Parameters:  \r
54 *   None\r
55 *\r
56 * Return:\r
57 *   None\r
58 *\r
59 *******************************************************************************/\r
60 void SCSI_RST_ISR_Start(void)\r
61 {\r
62     /* For all we know the interrupt is active. */\r
63     SCSI_RST_ISR_Disable();\r
64 \r
65     /* Set the ISR to point to the SCSI_RST_ISR Interrupt. */\r
66     SCSI_RST_ISR_SetVector(&SCSI_RST_ISR_Interrupt);\r
67 \r
68     /* Set the priority. */\r
69     SCSI_RST_ISR_SetPriority((uint8)SCSI_RST_ISR_INTC_PRIOR_NUMBER);\r
70 \r
71     /* Enable it. */\r
72     SCSI_RST_ISR_Enable();\r
73 }\r
74 \r
75 \r
76 /*******************************************************************************\r
77 * Function Name: SCSI_RST_ISR_StartEx\r
78 ********************************************************************************\r
79 *\r
80 * Summary:\r
81 *  Sets up the interrupt and enables it. This function disables the interrupt,\r
82 *  sets the interrupt vector based on the address passed in, sets the priority \r
83 *  from the value in the Design Wide Resources Interrupt Editor, then enables \r
84 *  the interrupt to the interrupt controller.\r
85 *  \r
86 *  When defining ISR functions, the CY_ISR and CY_ISR_PROTO macros should be \r
87 *  used to provide consistent definition across compilers:\r
88 *  \r
89 *  Function definition example:\r
90 *   CY_ISR(MyISR)\r
91 *   {\r
92 *   }\r
93 *   Function prototype example:\r
94 *   CY_ISR_PROTO(MyISR);\r
95 *\r
96 * Parameters:  \r
97 *   address: Address of the ISR to set in the interrupt vector table.\r
98 *\r
99 * Return:\r
100 *   None\r
101 *\r
102 *******************************************************************************/\r
103 void SCSI_RST_ISR_StartEx(cyisraddress address)\r
104 {\r
105     /* For all we know the interrupt is active. */\r
106     SCSI_RST_ISR_Disable();\r
107 \r
108     /* Set the ISR to point to the SCSI_RST_ISR Interrupt. */\r
109     SCSI_RST_ISR_SetVector(address);\r
110 \r
111     /* Set the priority. */\r
112     SCSI_RST_ISR_SetPriority((uint8)SCSI_RST_ISR_INTC_PRIOR_NUMBER);\r
113 \r
114     /* Enable it. */\r
115     SCSI_RST_ISR_Enable();\r
116 }\r
117 \r
118 \r
119 /*******************************************************************************\r
120 * Function Name: SCSI_RST_ISR_Stop\r
121 ********************************************************************************\r
122 *\r
123 * Summary:\r
124 *   Disables and removes the interrupt.\r
125 *\r
126 * Parameters:  \r
127 *   None\r
128 *\r
129 * Return:\r
130 *   None\r
131 *\r
132 *******************************************************************************/\r
133 void SCSI_RST_ISR_Stop(void)\r
134 {\r
135     /* Disable this interrupt. */\r
136     SCSI_RST_ISR_Disable();\r
137 \r
138     /* Set the ISR to point to the passive one. */\r
139     SCSI_RST_ISR_SetVector(&IntDefaultHandler);\r
140 }\r
141 \r
142 \r
143 /*******************************************************************************\r
144 * Function Name: SCSI_RST_ISR_Interrupt\r
145 ********************************************************************************\r
146 *\r
147 * Summary:\r
148 *   The default Interrupt Service Routine for SCSI_RST_ISR.\r
149 *\r
150 *   Add custom code between the coments to keep the next version of this file\r
151 *   from over writting your code.\r
152 *\r
153 * Parameters:  \r
154 *\r
155 * Return:\r
156 *   None\r
157 *\r
158 *******************************************************************************/\r
159 CY_ISR(SCSI_RST_ISR_Interrupt)\r
160 {\r
161     /*  Place your Interrupt code here. */\r
162     /* `#START SCSI_RST_ISR_Interrupt` */\r
163 \r
164     /* `#END` */\r
165 }\r
166 \r
167 \r
168 /*******************************************************************************\r
169 * Function Name: SCSI_RST_ISR_SetVector\r
170 ********************************************************************************\r
171 *\r
172 * Summary:\r
173 *   Change the ISR vector for the Interrupt. Note calling SCSI_RST_ISR_Start\r
174 *   will override any effect this method would have had. To set the vector \r
175 *   before the component has been started use SCSI_RST_ISR_StartEx instead.\r
176\r
177 *   When defining ISR functions, the CY_ISR and CY_ISR_PROTO macros should be \r
178 *   used to provide consistent definition across compilers:\r
179 *\r
180 *   Function definition example:\r
181 *   CY_ISR(MyISR)\r
182 *   {\r
183 *   }\r
184 *\r
185 *   Function prototype example:\r
186 *     CY_ISR_PROTO(MyISR);\r
187 *\r
188 * Parameters:\r
189 *   address: Address of the ISR to set in the interrupt vector table.\r
190 *\r
191 * Return:\r
192 *   None\r
193 *\r
194 *******************************************************************************/\r
195 void SCSI_RST_ISR_SetVector(cyisraddress address)\r
196 {\r
197     cyisraddress * ramVectorTable;\r
198 \r
199     ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;\r
200 \r
201     ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_RST_ISR__INTC_NUMBER] = address;\r
202 }\r
203 \r
204 \r
205 /*******************************************************************************\r
206 * Function Name: SCSI_RST_ISR_GetVector\r
207 ********************************************************************************\r
208 *\r
209 * Summary:\r
210 *   Gets the "address" of the current ISR vector for the Interrupt.\r
211 *\r
212 * Parameters:\r
213 *   None\r
214 *\r
215 * Return:\r
216 *   Address of the ISR in the interrupt vector table.\r
217 *\r
218 *******************************************************************************/\r
219 cyisraddress SCSI_RST_ISR_GetVector(void)\r
220 {\r
221     cyisraddress * ramVectorTable;\r
222 \r
223     ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;\r
224 \r
225     return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_RST_ISR__INTC_NUMBER];\r
226 }\r
227 \r
228 \r
229 /*******************************************************************************\r
230 * Function Name: SCSI_RST_ISR_SetPriority\r
231 ********************************************************************************\r
232 *\r
233 * Summary:\r
234 *   Sets the Priority of the Interrupt. \r
235 *\r
236 *   Note calling SCSI_RST_ISR_Start or SCSI_RST_ISR_StartEx will \r
237 *   override any effect this API would have had. This API should only be called\r
238 *   after SCSI_RST_ISR_Start or SCSI_RST_ISR_StartEx has been called. \r
239 *   To set the initial priority for the component, use the Design-Wide Resources\r
240 *   Interrupt Editor.\r
241 *\r
242 *   Note This API has no effect on Non-maskable interrupt NMI).\r
243 *\r
244 * Parameters:\r
245 *   priority: Priority of the interrupt, 0 being the highest priority\r
246 *             PSoC 3 and PSoC 5LP: Priority is from 0 to 7.\r
247 *             PSoC 4: Priority is from 0 to 3.\r
248 *\r
249 * Return:\r
250 *   None\r
251 *\r
252 *******************************************************************************/\r
253 void SCSI_RST_ISR_SetPriority(uint8 priority)\r
254 {\r
255     *SCSI_RST_ISR_INTC_PRIOR = priority << 5;\r
256 }\r
257 \r
258 \r
259 /*******************************************************************************\r
260 * Function Name: SCSI_RST_ISR_GetPriority\r
261 ********************************************************************************\r
262 *\r
263 * Summary:\r
264 *   Gets the Priority of the Interrupt.\r
265 *\r
266 * Parameters:\r
267 *   None\r
268 *\r
269 * Return:\r
270 *   Priority of the interrupt, 0 being the highest priority\r
271 *    PSoC 3 and PSoC 5LP: Priority is from 0 to 7.\r
272 *    PSoC 4: Priority is from 0 to 3.\r
273 *\r
274 *******************************************************************************/\r
275 uint8 SCSI_RST_ISR_GetPriority(void)\r
276 {\r
277     uint8 priority;\r
278 \r
279 \r
280     priority = *SCSI_RST_ISR_INTC_PRIOR >> 5;\r
281 \r
282     return priority;\r
283 }\r
284 \r
285 \r
286 /*******************************************************************************\r
287 * Function Name: SCSI_RST_ISR_Enable\r
288 ********************************************************************************\r
289 *\r
290 * Summary:\r
291 *   Enables the interrupt to the interrupt controller. Do not call this function\r
292 *   unless ISR_Start() has been called or the functionality of the ISR_Start() \r
293 *   function, which sets the vector and the priority, has been called.\r
294 *\r
295 * Parameters:\r
296 *   None\r
297 *\r
298 * Return:\r
299 *   None\r
300 *\r
301 *******************************************************************************/\r
302 void SCSI_RST_ISR_Enable(void)\r
303 {\r
304     /* Enable the general interrupt. */\r
305     *SCSI_RST_ISR_INTC_SET_EN = SCSI_RST_ISR__INTC_MASK;\r
306 }\r
307 \r
308 \r
309 /*******************************************************************************\r
310 * Function Name: SCSI_RST_ISR_GetState\r
311 ********************************************************************************\r
312 *\r
313 * Summary:\r
314 *   Gets the state (enabled, disabled) of the Interrupt.\r
315 *\r
316 * Parameters:\r
317 *   None\r
318 *\r
319 * Return:\r
320 *   1 if enabled, 0 if disabled.\r
321 *\r
322 *******************************************************************************/\r
323 uint8 SCSI_RST_ISR_GetState(void)\r
324 {\r
325     /* Get the state of the general interrupt. */\r
326     return ((*SCSI_RST_ISR_INTC_SET_EN & (uint32)SCSI_RST_ISR__INTC_MASK) != 0u) ? 1u:0u;\r
327 }\r
328 \r
329 \r
330 /*******************************************************************************\r
331 * Function Name: SCSI_RST_ISR_Disable\r
332 ********************************************************************************\r
333 *\r
334 * Summary:\r
335 *   Disables the Interrupt in the interrupt controller.\r
336 *\r
337 * Parameters:\r
338 *   None\r
339 *\r
340 * Return:\r
341 *   None\r
342 *\r
343 *******************************************************************************/\r
344 void SCSI_RST_ISR_Disable(void)\r
345 {\r
346     /* Disable the general interrupt. */\r
347     *SCSI_RST_ISR_INTC_CLR_EN = SCSI_RST_ISR__INTC_MASK;\r
348 }\r
349 \r
350 \r
351 /*******************************************************************************\r
352 * Function Name: SCSI_RST_ISR_SetPending\r
353 ********************************************************************************\r
354 *\r
355 * Summary:\r
356 *   Causes the Interrupt to enter the pending state, a software method of\r
357 *   generating the interrupt.\r
358 *\r
359 * Parameters:\r
360 *   None\r
361 *\r
362 * Return:\r
363 *   None\r
364 *\r
365 * Side Effects:\r
366 *   If interrupts are enabled and the interrupt is set up properly, the ISR is\r
367 *   entered (depending on the priority of this interrupt and other pending \r
368 *   interrupts).\r
369 *\r
370 *******************************************************************************/\r
371 void SCSI_RST_ISR_SetPending(void)\r
372 {\r
373     *SCSI_RST_ISR_INTC_SET_PD = SCSI_RST_ISR__INTC_MASK;\r
374 }\r
375 \r
376 \r
377 /*******************************************************************************\r
378 * Function Name: SCSI_RST_ISR_ClearPending\r
379 ********************************************************************************\r
380 *\r
381 * Summary:\r
382 *   Clears a pending interrupt in the interrupt controller.\r
383 *\r
384 *   Note Some interrupt sources are clear-on-read and require the block \r
385 *   interrupt/status register to be read/cleared with the appropriate block API \r
386 *   (GPIO, UART, and so on). Otherwise the ISR will continue to remain in \r
387 *   pending state even though the interrupt itself is cleared using this API.\r
388 *\r
389 * Parameters:\r
390 *   None\r
391 *\r
392 * Return:\r
393 *   None\r
394 *\r
395 *******************************************************************************/\r
396 void SCSI_RST_ISR_ClearPending(void)\r
397 {\r
398     *SCSI_RST_ISR_INTC_CLR_PD = SCSI_RST_ISR__INTC_MASK;\r
399 }\r
400 \r
401 #endif /* End check for removal by optimization */\r
402 \r
403 \r
404 /* [] END OF FILE */\r