aboutsummaryrefslogtreecommitdiffstats
path: root/src/FreeRTOS-Sim-master/POSIX/ParTest/ParTest.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/FreeRTOS-Sim-master/POSIX/ParTest/ParTest.c')
-rw-r--r--src/FreeRTOS-Sim-master/POSIX/ParTest/ParTest.c158
1 files changed, 158 insertions, 0 deletions
diff --git a/src/FreeRTOS-Sim-master/POSIX/ParTest/ParTest.c b/src/FreeRTOS-Sim-master/POSIX/ParTest/ParTest.c
new file mode 100644
index 0000000..a1fc77b
--- /dev/null
+++ b/src/FreeRTOS-Sim-master/POSIX/ParTest/ParTest.c
@@ -0,0 +1,158 @@
+/*
+ FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd.
+ All rights reserved
+
+ VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
+
+ This file is part of the FreeRTOS distribution.
+
+ FreeRTOS is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License (version 2) as published by the
+ Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
+
+ ***************************************************************************
+ >>! NOTE: The modification to the GPL is included to allow you to !<<
+ >>! distribute a combined work that includes FreeRTOS without being !<<
+ >>! obliged to provide the source code for proprietary components !<<
+ >>! outside of the FreeRTOS kernel. !<<
+ ***************************************************************************
+
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. Full license text is available on the following
+ link: http://www.freertos.org/a00114.html
+
+ ***************************************************************************
+ * *
+ * FreeRTOS provides completely free yet professionally developed, *
+ * robust, strictly quality controlled, supported, and cross *
+ * platform software that is more than just the market leader, it *
+ * is the industry's de facto standard. *
+ * *
+ * Help yourself get started quickly while simultaneously helping *
+ * to support the FreeRTOS project by purchasing a FreeRTOS *
+ * tutorial book, reference manual, or both: *
+ * http://www.FreeRTOS.org/Documentation *
+ * *
+ ***************************************************************************
+
+ http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
+ the FAQ page "My application does not run, what could be wrong?". Have you
+ defined configASSERT()?
+
+ http://www.FreeRTOS.org/support - In return for receiving this top quality
+ embedded software for free we request you assist our global community by
+ participating in the support forum.
+
+ http://www.FreeRTOS.org/training - Investing in training allows your team to
+ be as productive as possible as early as possible. Now you can receive
+ FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
+ Ltd, and the world's leading authority on the world's leading RTOS.
+
+ http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
+ including FreeRTOS+Trace - an indispensable productivity tool, a DOS
+ compatible FAT file system, and our tiny thread aware UDP/IP stack.
+
+ http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
+ Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
+
+ http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
+ Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
+ licenses offer ticketed support, indemnification and commercial middleware.
+
+ http://www.SafeRTOS.com - High Integrity Systems also provide a safety
+ engineered and independently SIL3 certified version for use in safety and
+ mission critical applications that require provable dependability.
+
+ 1 tab == 4 spaces!
+*/
+
+/*
+Changes from V1.01:
+
+ + Types used updated.
+ + Add vParTestToggleLED();
+
+
+Changes from V2.0.0
+
+ + Use scheduler suspends in place of critical sections.
+*/
+
+#include "FreeRTOS.h"
+#include "partest.h"
+#include "task.h"
+
+#define partstALL_OUTPUTS_OFF ( ( unsigned portCHAR ) 0x00 )
+#define partstMAX_OUTPUT_LED ( ( unsigned portCHAR ) 7 )
+
+/*lint -e956 File scope parameters okay here. */
+//static unsigned portSHORT usPortAddress = partstDEFAULT_PORT_ADDRESS;
+static volatile unsigned portCHAR ucCurrentOutputValue = partstALL_OUTPUTS_OFF;
+/*lint +e956 */
+
+
+/*-----------------------------------------------------------
+ * Simple parallel port IO routines
+ *-----------------------------------------------------------*/
+
+void vParTestInitialise( void )
+{
+ ucCurrentOutputValue = partstALL_OUTPUTS_OFF;
+
+ portOUTPUT_BYTE( usPortAddress, ( unsigned ) partstALL_OUTPUTS_OFF );
+}
+/*-----------------------------------------------------------*/
+
+void vParTestSetLED( unsigned portBASE_TYPE uxLED, portBASE_TYPE xValue )
+{
+unsigned portCHAR ucBit = ( unsigned portCHAR ) 1;
+
+ if( uxLED <= partstMAX_OUTPUT_LED )
+ {
+ ucBit <<= uxLED;
+ }
+
+ vTaskSuspendAll();
+ {
+ if( xValue == pdTRUE )
+ {
+ ucBit ^= ( unsigned portCHAR ) 0xff;
+ ucCurrentOutputValue &= ucBit;
+ }
+ else
+ {
+ ucCurrentOutputValue |= ucBit;
+ }
+
+ portOUTPUT_BYTE( usPortAddress, ( unsigned ) ucCurrentOutputValue );
+ }
+ xTaskResumeAll();
+}
+/*-----------------------------------------------------------*/
+
+void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
+{
+unsigned portCHAR ucBit;
+
+ if( uxLED <= partstMAX_OUTPUT_LED )
+ {
+ ucBit = ( ( unsigned portCHAR ) 1 ) << uxLED;
+
+ vTaskSuspendAll();
+ {
+ if( ucCurrentOutputValue & ucBit )
+ {
+ ucCurrentOutputValue &= ~ucBit;
+ }
+ else
+ {
+ ucCurrentOutputValue |= ucBit;
+ }
+
+ portOUTPUT_BYTE( usPortAddress, ( unsigned ) ucCurrentOutputValue );
+ }
+ xTaskResumeAll();
+ }
+}
+