scsi2sd-util crash on exit fix (again)
[SCSI2SD-V6.git] / software / SCSI2SD / v3 / SCSI2SD.cydsn / Generated_Source / PSoC5 / SCSI_SEL_ISR.c
1 /*******************************************************************************
2 * File Name: SCSI_SEL_ISR.c  
3 * Version 1.70
4 *
5 *  Description:
6 *   API for controlling the state of an interrupt.
7 *
8 *
9 *  Note:
10 *
11 ********************************************************************************
12 * Copyright 2008-2012, Cypress Semiconductor Corporation.  All rights reserved.
13 * You may use this file only in accordance with the license, terms, conditions, 
14 * disclaimers, and limitations in the end user license agreement accompanying 
15 * the software package with which this file was provided.
16 *******************************************************************************/
17
18
19 #include <cydevice_trm.h>
20 #include <CyLib.h>
21 #include <SCSI_SEL_ISR.h>
22
23 #if !defined(SCSI_SEL_ISR__REMOVED) /* Check for removal by optimization */
24
25 /*******************************************************************************
26 *  Place your includes, defines and code here 
27 ********************************************************************************/
28 /* `#START SCSI_SEL_ISR_intc` */
29
30 /* `#END` */
31
32 #ifndef CYINT_IRQ_BASE
33 #define CYINT_IRQ_BASE      16
34 #endif /* CYINT_IRQ_BASE */
35 #ifndef CYINT_VECT_TABLE
36 #define CYINT_VECT_TABLE    ((cyisraddress **) CYREG_NVIC_VECT_OFFSET)
37 #endif /* CYINT_VECT_TABLE */
38
39 /* Declared in startup, used to set unused interrupts to. */
40 CY_ISR_PROTO(IntDefaultHandler);
41
42
43 /*******************************************************************************
44 * Function Name: SCSI_SEL_ISR_Start
45 ********************************************************************************
46 *
47 * Summary:
48 *  Set up the interrupt and enable it.
49 *
50 * Parameters:  
51 *   None
52 *
53 * Return:
54 *   None
55 *
56 *******************************************************************************/
57 void SCSI_SEL_ISR_Start(void)
58 {
59     /* For all we know the interrupt is active. */
60     SCSI_SEL_ISR_Disable();
61
62     /* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */
63     SCSI_SEL_ISR_SetVector(&SCSI_SEL_ISR_Interrupt);
64
65     /* Set the priority. */
66     SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER);
67
68     /* Enable it. */
69     SCSI_SEL_ISR_Enable();
70 }
71
72
73 /*******************************************************************************
74 * Function Name: SCSI_SEL_ISR_StartEx
75 ********************************************************************************
76 *
77 * Summary:
78 *  Set up the interrupt and enable it.
79 *
80 * Parameters:  
81 *   address: Address of the ISR to set in the interrupt vector table.
82 *
83 * Return:
84 *   None
85 *
86 *******************************************************************************/
87 void SCSI_SEL_ISR_StartEx(cyisraddress address)
88 {
89     /* For all we know the interrupt is active. */
90     SCSI_SEL_ISR_Disable();
91
92     /* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */
93     SCSI_SEL_ISR_SetVector(address);
94
95     /* Set the priority. */
96     SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER);
97
98     /* Enable it. */
99     SCSI_SEL_ISR_Enable();
100 }
101
102
103 /*******************************************************************************
104 * Function Name: SCSI_SEL_ISR_Stop
105 ********************************************************************************
106 *
107 * Summary:
108 *   Disables and removes the interrupt.
109 *
110 * Parameters:  
111 *
112 * Return:
113 *   None
114 *
115 *******************************************************************************/
116 void SCSI_SEL_ISR_Stop(void)
117 {
118     /* Disable this interrupt. */
119     SCSI_SEL_ISR_Disable();
120
121     /* Set the ISR to point to the passive one. */
122     SCSI_SEL_ISR_SetVector(&IntDefaultHandler);
123 }
124
125
126 /*******************************************************************************
127 * Function Name: SCSI_SEL_ISR_Interrupt
128 ********************************************************************************
129 *
130 * Summary:
131 *   The default Interrupt Service Routine for SCSI_SEL_ISR.
132 *
133 *   Add custom code between the coments to keep the next version of this file
134 *   from over writting your code.
135 *
136 * Parameters:  
137 *
138 * Return:
139 *   None
140 *
141 *******************************************************************************/
142 CY_ISR(SCSI_SEL_ISR_Interrupt)
143 {
144     /*  Place your Interrupt code here. */
145     /* `#START SCSI_SEL_ISR_Interrupt` */
146
147     /* `#END` */
148 }
149
150
151 /*******************************************************************************
152 * Function Name: SCSI_SEL_ISR_SetVector
153 ********************************************************************************
154 *
155 * Summary:
156 *   Change the ISR vector for the Interrupt. Note calling SCSI_SEL_ISR_Start
157 *   will override any effect this method would have had. To set the vector 
158 *   before the component has been started use SCSI_SEL_ISR_StartEx instead.
159 *
160 * Parameters:
161 *   address: Address of the ISR to set in the interrupt vector table.
162 *
163 * Return:
164 *   None
165 *
166 *******************************************************************************/
167 void SCSI_SEL_ISR_SetVector(cyisraddress address)
168 {
169     cyisraddress * ramVectorTable;
170
171     ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;
172
173     ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER] = address;
174 }
175
176
177 /*******************************************************************************
178 * Function Name: SCSI_SEL_ISR_GetVector
179 ********************************************************************************
180 *
181 * Summary:
182 *   Gets the "address" of the current ISR vector for the Interrupt.
183 *
184 * Parameters:
185 *   None
186 *
187 * Return:
188 *   Address of the ISR in the interrupt vector table.
189 *
190 *******************************************************************************/
191 cyisraddress SCSI_SEL_ISR_GetVector(void)
192 {
193     cyisraddress * ramVectorTable;
194
195     ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;
196
197     return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER];
198 }
199
200
201 /*******************************************************************************
202 * Function Name: SCSI_SEL_ISR_SetPriority
203 ********************************************************************************
204 *
205 * Summary:
206 *   Sets the Priority of the Interrupt. Note calling SCSI_SEL_ISR_Start
207 *   or SCSI_SEL_ISR_StartEx will override any effect this method 
208 *   would have had. This method should only be called after 
209 *   SCSI_SEL_ISR_Start or SCSI_SEL_ISR_StartEx has been called. To set 
210 *   the initial priority for the component use the cydwr file in the tool.
211 *
212 * Parameters:
213 *   priority: Priority of the interrupt. 0 - 7, 0 being the highest.
214 *
215 * Return:
216 *   None
217 *
218 *******************************************************************************/
219 void SCSI_SEL_ISR_SetPriority(uint8 priority)
220 {
221     *SCSI_SEL_ISR_INTC_PRIOR = priority << 5;
222 }
223
224
225 /*******************************************************************************
226 * Function Name: SCSI_SEL_ISR_GetPriority
227 ********************************************************************************
228 *
229 * Summary:
230 *   Gets the Priority of the Interrupt.
231 *
232 * Parameters:
233 *   None
234 *
235 * Return:
236 *   Priority of the interrupt. 0 - 7, 0 being the highest.
237 *
238 *******************************************************************************/
239 uint8 SCSI_SEL_ISR_GetPriority(void)
240 {
241     uint8 priority;
242
243
244     priority = *SCSI_SEL_ISR_INTC_PRIOR >> 5;
245
246     return priority;
247 }
248
249
250 /*******************************************************************************
251 * Function Name: SCSI_SEL_ISR_Enable
252 ********************************************************************************
253 *
254 * Summary:
255 *   Enables the interrupt.
256 *
257 * Parameters:
258 *   None
259 *
260 * Return:
261 *   None
262 *
263 *******************************************************************************/
264 void SCSI_SEL_ISR_Enable(void)
265 {
266     /* Enable the general interrupt. */
267     *SCSI_SEL_ISR_INTC_SET_EN = SCSI_SEL_ISR__INTC_MASK;
268 }
269
270
271 /*******************************************************************************
272 * Function Name: SCSI_SEL_ISR_GetState
273 ********************************************************************************
274 *
275 * Summary:
276 *   Gets the state (enabled, disabled) of the Interrupt.
277 *
278 * Parameters:
279 *   None
280 *
281 * Return:
282 *   1 if enabled, 0 if disabled.
283 *
284 *******************************************************************************/
285 uint8 SCSI_SEL_ISR_GetState(void)
286 {
287     /* Get the state of the general interrupt. */
288     return ((*SCSI_SEL_ISR_INTC_SET_EN & (uint32)SCSI_SEL_ISR__INTC_MASK) != 0u) ? 1u:0u;
289 }
290
291
292 /*******************************************************************************
293 * Function Name: SCSI_SEL_ISR_Disable
294 ********************************************************************************
295 *
296 * Summary:
297 *   Disables the Interrupt.
298 *
299 * Parameters:
300 *   None
301 *
302 * Return:
303 *   None
304 *
305 *******************************************************************************/
306 void SCSI_SEL_ISR_Disable(void)
307 {
308     /* Disable the general interrupt. */
309     *SCSI_SEL_ISR_INTC_CLR_EN = SCSI_SEL_ISR__INTC_MASK;
310 }
311
312
313 /*******************************************************************************
314 * Function Name: SCSI_SEL_ISR_SetPending
315 ********************************************************************************
316 *
317 * Summary:
318 *   Causes the Interrupt to enter the pending state, a software method of
319 *   generating the interrupt.
320 *
321 * Parameters:
322 *   None
323 *
324 * Return:
325 *   None
326 *
327 *******************************************************************************/
328 void SCSI_SEL_ISR_SetPending(void)
329 {
330     *SCSI_SEL_ISR_INTC_SET_PD = SCSI_SEL_ISR__INTC_MASK;
331 }
332
333
334 /*******************************************************************************
335 * Function Name: SCSI_SEL_ISR_ClearPending
336 ********************************************************************************
337 *
338 * Summary:
339 *   Clears a pending interrupt.
340 *
341 * Parameters:
342 *   None
343 *
344 * Return:
345 *   None
346 *
347 *******************************************************************************/
348 void SCSI_SEL_ISR_ClearPending(void)
349 {
350     *SCSI_SEL_ISR_INTC_CLR_PD = SCSI_SEL_ISR__INTC_MASK;
351 }
352
353 #endif /* End check for removal by optimization */
354
355
356 /* [] END OF FILE */