]> begriffs open source - cmsis-freertos/blob - Demo/RX100-RSK_IAR/ParTest.c
Update README.md - branch main is now the base branch
[cmsis-freertos] / Demo / RX100-RSK_IAR / ParTest.c
1 /*
2  * FreeRTOS V202111.00
3  * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of
6  * this software and associated documentation files (the "Software"), to deal in
7  * the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9  * the Software, and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * http://www.FreeRTOS.org
23  * http://aws.amazon.com/freertos
24  *
25  * 1 tab == 4 spaces!
26  */
27
28 /*-----------------------------------------------------------
29  * Simple IO routines to control the LEDs.
30  *-----------------------------------------------------------*/
31
32 /* Scheduler includes. */
33 #include "FreeRTOS.h"
34 #include "task.h"
35
36 /* Demo includes. */
37 #include "partest.h"
38
39 #define partestNUM_LEDS ( 4 )
40
41 long lParTestGetLEDState( unsigned long ulLED );
42
43 /*-----------------------------------------------------------*/
44
45 void vParTestInitialise( void )
46 {
47         /* Port pin configuration is done by the low level set up prior to this
48         function being called. */
49 }
50 /*-----------------------------------------------------------*/
51
52 void vParTestSetLED( unsigned long ulLED, signed long xValue )
53 {
54         if( ulLED < partestNUM_LEDS )
55         {
56                 if( xValue != 0 )
57                 {
58                         /* Turn the LED on. */
59                         taskENTER_CRITICAL();
60                         {
61                                 switch( ulLED )
62                                 {
63                                         case 0: LED0 = LED_ON;
64                                                         break;
65                                         case 1: LED1 = LED_ON;
66                                                         break;
67                                         case 2: LED2 = LED_ON;
68                                                         break;
69                                         case 3: LED3 = LED_ON;
70                                                         break;
71                                 }
72                         }
73                         taskEXIT_CRITICAL();
74                 }
75                 else
76                 {
77                         /* Turn the LED off. */
78                         taskENTER_CRITICAL();
79                         {
80                                 switch( ulLED )
81                                 {
82                                         case 0: LED0 = LED_OFF;
83                                                         break;
84                                         case 1: LED1 = LED_OFF;
85                                                         break;
86                                         case 2: LED2 = LED_OFF;
87                                                         break;
88                                         case 3: LED3 = LED_OFF;
89                                                         break;
90                                 }
91
92                         }
93                         taskEXIT_CRITICAL();
94                 }
95         }
96 }
97 /*-----------------------------------------------------------*/
98
99 void vParTestToggleLED( unsigned long ulLED )
100 {
101         if( ulLED < partestNUM_LEDS )
102         {
103                 taskENTER_CRITICAL();
104                 {
105                         if( lParTestGetLEDState( ulLED ) != 0x00 )
106                         {
107                                 vParTestSetLED( ulLED, 0 );
108                         }
109                         else
110                         {
111                                 vParTestSetLED( ulLED, 1 );
112                         }
113                 }
114                 taskEXIT_CRITICAL();
115         }
116 }
117 /*-----------------------------------------------------------*/
118
119 long lParTestGetLEDState( unsigned long ulLED )
120 {
121 long lReturn = pdTRUE;
122
123         if( ulLED < partestNUM_LEDS )
124         {
125                 switch( ulLED )
126                 {
127                         case 0  :       if( LED0 != 0 )
128                                                 {
129                                                         lReturn =  pdFALSE;
130                                                 }
131                                                 break;
132                         case 1  :       if( LED1 != 0 )
133                                                 {
134                                                         lReturn =  pdFALSE;
135                                                 }
136                                                 break;
137                         case 2  :       if( LED2 != 0 )
138                                                 {
139                                                         lReturn =  pdFALSE;
140                                                 }
141                                                 break;
142                         case 3  :       if( LED3 != 0 )
143                                                 {
144                                                         lReturn =  pdFALSE;
145                                                 }
146                                                 break;
147                 }
148         }
149
150         return lReturn;
151 }
152 /*-----------------------------------------------------------*/
153