]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/MB96350_Softune_Dice_Kit/ParTest/ParTest.c
7e9efffa3728166ba6e5d6e42acd0f7b5ad90dec
[freertos] / FreeRTOS / Demo / MB96350_Softune_Dice_Kit / ParTest / ParTest.c
1 /*\r
2  * FreeRTOS Kernel V10.2.1\r
3  * Copyright (C) 2019 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\r
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
6  * this software and associated documentation files (the "Software"), to deal in\r
7  * the Software without restriction, including without limitation the rights to\r
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
9  * the Software, and to permit persons to whom the Software is furnished to do so,\r
10  * subject to the following conditions:\r
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software.\r
14  *\r
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
21  *\r
22  * http://www.FreeRTOS.org\r
23  * http://aws.amazon.com/freertos\r
24  *\r
25  * 1 tab == 4 spaces!\r
26  */\r
27 \r
28 /*-----------------------------------------------------------\r
29  * Simple parallel port IO routines.\r
30  *-----------------------------------------------------------*/\r
31 \r
32 /* FreeRTOS includes. */\r
33 #include "FreeRTOS.h"\r
34 #include "task.h"\r
35 \r
36 /* Demo includes. */\r
37 #include "partest.h"\r
38 \r
39 #define partstTOTAL_NUM_LEDs            16\r
40 #define partstNUM_LEDs_PER_DISPLAY      8\r
41 \r
42 volatile unsigned char *pucDisplayOutput[ 2 ] = { ( unsigned char * ) 3, ( unsigned char * ) 5 };\r
43 \r
44 void vParTestInitialise( void )\r
45 {\r
46         /* In this case all the initialisation is performed in prvSetupHardware()\r
47         in main.c. */   \r
48 }\r
49 /*-----------------------------------------------------------*/\r
50 \r
51 void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
52 {\r
53 unsigned portBASE_TYPE uxLEDMask = 0x01;\r
54 \r
55         if( uxLED < partstNUM_LEDs_PER_DISPLAY )\r
56         {\r
57                 uxLEDMask <<= uxLED;\r
58                 \r
59                 taskENTER_CRITICAL();\r
60                 {\r
61                         if( xValue )\r
62                         {\r
63                                 *pucDisplayOutput[ 0 ] &= ~uxLEDMask;\r
64                         }\r
65                         else\r
66                         {\r
67                                 *pucDisplayOutput[ 0 ] |= uxLEDMask;                            \r
68                         }\r
69                 }\r
70                 taskEXIT_CRITICAL();\r
71         }\r
72         else if( uxLED < partstTOTAL_NUM_LEDs )\r
73         {\r
74                 uxLED -= partstNUM_LEDs_PER_DISPLAY;\r
75 \r
76                 uxLEDMask <<= uxLED;\r
77                 \r
78                 taskENTER_CRITICAL();\r
79                 {\r
80                         if( xValue )\r
81                         {\r
82                                 *pucDisplayOutput[ 1 ] &= ~uxLEDMask;\r
83                         }\r
84                         else\r
85                         {\r
86                                 *pucDisplayOutput[ 1 ] |= uxLEDMask;                            \r
87                         }\r
88                 }\r
89                 taskEXIT_CRITICAL();\r
90         }\r
91 }\r
92 /*-----------------------------------------------------------*/\r
93 \r
94 void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
95 {\r
96 unsigned portBASE_TYPE uxLEDMask = 0x01;\r
97 \r
98         if( uxLED < partstNUM_LEDs_PER_DISPLAY )\r
99         {\r
100                 uxLEDMask <<= uxLED;\r
101                 \r
102                 taskENTER_CRITICAL();\r
103                 {\r
104                         if( *pucDisplayOutput[ 0 ] & uxLEDMask )\r
105                         {\r
106                                 *pucDisplayOutput[ 0 ] &= ~uxLEDMask;\r
107                         }\r
108                         else\r
109                         {\r
110                                 *pucDisplayOutput[ 0 ] |= uxLEDMask;\r
111                         }\r
112                 }\r
113                 taskEXIT_CRITICAL();\r
114         }\r
115         else if( uxLED < partstTOTAL_NUM_LEDs )\r
116         {\r
117                 uxLED -= partstNUM_LEDs_PER_DISPLAY;\r
118 \r
119                 uxLEDMask <<= uxLED;\r
120                 \r
121                 taskENTER_CRITICAL();\r
122                 {\r
123                         if( *pucDisplayOutput[ 1 ] & uxLEDMask )\r
124                         {\r
125                                 *pucDisplayOutput[ 1 ] &= ~uxLEDMask;\r
126                         }\r
127                         else\r
128                         {\r
129                                 *pucDisplayOutput[ 1 ] |= uxLEDMask;\r
130                         }\r
131                 }\r
132                 taskEXIT_CRITICAL();\r
133         }\r
134 }\r
135 \r
136 \r
137 \r
138 \r