summaryrefslogtreecommitdiff
path: root/Demo/WizNET_DEMO_TERN_186/main.c
diff options
context:
space:
mode:
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>2006-05-27 13:55:53 +0000
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>2006-05-27 13:55:53 +0000
commitce7cc839720c78c61cf691dc1c6d1f972a2bc18a (patch)
tree79601344faf12696bc0c9eb214f2496812c49266 /Demo/WizNET_DEMO_TERN_186/main.c
parenta7f6db4b7c409c54c0ea34bf1908ea08ea2219d6 (diff)
downloadfreertos-ce7cc839720c78c61cf691dc1c6d1f972a2bc18a.tar.gz
freertos-ce7cc839720c78c61cf691dc1c6d1f972a2bc18a.tar.bz2
freertos-ce7cc839720c78c61cf691dc1c6d1f972a2bc18a.tar.xz
New Demo files for Tern E-Engine controller port.
git-svn-id: https://freertos.svn.sourceforge.net/svnroot/freertos/trunk@7 1d2547de-c912-0410-9cb9-b8ca96c0e9e2
Diffstat (limited to 'Demo/WizNET_DEMO_TERN_186/main.c')
-rw-r--r--Demo/WizNET_DEMO_TERN_186/main.c196
1 files changed, 196 insertions, 0 deletions
diff --git a/Demo/WizNET_DEMO_TERN_186/main.c b/Demo/WizNET_DEMO_TERN_186/main.c
new file mode 100644
index 00000000..9a686d3b
--- /dev/null
+++ b/Demo/WizNET_DEMO_TERN_186/main.c
@@ -0,0 +1,196 @@
+/*
+ FreeRTOS V4.0.1 - Copyright (C) 2003-2006 Richard Barry.
+
+ 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 as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ See http://www.FreeRTOS.org for documentation, latest information, license
+ and contact details. Please ensure to read the configuration and relevant
+ port sections of the online documentation.
+ ***************************************************************************
+*/
+
+/*
+ * Creates all the demo application tasks then starts the scheduler. In
+ * addition to the standard demo application tasks main() creates the
+ * HTTPServer task, and a "Check" task. The Check task periodically inspects
+ * all the other tasks in the system to see if any errors have been reported.
+ * The error status is then displayed on the served WEB page.
+ */
+
+/* Tern includes. */
+#include <ae.h>
+#include <embedded.h>
+
+/* FreeRTOS.org includes. */
+#include <FreeRTOS.h>
+#include <task.h>
+
+/* Demo application includes. */
+#include "HTTPTask.h"
+#include "integer.h"
+#include "PollQ.h"
+#include "semtest.h"
+#include "dynamic.h"
+#include "BlockQ.h"
+#include "Death.h"
+#include "serial.h"
+#include "comtest.h"
+
+/* How often should the "check" task execute? */
+#define mainCHECK_DELAY ( 3000 / portTICK_RATE_MS )
+
+/* Priorities allocated to the various tasks. */
+#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
+#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
+#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
+#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
+#define mainHTTP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
+#define mainSUICIDE_TASKS_PRIORITY ( tskIDLE_PRIORITY + 1 )
+#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
+
+/* Used to indicate the error status. A value of 0 means that an error has not
+been detected in any task. A non zero value indicates which group of demo
+tasks has reported an error. See prvCheckTask() for bit definitions. */
+unsigned portSHORT usCheckStatus = 0;
+
+/*-----------------------------------------------------------*/
+
+/*
+ * Setup any hardware required by the demo - other than the RTOS tick which
+ * is configured when the scheduler is started.
+ */
+static void prvSetupHardware( void );
+
+/*
+ * Periodically inspect all the other tasks, updating usCheckStatus should an
+ * error be discovered in any task.
+ */
+static void prvCheckTask( void *pvParameters );
+/*-----------------------------------------------------------*/
+
+void main(void)
+{
+ prvSetupHardware();
+
+ /* Start the HTTP server task. */
+ xTaskCreate( vHTTPTask, "WizNet", configMINIMAL_STACK_SIZE, NULL, mainHTTP_TASK_PRIORITY, NULL );
+
+ /* Start the demo/test application tasks. See the demo application
+ section of the FreeRTOS.org WEB site for more information. */
+ vStartIntegerMathTasks( tskIDLE_PRIORITY );
+ vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
+ vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
+ vStartDynamicPriorityTasks();
+ vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
+ vStartComTestTasks( mainCOM_TEST_PRIORITY, serCOM2, ser57600 );
+
+ /* Start the task that checks the other demo tasks for errors. */
+ xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
+
+ /* The suicide tasks must be created last as they monitor the number of
+ tasks in the system to ensure there are no more or fewer than expected
+ compared to the number that were executing when the task started. */
+ vCreateSuicidalTasks( mainSUICIDE_TASKS_PRIORITY );
+
+ /* Finally start the scheduler. */
+ vTaskStartScheduler();
+
+ /* Should not get here! */
+ for( ;; );
+}
+/*-----------------------------------------------------------*/
+
+static void prvSetupHardware( void )
+{
+ ae_init();
+}
+/*-----------------------------------------------------------*/
+
+static void prvCheckTask( void *pvParameters )
+{
+ ( void ) pvParameters;
+
+ /* Check all the demo tasks to ensure that they are all still running, and
+ that none of them have detected an error. */
+ for( ;; )
+ {
+ /* Block until it is time to check again. */
+ vTaskDelay( mainCHECK_DELAY );
+
+ if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
+ {
+ usCheckStatus |= 0x01;
+ }
+
+ if( xArePollingQueuesStillRunning() != pdTRUE )
+ {
+ usCheckStatus |= 0x02;
+ }
+
+ if( xAreSemaphoreTasksStillRunning() != pdTRUE )
+ {
+ usCheckStatus |= 0x04;
+ }
+
+ if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
+ {
+ usCheckStatus |= 0x08;
+ }
+
+ if( xAreBlockingQueuesStillRunning() != pdTRUE )
+ {
+ usCheckStatus |= 0x10;
+ }
+
+ if( xIsCreateTaskStillRunning() != pdTRUE )
+ {
+ usCheckStatus |= 0x20;
+ }
+
+ if( xAreComTestTasksStillRunning() != pdTRUE )
+ {
+ usCheckStatus |= 0x40;
+ }
+ }
+}
+/*-----------------------------------------------------------*/
+
+/* This is included to prevent link errors - allowing the 'full' version of
+the comtest tasks to be used. It can be ignored. */
+void vPrintDisplayMessage( const portCHAR * const * ppcMessageToSend )
+{
+ ( void ) ppcMessageToSend;
+}
+
+
+
+
+
+
+
+
+
+
+
+