]> git.sur5r.net Git - freertos/commitdiff
Update for V6.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 29 Sep 2009 19:49:54 +0000 (19:49 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 29 Sep 2009 19:49:54 +0000 (19:49 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@877 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Source/include/FreeRTOS.h
Source/include/portable.h
Source/include/queue.h

index 938261caf5ff20922bad036f2f9f3c85835d1f62..92bfe31d2cdd9160dbe206cbf9e3b99806134efe 100644 (file)
@@ -394,5 +394,21 @@ typedef portBASE_TYPE (*pdTASK_HOOK_CODE)( void * );
        #define configUSE_MALLOC_FAILED_HOOK 0\r
 #endif\r
 \r
+#ifndef portPRIVILEGE_BIT\r
+       #define portPRIVILEGE_BIT ( ( unsigned portBASE_TYPE ) 0x00 )\r
+#endif\r
+\r
+#ifndef portYIELD_WITHIN_API\r
+       #define portYIELD_WITHIN_API portYIELD\r
+#endif\r
+\r
+#ifndef pvPortMallocAligned\r
+       #define pvPortMallocAligned( xSize, pvBuffer ) pvPortMalloc( xSize ); ( void ) pvBuffer\r
+#endif\r
+\r
+#ifndef vPortFreeAligned\r
+       #define vPortFreeAligned( pvBlockToFree ) vPortFree( pvBlockToFree )\r
+#endif\r
+\r
 #endif /* INC_FREERTOS_H */\r
 \r
index 8fc0723d0b215ba16477851586f73a78c08d8322..3a279d87946d3f9963f5fd50d652af7e2d1c3319 100644 (file)
@@ -301,24 +301,54 @@ to find the path to the correct portmacro.h file. */
        #include "portmacro.h"  \r
 #endif\r
        \r
+#if portBYTE_ALIGNMENT == 8\r
+       #define portBYTE_ALIGNMENT_MASK ( 0x0007 )\r
+#endif\r
+\r
+#if portBYTE_ALIGNMENT == 4\r
+       #define portBYTE_ALIGNMENT_MASK ( 0x0003 )\r
+#endif\r
+\r
+#if portBYTE_ALIGNMENT == 2\r
+       #define portBYTE_ALIGNMENT_MASK ( 0x0001 )\r
+#endif\r
+\r
+#if portBYTE_ALIGNMENT == 1\r
+       #define portBYTE_ALIGNMENT_MASK ( 0x0000 )\r
+#endif\r
+\r
+#ifndef portBYTE_ALIGNMENT_MASK\r
+       #error "Invalid portBYTE_ALIGNMENT definition"\r
+#endif\r
+\r
+#ifndef portNUM_CONFIGURABLE_REGIONS\r
+       #define portNUM_CONFIGURABLE_REGIONS 1\r
+#endif\r
+\r
 #ifdef __cplusplus\r
 extern "C" {\r
 #endif\r
 \r
+#include "mpu_wrappers.h"\r
+\r
 /*\r
  * Setup the stack of a new task so it is ready to be placed under the\r
  * scheduler control.  The registers have to be placed on the stack in\r
  * the order that the port expects to find them.\r
  *\r
  */\r
-portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters );\r
+#if( portUSING_MPU_WRAPPERS == 1 )\r
+       portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters, portBASE_TYPE xRunPrivileged );\r
+#else\r
+       portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters );\r
+#endif\r
 \r
 /*\r
  * Map to the memory management routines required for the port.\r
  */\r
-void *pvPortMalloc( size_t xSize );\r
-void vPortFree( void *pv );\r
-void vPortInitialiseBlocks( void );\r
+void *pvPortMalloc( size_t xSize ) PRIVILEGED_FUNCTION;\r
+void vPortFree( void *pv ) PRIVILEGED_FUNCTION;\r
+void vPortInitialiseBlocks( void ) PRIVILEGED_FUNCTION;\r
 \r
 /*\r
  * Setup the hardware ready for the scheduler to take control.  This generally\r
@@ -333,6 +363,18 @@ portBASE_TYPE xPortStartScheduler( void );
  */\r
 void vPortEndScheduler( void );\r
 \r
+/*\r
+ * The structures and methods of manipulating the MPU are contained within the\r
+ * port layer.\r
+ *\r
+ * Fills the xMPUSettings structure with the memory region information\r
+ * contained in xRegions.\r
+ */\r
+#if( portUSING_MPU_WRAPPERS == 1 ) \r
+       struct xMEMORY_REGION;\r
+       void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, portSTACK_TYPE *pxBottomOfStack, unsigned portSHORT usStackDepth );\r
+#endif\r
+\r
 #ifdef __cplusplus\r
 }\r
 #endif\r
index 6865240b20419f21adcf0533eaa52ef59b6db894..8c176547b5a736f8f0c2f26f001199e9991601fb 100644 (file)
@@ -3,14 +3,14 @@
 \r
        This file is part of the FreeRTOS distribution.\r
 \r
-       FreeRTOS is free software; you can redistribute it and/or modify it     under \r
-       the terms of the GNU General Public License (version 2) as published by the \r
+       FreeRTOS is free software; you can redistribute it and/or modify it     under\r
+       the terms of the GNU General Public License (version 2) as published by the\r
        Free Software Foundation and modified by the FreeRTOS exception.\r
        **NOTE** The exception to the GPL is included to allow you to distribute a\r
-       combined work that includes FreeRTOS without being obliged to provide the \r
-       source code for proprietary components outside of the FreeRTOS kernel.  \r
-       Alternative commercial license and support terms are also available upon \r
-       request.  See the licensing section of http://www.FreeRTOS.org for full \r
+       combined work that includes FreeRTOS without being obliged to provide the\r
+       source code for proprietary components outside of the FreeRTOS kernel.\r
+       Alternative commercial license and support terms are also available upon\r
+       request.  See the licensing section of http://www.FreeRTOS.org for full\r
        license details.\r
 \r
        FreeRTOS is distributed in the hope that it will be useful,     but WITHOUT\r
 \r
 \r
        ***************************************************************************\r
-       *                                                                         *\r
-       * Looking for a quick start?  Then check out the FreeRTOS eBook!          *\r
-       * See http://www.FreeRTOS.org/Documentation for details                   *\r
-       *                                                                         *\r
+       *                                                                                                                                                *\r
+       * Looking for a quick start?  Then check out the FreeRTOS eBook!                  *\r
+       * See http://www.FreeRTOS.org/Documentation for details                            *\r
+       *                                                                                                                                                *\r
        ***************************************************************************\r
 \r
        1 tab == 4 spaces!\r
 #ifdef __cplusplus\r
 extern "C" {\r
 #endif\r
+\r
+\r
+#include "mpu_wrappers.h"\r
+\r
+\r
 typedef void * xQueueHandle;\r
 \r
+\r
 /* For internal use only. */\r
 #define        queueSEND_TO_BACK       ( 0 )\r
 #define        queueSEND_TO_FRONT      ( 1 )\r
@@ -69,9 +75,9 @@ typedef void * xQueueHandle;
  * queue. h\r
  * <pre>\r
  xQueueHandle xQueueCreate(\r
-                              unsigned portBASE_TYPE uxQueueLength,\r
-                              unsigned portBASE_TYPE uxItemSize\r
-                          );\r
+                                                         unsigned portBASE_TYPE uxQueueLength,\r
+                                                         unsigned portBASE_TYPE uxItemSize\r
+                                                 );\r
  * </pre>\r
  *\r
  * Creates a new queue instance.  This allocates the storage required by the\r
@@ -92,30 +98,30 @@ typedef void * xQueueHandle;
    <pre>\r
  struct AMessage\r
  {\r
-    portCHAR ucMessageID;\r
-    portCHAR ucData[ 20 ];\r
+       portCHAR ucMessageID;\r
+       portCHAR ucData[ 20 ];\r
  };\r
 \r
  void vATask( void *pvParameters )\r
  {\r
  xQueueHandle xQueue1, xQueue2;\r
 \r
-    // Create a queue capable of containing 10 unsigned long values.\r
-    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-    if( xQueue1 == 0 )\r
-    {\r
-        // Queue was not created and must not be used.\r
-    }\r
-\r
-    // Create a queue capable of containing 10 pointers to AMessage structures.\r
-    // These should be passed by pointer as they contain a lot of data.\r
-    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-    if( xQueue2 == 0 )\r
-    {\r
-        // Queue was not created and must not be used.\r
-    }\r
-\r
-    // ... Rest of task code.\r
+       // Create a queue capable of containing 10 unsigned long values.\r
+       xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
+       if( xQueue1 == 0 )\r
+       {\r
+               // Queue was not created and must not be used.\r
+       }\r
+\r
+       // Create a queue capable of containing 10 pointers to AMessage structures.\r
+       // These should be passed by pointer as they contain a lot of data.\r
+       xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
+       if( xQueue2 == 0 )\r
+       {\r
+               // Queue was not created and must not be used.\r
+       }\r
+\r
+       // ... Rest of task code.\r
  }\r
  </pre>\r
  * \defgroup xQueueCreate xQueueCreate\r
@@ -127,10 +133,10 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueSendToToFront(\r
-                                   xQueueHandle xQueue,\r
-                                   const void * pvItemToQueue,\r
-                                   portTickType xTicksToWait\r
-                               );\r
+                                                                  xQueueHandle xQueue,\r
+                                                                  const        void    *       pvItemToQueue,\r
+                                                                  portTickType xTicksToWait\r
+                                                          );\r
  * </pre>\r
  *\r
  * This is a macro that calls xQueueGenericSend().\r
@@ -150,7 +156,7 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  * @param xTicksToWait The maximum amount of time the task should block\r
  * waiting for space to become available on the queue, should it already\r
  * be full.  The call will return immediately if this is set to 0 and the\r
- * queue is full.  The time is defined in tick periods so the constant \r
+ * queue is full.  The time is defined in tick periods so the constant\r
  * portTICK_RATE_MS should be used to convert to real time if this is required.\r
  *\r
  * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\r
@@ -159,8 +165,8 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
    <pre>\r
  struct AMessage\r
  {\r
-    portCHAR ucMessageID;\r
-    portCHAR ucData[ 20 ];\r
+       portCHAR ucMessageID;\r
+       portCHAR ucData[ 20 ];\r
  } xMessage;\r
 \r
  unsigned portLONG ulVar = 10UL;\r
@@ -170,32 +176,32 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  xQueueHandle xQueue1, xQueue2;\r
  struct AMessage *pxMessage;\r
 \r
-    // Create a queue capable of containing 10 unsigned long values.\r
-    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-\r
-    // Create a queue capable of containing 10 pointers to AMessage structures.\r
-    // These should be passed by pointer as they contain a lot of data.\r
-    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-\r
-    // ...\r
-\r
-    if( xQueue1 != 0 )\r
-    {\r
-        // Send an unsigned long.  Wait for 10 ticks for space to become\r
-        // available if necessary.\r
-        if( xQueueSendToFront( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
-        {\r
-            // Failed to post the message, even after 10 ticks.\r
-        }\r
-    }\r
-\r
-    if( xQueue2 != 0 )\r
-    {\r
-        // Send a pointer to a struct AMessage object.  Don't block if the\r
-        // queue is already full.\r
-        pxMessage = & xMessage;\r
-        xQueueSendToFront( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
-    }\r
+       // Create a queue capable of containing 10 unsigned long values.\r
+       xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
+\r
+       // Create a queue capable of containing 10 pointers to AMessage structures.\r
+       // These should be passed by pointer as they contain a lot of data.\r
+       xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
+\r
+       // ...\r
+\r
+       if( xQueue1 != 0 )\r
+       {\r
+               // Send an unsigned long.  Wait for 10 ticks for space to become\r
+               // available if necessary.\r
+               if( xQueueSendToFront( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
+               {\r
+                       // Failed to post the message, even after 10 ticks.\r
+               }\r
+       }\r
+\r
+       if( xQueue2 != 0 )\r
+       {\r
+               // Send a pointer to a struct AMessage object.  Don't block if the\r
+               // queue is already full.\r
+               pxMessage = & xMessage;\r
+               xQueueSendToFront( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
+       }\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -209,10 +215,10 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueSendToBack(\r
-                                   xQueueHandle xQueue,\r
-                                   const void * pvItemToQueue,\r
-                                   portTickType xTicksToWait\r
-                               );\r
+                                                                  xQueueHandle xQueue,\r
+                                                                  const        void    *       pvItemToQueue,\r
+                                                                  portTickType xTicksToWait\r
+                                                          );\r
  * </pre>\r
  *\r
  * This is a macro that calls xQueueGenericSend().\r
@@ -232,7 +238,7 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  * @param xTicksToWait The maximum amount of time the task should block\r
  * waiting for space to become available on the queue, should it already\r
  * be full.  The call will return immediately if this is set to 0 and the queue\r
- * is full.  The  time is defined in tick periods so the constant \r
+ * is full.  The  time is defined in tick periods so the constant\r
  * portTICK_RATE_MS should be used to convert to real time if this is required.\r
  *\r
  * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\r
@@ -241,8 +247,8 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
    <pre>\r
  struct AMessage\r
  {\r
-    portCHAR ucMessageID;\r
-    portCHAR ucData[ 20 ];\r
+       portCHAR ucMessageID;\r
+       portCHAR ucData[ 20 ];\r
  } xMessage;\r
 \r
  unsigned portLONG ulVar = 10UL;\r
@@ -252,32 +258,32 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  xQueueHandle xQueue1, xQueue2;\r
  struct AMessage *pxMessage;\r
 \r
-    // Create a queue capable of containing 10 unsigned long values.\r
-    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-\r
-    // Create a queue capable of containing 10 pointers to AMessage structures.\r
-    // These should be passed by pointer as they contain a lot of data.\r
-    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-\r
-    // ...\r
-\r
-    if( xQueue1 != 0 )\r
-    {\r
-        // Send an unsigned long.  Wait for 10 ticks for space to become\r
-        // available if necessary.\r
-        if( xQueueSendToBack( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
-        {\r
-            // Failed to post the message, even after 10 ticks.\r
-        }\r
-    }\r
-\r
-    if( xQueue2 != 0 )\r
-    {\r
-        // Send a pointer to a struct AMessage object.  Don't block if the\r
-        // queue is already full.\r
-        pxMessage = & xMessage;\r
-        xQueueSendToBack( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
-    }\r
+       // Create a queue capable of containing 10 unsigned long values.\r
+       xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
+\r
+       // Create a queue capable of containing 10 pointers to AMessage structures.\r
+       // These should be passed by pointer as they contain a lot of data.\r
+       xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
+\r
+       // ...\r
+\r
+       if( xQueue1 != 0 )\r
+       {\r
+               // Send an unsigned long.  Wait for 10 ticks for space to become\r
+               // available if necessary.\r
+               if( xQueueSendToBack( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
+               {\r
+                       // Failed to post the message, even after 10 ticks.\r
+               }\r
+       }\r
+\r
+       if( xQueue2 != 0 )\r
+       {\r
+               // Send a pointer to a struct AMessage object.  Don't block if the\r
+               // queue is already full.\r
+               pxMessage = & xMessage;\r
+               xQueueSendToBack( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
+       }\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -291,10 +297,10 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueSend(\r
-                              xQueueHandle xQueue,\r
-                              const void * pvItemToQueue,\r
-                              portTickType xTicksToWait\r
-                         );\r
+                                                         xQueueHandle xQueue,\r
+                                                         const void * pvItemToQueue,\r
+                                                         portTickType xTicksToWait\r
+                                                );\r
  * </pre>\r
  *\r
  * This is a macro that calls xQueueGenericSend().  It is included for\r
@@ -316,7 +322,7 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  * @param xTicksToWait The maximum amount of time the task should block\r
  * waiting for space to become available on the queue, should it already\r
  * be full.  The call will return immediately if this is set to 0 and the\r
- * queue is full.  The time is defined in tick periods so the constant \r
+ * queue is full.  The time is defined in tick periods so the constant\r
  * portTICK_RATE_MS should be used to convert to real time if this is required.\r
  *\r
  * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\r
@@ -325,8 +331,8 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
    <pre>\r
  struct AMessage\r
  {\r
-    portCHAR ucMessageID;\r
-    portCHAR ucData[ 20 ];\r
+       portCHAR ucMessageID;\r
+       portCHAR ucData[ 20 ];\r
  } xMessage;\r
 \r
  unsigned portLONG ulVar = 10UL;\r
@@ -336,32 +342,32 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  xQueueHandle xQueue1, xQueue2;\r
  struct AMessage *pxMessage;\r
 \r
-    // Create a queue capable of containing 10 unsigned long values.\r
-    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-\r
-    // Create a queue capable of containing 10 pointers to AMessage structures.\r
-    // These should be passed by pointer as they contain a lot of data.\r
-    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-\r
-    // ...\r
-\r
-    if( xQueue1 != 0 )\r
-    {\r
-        // Send an unsigned long.  Wait for 10 ticks for space to become\r
-        // available if necessary.\r
-        if( xQueueSend( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
-        {\r
-            // Failed to post the message, even after 10 ticks.\r
-        }\r
-    }\r
-\r
-    if( xQueue2 != 0 )\r
-    {\r
-        // Send a pointer to a struct AMessage object.  Don't block if the\r
-        // queue is already full.\r
-        pxMessage = & xMessage;\r
-        xQueueSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
-    }\r
+       // Create a queue capable of containing 10 unsigned long values.\r
+       xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
+\r
+       // Create a queue capable of containing 10 pointers to AMessage structures.\r
+       // These should be passed by pointer as they contain a lot of data.\r
+       xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
+\r
+       // ...\r
+\r
+       if( xQueue1 != 0 )\r
+       {\r
+               // Send an unsigned long.  Wait for 10 ticks for space to become\r
+               // available if necessary.\r
+               if( xQueueSend( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
+               {\r
+                       // Failed to post the message, even after 10 ticks.\r
+               }\r
+       }\r
+\r
+       if( xQueue2 != 0 )\r
+       {\r
+               // Send a pointer to a struct AMessage object.  Don't block if the\r
+               // queue is already full.\r
+               pxMessage = & xMessage;\r
+               xQueueSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
+       }\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -400,7 +406,7 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  * @param xTicksToWait The maximum amount of time the task should block\r
  * waiting for space to become available on the queue, should it already\r
  * be full.  The call will return immediately if this is set to 0 and the\r
- * queue is full.  The time is defined in tick periods so the constant \r
+ * queue is full.  The time is defined in tick periods so the constant\r
  * portTICK_RATE_MS should be used to convert to real time if this is required.\r
  *\r
  * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the\r
@@ -413,8 +419,8 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
    <pre>\r
  struct AMessage\r
  {\r
-    portCHAR ucMessageID;\r
-    portCHAR ucData[ 20 ];\r
+       portCHAR ucMessageID;\r
+       portCHAR ucData[ 20 ];\r
  } xMessage;\r
 \r
  unsigned portLONG ulVar = 10UL;\r
@@ -424,32 +430,32 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
  xQueueHandle xQueue1, xQueue2;\r
  struct AMessage *pxMessage;\r
 \r
-    // Create a queue capable of containing 10 unsigned long values.\r
-    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-\r
-    // Create a queue capable of containing 10 pointers to AMessage structures.\r
-    // These should be passed by pointer as they contain a lot of data.\r
-    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-\r
-    // ...\r
-\r
-    if( xQueue1 != 0 )\r
-    {\r
-        // Send an unsigned long.  Wait for 10 ticks for space to become\r
-        // available if necessary.\r
-        if( xQueueGenericSend( xQueue1, ( void * ) &ulVar, ( portTickType ) 10, queueSEND_TO_BACK ) != pdPASS )\r
-        {\r
-            // Failed to post the message, even after 10 ticks.\r
-        }\r
-    }\r
-\r
-    if( xQueue2 != 0 )\r
-    {\r
-        // Send a pointer to a struct AMessage object.  Don't block if the\r
-        // queue is already full.\r
-        pxMessage = & xMessage;\r
-        xQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0, queueSEND_TO_BACK );\r
-    }\r
+       // Create a queue capable of containing 10 unsigned long values.\r
+       xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
+\r
+       // Create a queue capable of containing 10 pointers to AMessage structures.\r
+       // These should be passed by pointer as they contain a lot of data.\r
+       xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
+\r
+       // ...\r
+\r
+       if( xQueue1 != 0 )\r
+       {\r
+               // Send an unsigned long.  Wait for 10 ticks for space to become\r
+               // available if necessary.\r
+               if( xQueueGenericSend( xQueue1, ( void * ) &ulVar, ( portTickType ) 10, queueSEND_TO_BACK ) != pdPASS )\r
+               {\r
+                       // Failed to post the message, even after 10 ticks.\r
+               }\r
+       }\r
+\r
+       if( xQueue2 != 0 )\r
+       {\r
+               // Send a pointer to a struct AMessage object.  Don't block if the\r
+               // queue is already full.\r
+               pxMessage = & xMessage;\r
+               xQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0, queueSEND_TO_BACK );\r
+       }\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -463,10 +469,10 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueuePeek(\r
-                             xQueueHandle xQueue,\r
-                             void *pvBuffer,\r
-                             portTickType xTicksToWait\r
-                         );</pre>\r
+                                                        xQueueHandle xQueue,\r
+                                                        void *pvBuffer,\r
+                                                        portTickType xTicksToWait\r
+                                                );</pre>\r
  *\r
  * This is a macro that calls the xQueueGenericReceive() function.\r
  *\r
@@ -488,7 +494,7 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  *\r
  * @param xTicksToWait The maximum amount of time the task should block\r
  * waiting for an item to receive should the queue be empty at the time\r
- * of the call.    The time is defined in tick periods so the constant\r
+ * of the call.         The time is defined in tick periods so the constant\r
  * portTICK_RATE_MS should be used to convert to real time if this is required.\r
  * xQueuePeek() will return immediately if xTicksToWait is 0 and the queue\r
  * is empty.\r
@@ -500,8 +506,8 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
    <pre>\r
  struct AMessage\r
  {\r
-    portCHAR ucMessageID;\r
-    portCHAR ucData[ 20 ];\r
+       portCHAR ucMessageID;\r
+       portCHAR ucData[ 20 ];\r
  } xMessage;\r
 \r
  xQueueHandle xQueue;\r
@@ -511,20 +517,20 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  {\r
  struct AMessage *pxMessage;\r
 \r
-    // Create a queue capable of containing 10 pointers to AMessage structures.\r
-    // These should be passed by pointer as they contain a lot of data.\r
-    xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-    if( xQueue == 0 )\r
-    {\r
-        // Failed to create the queue.\r
-    }\r
+       // Create a queue capable of containing 10 pointers to AMessage structures.\r
+       // These should be passed by pointer as they contain a lot of data.\r
+       xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
+       if( xQueue == 0 )\r
+       {\r
+               // Failed to create the queue.\r
+       }\r
 \r
-    // ...\r
+       // ...\r
 \r
-    // Send a pointer to a struct AMessage object.  Don't block if the\r
-    // queue is already full.\r
-    pxMessage = & xMessage;\r
-    xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
+       // Send a pointer to a struct AMessage object.  Don't block if the\r
+       // queue is already full.\r
+       pxMessage = & xMessage;\r
+       xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -534,16 +540,16 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  {\r
  struct AMessage *pxRxedMessage;\r
 \r
-    if( xQueue != 0 )\r
-    {\r
-        // Peek a message on the created queue.  Block for 10 ticks if a\r
-        // message is not immediately available.\r
-        if( xQueuePeek( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
-        {\r
-            // pcRxedMessage now points to the struct AMessage variable posted\r
-            // by vATask, but the item still remains on the queue.\r
-        }\r
-    }\r
+       if( xQueue != 0 )\r
+       {\r
+               // Peek a message on the created queue.  Block for 10 ticks if a\r
+               // message is not immediately available.\r
+               if( xQueuePeek( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
+               {\r
+                       // pcRxedMessage now points to the struct AMessage variable posted\r
+                       // by vATask, but the item still remains on the queue.\r
+               }\r
+       }\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -557,10 +563,10 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueReceive(\r
-                                 xQueueHandle xQueue,\r
-                                 void *pvBuffer,\r
-                                 portTickType xTicksToWait\r
-                            );</pre>\r
+                                                                xQueueHandle xQueue,\r
+                                                                void *pvBuffer,\r
+                                                                portTickType xTicksToWait\r
+                                                       );</pre>\r
  *\r
  * This is a macro that calls the xQueueGenericReceive() function.\r
  *\r
@@ -581,9 +587,9 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  *\r
  * @param xTicksToWait The maximum amount of time the task should block\r
  * waiting for an item to receive should the queue be empty at the time\r
- * of the call.    xQueueReceive() will return immediately if xTicksToWait\r
- * is zero and the queue is empty.  The time is defined in tick periods so the \r
- * constant portTICK_RATE_MS should be used to convert to real time if this is \r
+ * of the call.         xQueueReceive() will return immediately if xTicksToWait\r
+ * is zero and the queue is empty.  The time is defined in tick periods so the\r
+ * constant portTICK_RATE_MS should be used to convert to real time if this is\r
  * required.\r
  *\r
  * @return pdTRUE if an item was successfully received from the queue,\r
@@ -593,8 +599,8 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
    <pre>\r
  struct AMessage\r
  {\r
-    portCHAR ucMessageID;\r
-    portCHAR ucData[ 20 ];\r
+       portCHAR ucMessageID;\r
+       portCHAR ucData[ 20 ];\r
  } xMessage;\r
 \r
  xQueueHandle xQueue;\r
@@ -604,20 +610,20 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  {\r
  struct AMessage *pxMessage;\r
 \r
-    // Create a queue capable of containing 10 pointers to AMessage structures.\r
-    // These should be passed by pointer as they contain a lot of data.\r
-    xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-    if( xQueue == 0 )\r
-    {\r
-        // Failed to create the queue.\r
-    }\r
+       // Create a queue capable of containing 10 pointers to AMessage structures.\r
+       // These should be passed by pointer as they contain a lot of data.\r
+       xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
+       if( xQueue == 0 )\r
+       {\r
+               // Failed to create the queue.\r
+       }\r
 \r
-    // ...\r
+       // ...\r
 \r
-    // Send a pointer to a struct AMessage object.  Don't block if the\r
-    // queue is already full.\r
-    pxMessage = & xMessage;\r
-    xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
+       // Send a pointer to a struct AMessage object.  Don't block if the\r
+       // queue is already full.\r
+       pxMessage = & xMessage;\r
+       xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -627,16 +633,16 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  {\r
  struct AMessage *pxRxedMessage;\r
 \r
-    if( xQueue != 0 )\r
-    {\r
-        // Receive a message on the created queue.  Block for 10 ticks if a\r
-        // message is not immediately available.\r
-        if( xQueueReceive( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
-        {\r
-            // pcRxedMessage now points to the struct AMessage variable posted\r
-            // by vATask.\r
-        }\r
-    }\r
+       if( xQueue != 0 )\r
+       {\r
+               // Receive a message on the created queue.  Block for 10 ticks if a\r
+               // message is not immediately available.\r
+               if( xQueueReceive( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
+               {\r
+                       // pcRxedMessage now points to the struct AMessage variable posted\r
+                       // by vATask.\r
+               }\r
+       }\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -651,11 +657,11 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueGenericReceive(\r
-                                       xQueueHandle xQueue,\r
-                                       void *pvBuffer,\r
-                                       portTickType xTicksToWait\r
-                                       portBASE_TYPE xJustPeek\r
-                                    );</pre>\r
+                                                                          xQueueHandle xQueue,\r
+                                                                          void *pvBuffer,\r
+                                                                          portTickType xTicksToWait\r
+                                                                          portBASE_TYPE        xJustPeek\r
+                                                                       );</pre>\r
  *\r
  * It is preferred that the macro xQueueReceive() be used rather than calling\r
  * this function directly.\r
@@ -675,7 +681,7 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  *\r
  * @param xTicksToWait The maximum amount of time the task should block\r
  * waiting for an item to receive should the queue be empty at the time\r
- * of the call.    The time is defined in tick periods so the constant\r
+ * of the call.         The time is defined in tick periods so the constant\r
  * portTICK_RATE_MS should be used to convert to real time if this is required.\r
  * xQueueGenericReceive() will return immediately if the queue is empty and\r
  * xTicksToWait is 0.\r
@@ -692,8 +698,8 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
    <pre>\r
  struct AMessage\r
  {\r
-    portCHAR ucMessageID;\r
-    portCHAR ucData[ 20 ];\r
+       portCHAR ucMessageID;\r
+       portCHAR ucData[ 20 ];\r
  } xMessage;\r
 \r
  xQueueHandle xQueue;\r
@@ -703,20 +709,20 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  {\r
  struct AMessage *pxMessage;\r
 \r
-    // Create a queue capable of containing 10 pointers to AMessage structures.\r
-    // These should be passed by pointer as they contain a lot of data.\r
-    xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-    if( xQueue == 0 )\r
-    {\r
-        // Failed to create the queue.\r
-    }\r
+       // Create a queue capable of containing 10 pointers to AMessage structures.\r
+       // These should be passed by pointer as they contain a lot of data.\r
+       xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
+       if( xQueue == 0 )\r
+       {\r
+               // Failed to create the queue.\r
+       }\r
 \r
-    // ...\r
+       // ...\r
 \r
-    // Send a pointer to a struct AMessage object.  Don't block if the\r
-    // queue is already full.\r
-    pxMessage = & xMessage;\r
-    xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
+       // Send a pointer to a struct AMessage object.  Don't block if the\r
+       // queue is already full.\r
+       pxMessage = & xMessage;\r
+       xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -726,16 +732,16 @@ signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const
  {\r
  struct AMessage *pxRxedMessage;\r
 \r
-    if( xQueue != 0 )\r
-    {\r
-        // Receive a message on the created queue.  Block for 10 ticks if a\r
-        // message is not immediately available.\r
-        if( xQueueGenericReceive( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
-        {\r
-            // pcRxedMessage now points to the struct AMessage variable posted\r
-            // by vATask.\r
-        }\r
-    }\r
+       if( xQueue != 0 )\r
+       {\r
+               // Receive a message on the created queue.  Block for 10 ticks if a\r
+               // message is not immediately available.\r
+               if( xQueueGenericReceive( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
+               {\r
+                       // pcRxedMessage now points to the struct AMessage variable posted\r
+                       // by vATask.\r
+               }\r
+       }\r
 \r
        // ... Rest of task code.\r
  }\r
@@ -778,10 +784,10 @@ void vQueueDelete( xQueueHandle xQueue );
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueSendToFrontFromISR(\r
-                                         xQueueHandle pxQueue,\r
-                                         const void *pvItemToQueue,\r
-                                         portBASE_TYPE *pxHigherPriorityTaskWoken\r
-                                      );\r
+                                                                                xQueueHandle pxQueue,\r
+                                                                                const void *pvItemToQueue,\r
+                                                                                portBASE_TYPE *pxHigherPriorityTaskWoken\r
+                                                                         );\r
  </pre>\r
  *\r
  * This is a macro that calls xQueueGenericSendFromISR().\r
@@ -817,25 +823,25 @@ void vQueueDelete( xQueueHandle xQueue );
  portCHAR cIn;\r
  portBASE_TYPE xHigherPrioritTaskWoken;\r
 \r
-    // We have not woken a task at the start of the ISR.\r
-    xHigherPriorityTaskWoken = pdFALSE;\r
+       // We have not woken a task at the start of the ISR.\r
+       xHigherPriorityTaskWoken = pdFALSE;\r
 \r
-    // Loop until the buffer is empty.\r
-    do\r
-    {\r
-        // Obtain a byte from the buffer.\r
-        cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );                                           \r
+       // Loop until the buffer is empty.\r
+       do\r
+       {\r
+               // Obtain a byte from the buffer.\r
+               cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );\r
 \r
-        // Post the byte.  \r
-        xQueueSendToFrontFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\r
+               // Post the byte.\r
+               xQueueSendToFrontFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\r
 \r
-    } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
+       } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
 \r
-    // Now the buffer is empty we can switch context if necessary.\r
-    if( xHigherPriorityTaskWoken )\r
-    {\r
-        taskYIELD ();\r
-    }\r
+       // Now the buffer is empty we can switch context if necessary.\r
+       if( xHigherPriorityTaskWoken )\r
+       {\r
+               taskYIELD ();\r
+       }\r
  }\r
  </pre>\r
  *\r
@@ -849,10 +855,10 @@ void vQueueDelete( xQueueHandle xQueue );
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueSendToBackFromISR(\r
-                                         xQueueHandle pxQueue,\r
-                                         const void *pvItemToQueue,\r
-                                         portBASE_TYPE *pxHigherPriorityTaskWoken\r
-                                      );\r
+                                                                                xQueueHandle pxQueue,\r
+                                                                                const void *pvItemToQueue,\r
+                                                                                portBASE_TYPE *pxHigherPriorityTaskWoken\r
+                                                                         );\r
  </pre>\r
  *\r
  * This is a macro that calls xQueueGenericSendFromISR().\r
@@ -888,25 +894,25 @@ void vQueueDelete( xQueueHandle xQueue );
  portCHAR cIn;\r
  portBASE_TYPE xHigherPriorityTaskWoken;\r
 \r
-    // We have not woken a task at the start of the ISR.\r
-    xHigherPriorityTaskWoken = pdFALSE;\r
+       // We have not woken a task at the start of the ISR.\r
+       xHigherPriorityTaskWoken = pdFALSE;\r
 \r
-    // Loop until the buffer is empty.\r
-    do\r
-    {\r
-        // Obtain a byte from the buffer.\r
-        cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );                                           \r
+       // Loop until the buffer is empty.\r
+       do\r
+       {\r
+               // Obtain a byte from the buffer.\r
+               cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );\r
 \r
-        // Post the byte.\r
-        xQueueSendToBackFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\r
+               // Post the byte.\r
+               xQueueSendToBackFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\r
 \r
-    } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
+       } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
 \r
-    // Now the buffer is empty we can switch context if necessary.\r
-    if( xHigherPriorityTaskWoken )\r
-    {\r
-        taskYIELD ();\r
-    }\r
+       // Now the buffer is empty we can switch context if necessary.\r
+       if( xHigherPriorityTaskWoken )\r
+       {\r
+               taskYIELD ();\r
+       }\r
  }\r
  </pre>\r
  *\r
@@ -919,10 +925,10 @@ void vQueueDelete( xQueueHandle xQueue );
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueSendFromISR(\r
-                                     xQueueHandle pxQueue,\r
-                                     const void *pvItemToQueue,\r
-                                     portBASE_TYPE *pxHigherPriorityTaskWoken\r
-                                );\r
+                                                                        xQueueHandle pxQueue,\r
+                                                                        const void *pvItemToQueue,\r
+                                                                        portBASE_TYPE *pxHigherPriorityTaskWoken\r
+                                                               );\r
  </pre>\r
  *\r
  * This is a macro that calls xQueueGenericSendFromISR().  It is included\r
@@ -961,26 +967,26 @@ void vQueueDelete( xQueueHandle xQueue );
  portCHAR cIn;\r
  portBASE_TYPE xHigherPriorityTaskWoken;\r
 \r
-    // We have not woken a task at the start of the ISR.\r
-    xHigherPriorityTaskWoken = pdFALSE;\r
+       // We have not woken a task at the start of the ISR.\r
+       xHigherPriorityTaskWoken = pdFALSE;\r
 \r
-    // Loop until the buffer is empty.\r
-    do\r
-    {\r
-        // Obtain a byte from the buffer.\r
-        cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );                                           \r
+       // Loop until the buffer is empty.\r
+       do\r
+       {\r
+               // Obtain a byte from the buffer.\r
+               cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );\r
 \r
-        // Post the byte.  \r
-        xQueueSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\r
+               // Post the byte.\r
+               xQueueSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );\r
 \r
-    } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
+       } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
 \r
-    // Now the buffer is empty we can switch context if necessary.\r
-    if( xHigherPriorityTaskWoken )\r
-    {\r
-        // Actual macro used here is port specific.\r
-        taskYIELD_FROM_ISR ();\r
-    }\r
+       // Now the buffer is empty we can switch context if necessary.\r
+       if( xHigherPriorityTaskWoken )\r
+       {\r
+               // Actual macro used here is port specific.\r
+               taskYIELD_FROM_ISR ();\r
+       }\r
  }\r
  </pre>\r
  *\r
@@ -993,11 +999,11 @@ void vQueueDelete( xQueueHandle xQueue );
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueGenericSendFromISR(\r
-                                           xQueueHandle pxQueue,\r
-                                           const void *pvItemToQueue,\r
-                                           portBASE_TYPE *pxHigherPriorityTaskWoken,\r
-                                                                                  portBASE_TYPE xCopyPosition\r
-                                       );\r
+                                                                                  xQueueHandle pxQueue,\r
+                                                                                  const        void    *pvItemToQueue,\r
+                                                                                  portBASE_TYPE        *pxHigherPriorityTaskWoken,\r
+                                                                                  portBASE_TYPE        xCopyPosition\r
+                                                                          );\r
  </pre>\r
  *\r
  * It is preferred that the macros xQueueSendFromISR(),\r
@@ -1039,26 +1045,26 @@ void vQueueDelete( xQueueHandle xQueue );
  portCHAR cIn;\r
  portBASE_TYPE xHigherPriorityTaskWokenByPost;\r
 \r
-    // We have not woken a task at the start of the ISR.\r
-    xHigherPriorityTaskWokenByPost = pdFALSE;\r
+       // We have not woken a task at the start of the ISR.\r
+       xHigherPriorityTaskWokenByPost = pdFALSE;\r
 \r
-    // Loop until the buffer is empty.\r
-    do\r
-    {\r
-        // Obtain a byte from the buffer.\r
-        cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );                                           \r
+       // Loop until the buffer is empty.\r
+       do\r
+       {\r
+               // Obtain a byte from the buffer.\r
+               cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );\r
 \r
-        // Post each byte.\r
-        xQueueGenericSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWokenByPost, queueSEND_TO_BACK );\r
+               // Post each byte.\r
+               xQueueGenericSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWokenByPost, queueSEND_TO_BACK );\r
 \r
-    } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
+       } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
 \r
-    // Now the buffer is empty we can switch context if necessary.  Note that the\r
-    // name of the yield function required is port specific.\r
-    if( xHigherPriorityTaskWokenByPost )\r
-    {\r
-        taskYIELD_YIELD_FROM_ISR();\r
-    }\r
+       // Now the buffer is empty we can switch context if necessary.  Note that the\r
+       // name of the yield function required is port specific.\r
+       if( xHigherPriorityTaskWokenByPost )\r
+       {\r
+               taskYIELD_YIELD_FROM_ISR();\r
+       }\r
  }\r
  </pre>\r
  *\r
@@ -1071,10 +1077,10 @@ signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void
  * queue. h\r
  * <pre>\r
  portBASE_TYPE xQueueReceiveFromISR(\r
-                                       xQueueHandle pxQueue,\r
-                                       void *pvBuffer,\r
-                                       portBASE_TYPE *pxTaskWoken\r
-                                   );\r
+                                                                          xQueueHandle pxQueue,\r
+                                                                          void *pvBuffer,\r
+                                                                          portBASE_TYPE        *pxTaskWoken\r
+                                                                  );\r
  * </pre>\r
  *\r
  * Receive an item from a queue.  It is safe to use this function from within an\r
@@ -1105,27 +1111,27 @@ signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void
  portCHAR cValueToPost;\r
  const portTickType xBlockTime = ( portTickType )0xff;\r
 \r
-    // Create a queue capable of containing 10 characters.\r
-    xQueue = xQueueCreate( 10, sizeof( portCHAR ) );\r
-    if( xQueue == 0 )\r
-    {\r
-        // Failed to create the queue.\r
-    }\r
+       // Create a queue capable of containing 10 characters.\r
+       xQueue = xQueueCreate( 10, sizeof( portCHAR ) );\r
+       if( xQueue == 0 )\r
+       {\r
+               // Failed to create the queue.\r
+       }\r
 \r
-    // ...\r
+       // ...\r
 \r
-    // Post some characters that will be used within an ISR.  If the queue\r
-    // is full then this task will block for xBlockTime ticks.\r
-    cValueToPost = 'a';\r
-    xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
-    cValueToPost = 'b';\r
-    xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
+       // Post some characters that will be used within an ISR.  If the queue\r
+       // is full then this task will block for xBlockTime ticks.\r
+       cValueToPost = 'a';\r
+       xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
+       cValueToPost = 'b';\r
+       xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
 \r
-    // ... keep posting characters ... this task may block when the queue\r
-    // becomes full.\r
+       // ... keep posting characters ... this task may block when the queue\r
+       // becomes full.\r
 \r
-    cValueToPost = 'c';\r
-    xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
+       cValueToPost = 'c';\r
+       xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
  }\r
 \r
  // ISR that outputs all the characters received on the queue.\r
@@ -1134,21 +1140,21 @@ signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void
  portBASE_TYPE xTaskWokenByReceive = pdFALSE;\r
  portCHAR cRxedChar;\r
 \r
-    while( xQueueReceiveFromISR( xQueue, ( void * ) &cRxedChar, &xTaskWokenByReceive) )\r
-    {\r
-        // A character was received.  Output the character now.\r
-        vOutputCharacter( cRxedChar );\r
-\r
-        // If removing the character from the queue woke the task that was\r
-        // posting onto the queue cTaskWokenByReceive will have been set to\r
-        // pdTRUE.  No matter how many times this loop iterates only one\r
-        // task will be woken.\r
-    }\r
-\r
-    if( cTaskWokenByPost != ( portCHAR ) pdFALSE;\r
-    {\r
-        taskYIELD ();\r
-    }\r
+       while( xQueueReceiveFromISR( xQueue, ( void * ) &cRxedChar, &xTaskWokenByReceive) )\r
+       {\r
+               // A character was received.  Output the character now.\r
+               vOutputCharacter( cRxedChar );\r
+\r
+               // If removing the character from the queue woke the task that was\r
+               // posting onto the queue cTaskWokenByReceive will have been set to\r
+               // pdTRUE.  No matter how many times this loop iterates only one\r
+               // task will be woken.\r
+       }\r
+\r
+       if( cTaskWokenByPost != ( portCHAR ) pdFALSE;\r
+       {\r
+               taskYIELD ();\r
+       }\r
  }\r
  </pre>\r
  * \defgroup xQueueReceiveFromISR xQueueReceiveFromISR\r
@@ -1165,17 +1171,17 @@ signed portBASE_TYPE xQueueIsQueueFullFromISR( const xQueueHandle pxQueue );
 unsigned portBASE_TYPE uxQueueMessagesWaitingFromISR( const xQueueHandle pxQueue );\r
 \r
 \r
-/* \r
+/*\r
  * xQueueAltGenericSend() is an alternative version of xQueueGenericSend().\r
  * Likewise xQueueAltGenericReceive() is an alternative version of\r
  * xQueueGenericReceive().\r
  *\r
- * The source code that implements the alternative (Alt) API is much \r
- * simpler     because it executes everything from within a critical section.  \r
- * This is     the approach taken by many other RTOSes, but FreeRTOS.org has the \r
- * preferred fully featured API too.  The fully featured API has more \r
- * complex     code that takes longer to execute, but makes much less use of \r
- * critical sections.  Therefore the alternative API sacrifices interrupt \r
+ * The source code that implements the alternative (Alt) API is much\r
+ * simpler     because it executes everything from within a critical section.\r
+ * This is     the approach taken by many other RTOSes, but FreeRTOS.org has the\r
+ * preferred fully featured API too.  The fully featured API has more\r
+ * complex     code that takes longer to execute, but makes much less use of\r
+ * critical sections.  Therefore the alternative API sacrifices interrupt\r
  * responsiveness to gain execution speed, whereas the fully featured API\r
  * sacrifices execution speed to ensure better interrupt responsiveness.\r
  */\r
@@ -1217,14 +1223,14 @@ portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle xMutex );
 /*\r
  * The registry is provided as a means for kernel aware debuggers to\r
  * locate queues, semaphores and mutexes.  Call vQueueAddToRegistry() add\r
- * a queue, semaphore or mutex handle to the registry if you want the handle \r
- * to be available to a kernel aware debugger.  If you are not using a kernel \r
+ * a queue, semaphore or mutex handle to the registry if you want the handle\r
+ * to be available to a kernel aware debugger.  If you are not using a kernel\r
  * aware debugger then this function can be ignored.\r
  *\r
  * configQUEUE_REGISTRY_SIZE defines the maximum number of handles the\r
- * registry can hold.  configQUEUE_REGISTRY_SIZE must be greater than 0 \r
+ * registry can hold.  configQUEUE_REGISTRY_SIZE must be greater than 0\r
  * within FreeRTOSConfig.h for the registry to be available.  Its value\r
- * does not effect the number of queues, semaphores and mutexes that can be \r
+ * does not effect the number of queues, semaphores and mutexes that can be\r
  * created - just the number that the registry can hold.\r
  *\r
  * @param xQueue The handle of the queue being added to the registry.  This\r