mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Update version numbers in FreeRTOS-Plus demo files.
This commit is contained in:
parent
cbb14d30c5
commit
6be1ffccfb
|
@ -0,0 +1,568 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
|
All rights reserved
|
||||||
|
|
||||||
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
|
* platform software that has become a de facto standard. *
|
||||||
|
* *
|
||||||
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
|
* *
|
||||||
|
* Thank you! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
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 from the following
|
||||||
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
* not run, what could be wrong?" *
|
||||||
|
* *
|
||||||
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
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.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
|
licenses offer ticketed support, indemnification and 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!
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* FreeRTOS includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* FreeRTOS+CLI includes. */
|
||||||
|
#include "FreeRTOS_CLI.h"
|
||||||
|
|
||||||
|
/* File system includes. */
|
||||||
|
#include "fat_sl.h"
|
||||||
|
#include "api_mdriver_ram.h"
|
||||||
|
|
||||||
|
#ifdef _WINDOWS_
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define cliNEW_LINE "\r\n"
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* See the URL in the comments within main.c for the location of the online
|
||||||
|
* documentation.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Print out information on a single file.
|
||||||
|
*/
|
||||||
|
static void prvCreateFileInfoString( int8_t *pcBuffer, F_FIND *pxFindStruct );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copies an existing file into a newly created file.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvPerformCopy( int8_t *pcSourceFile,
|
||||||
|
int32_t lSourceFileLength,
|
||||||
|
int8_t *pcDestinationFile,
|
||||||
|
int8_t *pxWriteBuffer,
|
||||||
|
size_t xWriteBufferLen );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the DIR command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvDIRCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the CD command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvCDCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the DEL command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvDELCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the TYPE command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvTYPECommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the COPY command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvCOPYCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/* Structure that defines the DIR command line command, which lists all the
|
||||||
|
files in the current directory. */
|
||||||
|
static const CLI_Command_Definition_t xDIR =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "dir", /* The command string to type. */
|
||||||
|
( const int8_t * const ) "\r\ndir:\r\n Lists the files in the current directory\r\n",
|
||||||
|
prvDIRCommand, /* The function to run. */
|
||||||
|
0 /* No parameters are expected. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Structure that defines the CD command line command, which changes the
|
||||||
|
working directory. */
|
||||||
|
static const CLI_Command_Definition_t xCD =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "cd", /* The command string to type. */
|
||||||
|
( const int8_t * const ) "\r\ncd <dir name>:\r\n Changes the working directory\r\n",
|
||||||
|
prvCDCommand, /* The function to run. */
|
||||||
|
1 /* One parameter is expected. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Structure that defines the TYPE command line command, which prints the
|
||||||
|
contents of a file to the console. */
|
||||||
|
static const CLI_Command_Definition_t xTYPE =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "type", /* The command string to type. */
|
||||||
|
( const int8_t * const ) "\r\ntype <filename>:\r\n Prints file contents to the terminal\r\n",
|
||||||
|
prvTYPECommand, /* The function to run. */
|
||||||
|
1 /* One parameter is expected. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Structure that defines the DEL command line command, which deletes a file. */
|
||||||
|
static const CLI_Command_Definition_t xDEL =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "del", /* The command string to type. */
|
||||||
|
( const int8_t * const ) "\r\ndel <filename>:\r\n deletes a file or directory\r\n",
|
||||||
|
prvDELCommand, /* The function to run. */
|
||||||
|
1 /* One parameter is expected. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Structure that defines the COPY command line command, which deletes a file. */
|
||||||
|
static const CLI_Command_Definition_t xCOPY =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "copy", /* The command string to type. */
|
||||||
|
( const int8_t * const ) "\r\ncopy <source file> <dest file>:\r\n Copies <source file> to <dest file>\r\n",
|
||||||
|
prvCOPYCommand, /* The function to run. */
|
||||||
|
2 /* Two parameters are expected. */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vRegisterFileSystemCLICommands( void )
|
||||||
|
{
|
||||||
|
/* Register all the command line commands defined immediately above. */
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xDIR );
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xCD );
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xTYPE );
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xDEL );
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xCOPY );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvTYPECommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
int8_t *pcParameter;
|
||||||
|
portBASE_TYPE xParameterStringLength, xReturn = pdTRUE;
|
||||||
|
static F_FILE *pxFile = NULL;
|
||||||
|
int iChar;
|
||||||
|
size_t xByte;
|
||||||
|
size_t xColumns = 50U;
|
||||||
|
|
||||||
|
/* Ensure there is always a null terminator after each character written. */
|
||||||
|
memset( pcWriteBuffer, 0x00, xWriteBufferLen );
|
||||||
|
|
||||||
|
/* Ensure the buffer leaves space for the \r\n. */
|
||||||
|
configASSERT( xWriteBufferLen > ( strlen( cliNEW_LINE ) * 2 ) );
|
||||||
|
xWriteBufferLen -= strlen( cliNEW_LINE );
|
||||||
|
|
||||||
|
if( xWriteBufferLen < xColumns )
|
||||||
|
{
|
||||||
|
/* Ensure the loop that uses xColumns as an end condition does not
|
||||||
|
write off the end of the buffer. */
|
||||||
|
xColumns = xWriteBufferLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( pxFile == NULL )
|
||||||
|
{
|
||||||
|
/* The file has not been opened yet. Find the file name. */
|
||||||
|
pcParameter = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
1, /* Return the first parameter. */
|
||||||
|
&xParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Sanity check something was returned. */
|
||||||
|
configASSERT( pcParameter );
|
||||||
|
|
||||||
|
/* Attempt to open the requested file. */
|
||||||
|
pxFile = f_open( ( const char * ) pcParameter, "r" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( pxFile != NULL )
|
||||||
|
{
|
||||||
|
/* Read the next chunk of data from the file. */
|
||||||
|
for( xByte = 0; xByte < xColumns; xByte++ )
|
||||||
|
{
|
||||||
|
iChar = f_getc( pxFile );
|
||||||
|
|
||||||
|
if( iChar == -1 )
|
||||||
|
{
|
||||||
|
/* No more characters to return. */
|
||||||
|
f_close( pxFile );
|
||||||
|
pxFile = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pcWriteBuffer[ xByte ] = ( int8_t ) iChar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( pxFile == NULL )
|
||||||
|
{
|
||||||
|
/* Either the file was not opened, or all the data from the file has
|
||||||
|
been returned and the file is now closed. */
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat( ( char * ) pcWriteBuffer, cliNEW_LINE );
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvCDCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
int8_t *pcParameter;
|
||||||
|
portBASE_TYPE xParameterStringLength;
|
||||||
|
unsigned char ucReturned;
|
||||||
|
size_t xStringLength;
|
||||||
|
|
||||||
|
/* Obtain the parameter string. */
|
||||||
|
pcParameter = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
1, /* Return the first parameter. */
|
||||||
|
&xParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Sanity check something was returned. */
|
||||||
|
configASSERT( pcParameter );
|
||||||
|
|
||||||
|
/* Attempt to move to the requested directory. */
|
||||||
|
ucReturned = f_chdir( ( char * ) pcParameter );
|
||||||
|
|
||||||
|
if( ucReturned == F_NO_ERROR )
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "In: " );
|
||||||
|
xStringLength = strlen( ( const char * ) pcWriteBuffer );
|
||||||
|
f_getcwd( ( char * ) &( pcWriteBuffer[ xStringLength ] ), ( unsigned char ) ( xWriteBufferLen - xStringLength ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Error" );
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat( ( char * ) pcWriteBuffer, cliNEW_LINE );
|
||||||
|
|
||||||
|
return pdFALSE;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvDIRCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
static F_FIND *pxFindStruct = NULL;
|
||||||
|
unsigned char ucReturned;
|
||||||
|
portBASE_TYPE xReturn = pdFALSE;
|
||||||
|
|
||||||
|
/* This assumes pcWriteBuffer is long enough. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
|
||||||
|
/* Ensure the buffer leaves space for the \r\n. */
|
||||||
|
configASSERT( xWriteBufferLen > ( strlen( cliNEW_LINE ) * 2 ) );
|
||||||
|
xWriteBufferLen -= strlen( cliNEW_LINE );
|
||||||
|
|
||||||
|
if( pxFindStruct == NULL )
|
||||||
|
{
|
||||||
|
/* This is the first time this function has been executed since the Dir
|
||||||
|
command was run. Create the find structure. */
|
||||||
|
pxFindStruct = ( F_FIND * ) pvPortMalloc( sizeof( F_FIND ) );
|
||||||
|
|
||||||
|
if( pxFindStruct != NULL )
|
||||||
|
{
|
||||||
|
ucReturned = f_findfirst( "*.*", pxFindStruct );
|
||||||
|
|
||||||
|
if( ucReturned == F_NO_ERROR )
|
||||||
|
{
|
||||||
|
prvCreateFileInfoString( pcWriteBuffer, pxFindStruct );
|
||||||
|
xReturn = pdPASS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
snprintf( ( char * ) pcWriteBuffer, xWriteBufferLen, "Error: f_findfirst() failed." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
snprintf( ( char * ) pcWriteBuffer, xWriteBufferLen, "Failed to allocate RAM (using heap_4.c will prevent fragmentation)." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The find struct has already been created. Find the next file in
|
||||||
|
the directory. */
|
||||||
|
ucReturned = f_findnext( pxFindStruct );
|
||||||
|
|
||||||
|
if( ucReturned == F_NO_ERROR )
|
||||||
|
{
|
||||||
|
prvCreateFileInfoString( pcWriteBuffer, pxFindStruct );
|
||||||
|
xReturn = pdPASS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* There are no more files. Free the find structure. */
|
||||||
|
vPortFree( pxFindStruct );
|
||||||
|
pxFindStruct = NULL;
|
||||||
|
|
||||||
|
/* No string to return. */
|
||||||
|
pcWriteBuffer[ 0 ] = 0x00;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat( ( char * ) pcWriteBuffer, cliNEW_LINE );
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvDELCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
int8_t *pcParameter;
|
||||||
|
portBASE_TYPE xParameterStringLength;
|
||||||
|
unsigned char ucReturned;
|
||||||
|
|
||||||
|
/* This function assumes xWriteBufferLen is large enough! */
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
|
||||||
|
/* Obtain the parameter string. */
|
||||||
|
pcParameter = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
1, /* Return the first parameter. */
|
||||||
|
&xParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Sanity check something was returned. */
|
||||||
|
configASSERT( pcParameter );
|
||||||
|
|
||||||
|
/* Attempt to delete the file. */
|
||||||
|
ucReturned = f_delete( ( const char * ) pcParameter );
|
||||||
|
|
||||||
|
if( ucReturned == F_NO_ERROR )
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "%s was deleted", pcParameter );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Error" );
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat( ( char * ) pcWriteBuffer, cliNEW_LINE );
|
||||||
|
|
||||||
|
return pdFALSE;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvCOPYCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
int8_t *pcSourceFile, *pcDestinationFile;
|
||||||
|
portBASE_TYPE xParameterStringLength;
|
||||||
|
long lSourceLength, lDestinationLength = 0;
|
||||||
|
|
||||||
|
/* Obtain the name of the destination file. */
|
||||||
|
pcDestinationFile = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
2, /* Return the second parameter. */
|
||||||
|
&xParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Sanity check something was returned. */
|
||||||
|
configASSERT( pcDestinationFile );
|
||||||
|
|
||||||
|
/* Obtain the name of the source file. */
|
||||||
|
pcSourceFile = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
1, /* Return the first parameter. */
|
||||||
|
&xParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Sanity check something was returned. */
|
||||||
|
configASSERT( pcSourceFile );
|
||||||
|
|
||||||
|
/* Terminate the string. */
|
||||||
|
pcSourceFile[ xParameterStringLength ] = 0x00;
|
||||||
|
|
||||||
|
/* See if the source file exists, obtain its length if it does. */
|
||||||
|
lSourceLength = f_filelength( ( const char * ) pcSourceFile );
|
||||||
|
|
||||||
|
if( lSourceLength == 0 )
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Source file does not exist" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* See if the destination file exists. */
|
||||||
|
lDestinationLength = f_filelength( ( const char * ) pcDestinationFile );
|
||||||
|
|
||||||
|
if( lDestinationLength != 0 )
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Error: Destination file already exists" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Continue only if the source file exists and the destination file does
|
||||||
|
not exist. */
|
||||||
|
if( ( lSourceLength != 0 ) && ( lDestinationLength == 0 ) )
|
||||||
|
{
|
||||||
|
if( prvPerformCopy( pcSourceFile, lSourceLength, pcDestinationFile, pcWriteBuffer, xWriteBufferLen ) == pdPASS )
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Copy made" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Error during copy" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat( ( char * ) pcWriteBuffer, cliNEW_LINE );
|
||||||
|
|
||||||
|
return pdFALSE;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvPerformCopy( int8_t *pcSourceFile,
|
||||||
|
int32_t lSourceFileLength,
|
||||||
|
int8_t *pcDestinationFile,
|
||||||
|
int8_t *pxWriteBuffer,
|
||||||
|
size_t xWriteBufferLen )
|
||||||
|
{
|
||||||
|
int32_t lBytesRead = 0, lBytesToRead, lBytesRemaining;
|
||||||
|
F_FILE *pxFile;
|
||||||
|
portBASE_TYPE xReturn = pdPASS;
|
||||||
|
|
||||||
|
/* NOTE: Error handling has been omitted for clarity. */
|
||||||
|
|
||||||
|
while( lBytesRead < lSourceFileLength )
|
||||||
|
{
|
||||||
|
/* How many bytes are left? */
|
||||||
|
lBytesRemaining = lSourceFileLength - lBytesRead;
|
||||||
|
|
||||||
|
/* How many bytes should be read this time around the loop. Can't
|
||||||
|
read more bytes than will fit into the buffer. */
|
||||||
|
if( lBytesRemaining > ( long ) xWriteBufferLen )
|
||||||
|
{
|
||||||
|
lBytesToRead = ( long ) xWriteBufferLen;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lBytesToRead = lBytesRemaining;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open the source file, seek past the data that has already been
|
||||||
|
read from the file, read the next block of data, then close the
|
||||||
|
file again so the destination file can be opened. */
|
||||||
|
pxFile = f_open( ( const char * ) pcSourceFile, "r" );
|
||||||
|
if( pxFile != NULL )
|
||||||
|
{
|
||||||
|
f_seek( pxFile, lBytesRead, F_SEEK_SET );
|
||||||
|
f_read( pxWriteBuffer, lBytesToRead, 1, pxFile );
|
||||||
|
f_close( pxFile );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFAIL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open the destination file and write the block of data to the end of
|
||||||
|
the file. */
|
||||||
|
pxFile = f_open( ( const char * ) pcDestinationFile, "a" );
|
||||||
|
if( pxFile != NULL )
|
||||||
|
{
|
||||||
|
f_write( pxWriteBuffer, lBytesToRead, 1, pxFile );
|
||||||
|
f_close( pxFile );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFAIL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
lBytesRead += lBytesToRead;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvCreateFileInfoString( int8_t *pcBuffer, F_FIND *pxFindStruct )
|
||||||
|
{
|
||||||
|
const char *pcWritableFile = "writable file", *pcReadOnlyFile = "read only file", *pcDirectory = "directory";
|
||||||
|
const char * pcAttrib;
|
||||||
|
|
||||||
|
/* Point pcAttrib to a string that describes the file. */
|
||||||
|
if( ( pxFindStruct->attr & F_ATTR_DIR ) != 0 )
|
||||||
|
{
|
||||||
|
pcAttrib = pcDirectory;
|
||||||
|
}
|
||||||
|
else if( pxFindStruct->attr & F_ATTR_READONLY )
|
||||||
|
{
|
||||||
|
pcAttrib = pcReadOnlyFile;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pcAttrib = pcWritableFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create a string that includes the file name, the file size and the
|
||||||
|
attributes string. */
|
||||||
|
sprintf( ( char * ) pcBuffer, "%s [%s] [size=%d]", pxFindStruct->filename, pcAttrib, ( int ) pxFindStruct->filesize );
|
||||||
|
}
|
|
@ -0,0 +1,419 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
|
All rights reserved
|
||||||
|
|
||||||
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
|
* platform software that has become a de facto standard. *
|
||||||
|
* *
|
||||||
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
|
* *
|
||||||
|
* Thank you! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
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 from the following
|
||||||
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
* not run, what could be wrong?" *
|
||||||
|
* *
|
||||||
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
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.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
|
licenses offer ticketed support, indemnification and 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!
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* See the following URL for information on the commands defined in this file:
|
||||||
|
* http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/Embedded_Ethernet_Examples/Ethernet_Related_CLI_Commands.shtml
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/* FreeRTOS includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* FreeRTOS+CLI includes. */
|
||||||
|
#include "FreeRTOS_CLI.h"
|
||||||
|
|
||||||
|
#ifndef configINCLUDE_TRACE_RELATED_CLI_COMMANDS
|
||||||
|
#define configINCLUDE_TRACE_RELATED_CLI_COMMANDS 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the task-stats command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvTaskStatsCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the run-time-stats command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvRunTimeStatsCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the echo-three-parameters command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvThreeParameterEchoCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the echo-parameters command.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvParameterEchoCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements the "trace start" and "trace stop" commands;
|
||||||
|
*/
|
||||||
|
#if configINCLUDE_TRACE_RELATED_CLI_COMMANDS == 1
|
||||||
|
static portBASE_TYPE prvStartStopTraceCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Structure that defines the "run-time-stats" command line command. This
|
||||||
|
generates a table that shows how much run time each task has */
|
||||||
|
static const CLI_Command_Definition_t xRunTimeStats =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "run-time-stats", /* The command string to type. */
|
||||||
|
( const int8_t * const ) "\r\nrun-time-stats:\r\n Displays a table showing how much processing time each FreeRTOS task has used\r\n",
|
||||||
|
prvRunTimeStatsCommand, /* The function to run. */
|
||||||
|
0 /* No parameters are expected. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Structure that defines the "task-stats" command line command. This generates
|
||||||
|
a table that gives information on each task in the system. */
|
||||||
|
static const CLI_Command_Definition_t xTaskStats =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "task-stats", /* The command string to type. */
|
||||||
|
( const int8_t * const ) "\r\ntask-stats:\r\n Displays a table showing the state of each FreeRTOS task\r\n",
|
||||||
|
prvTaskStatsCommand, /* The function to run. */
|
||||||
|
0 /* No parameters are expected. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Structure that defines the "echo_3_parameters" command line command. This
|
||||||
|
takes exactly three parameters that the command simply echos back one at a
|
||||||
|
time. */
|
||||||
|
static const CLI_Command_Definition_t xThreeParameterEcho =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "echo-3-parameters",
|
||||||
|
( const int8_t * const ) "\r\necho-3-parameters <param1> <param2> <param3>:\r\n Expects three parameters, echos each in turn\r\n",
|
||||||
|
prvThreeParameterEchoCommand, /* The function to run. */
|
||||||
|
3 /* Three parameters are expected, which can take any value. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Structure that defines the "echo_parameters" command line command. This
|
||||||
|
takes a variable number of parameters that the command simply echos back one at
|
||||||
|
a time. */
|
||||||
|
static const CLI_Command_Definition_t xParameterEcho =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "echo-parameters",
|
||||||
|
( const int8_t * const ) "\r\necho-parameters <...>:\r\n Take variable number of parameters, echos each in turn\r\n",
|
||||||
|
prvParameterEchoCommand, /* The function to run. */
|
||||||
|
-1 /* The user can enter any number of commands. */
|
||||||
|
};
|
||||||
|
|
||||||
|
#if configINCLUDE_TRACE_RELATED_CLI_COMMANDS == 1
|
||||||
|
/* Structure that defines the "trace" command line command. This takes a single
|
||||||
|
parameter, which can be either "start" or "stop". */
|
||||||
|
static const CLI_Command_Definition_t xStartStopTrace =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "trace",
|
||||||
|
( const int8_t * const ) "\r\ntrace [start | stop]:\r\n Starts or stops a trace recording for viewing in FreeRTOS+Trace\r\n",
|
||||||
|
prvStartStopTraceCommand, /* The function to run. */
|
||||||
|
1 /* One parameter is expected. Valid values are "start" and "stop". */
|
||||||
|
};
|
||||||
|
#endif /* configINCLUDE_TRACE_RELATED_CLI_COMMANDS */
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vRegisterSampleCLICommands( void )
|
||||||
|
{
|
||||||
|
/* Register all the command line commands defined immediately above. */
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xTaskStats );
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xRunTimeStats );
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xThreeParameterEcho );
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xParameterEcho );
|
||||||
|
|
||||||
|
#if( configINCLUDE_TRACE_RELATED_CLI_COMMANDS == 1 )
|
||||||
|
{
|
||||||
|
FreeRTOS_CLIRegisterCommand( & xStartStopTrace );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvTaskStatsCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
const int8_t *const pcHeader = ( int8_t * ) "Task State Priority Stack #\r\n************************************************\r\n";
|
||||||
|
|
||||||
|
/* Remove compile time warnings about unused parameters, and check the
|
||||||
|
write buffer is not NULL. NOTE - for simplicity, this example assumes the
|
||||||
|
write buffer length is adequate, so does not check for buffer overflows. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
configASSERT( pcWriteBuffer );
|
||||||
|
|
||||||
|
/* Generate a table of task stats. */
|
||||||
|
strcpy( ( char * ) pcWriteBuffer, ( char * ) pcHeader );
|
||||||
|
vTaskList( pcWriteBuffer + strlen( ( char * ) pcHeader ) );
|
||||||
|
|
||||||
|
/* There is no more data to return after this single string, so return
|
||||||
|
pdFALSE. */
|
||||||
|
return pdFALSE;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvRunTimeStatsCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
const int8_t * const pcHeader = ( int8_t * ) "Task Abs Time % Time\r\n****************************************\r\n";
|
||||||
|
|
||||||
|
/* Remove compile time warnings about unused parameters, and check the
|
||||||
|
write buffer is not NULL. NOTE - for simplicity, this example assumes the
|
||||||
|
write buffer length is adequate, so does not check for buffer overflows. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
configASSERT( pcWriteBuffer );
|
||||||
|
|
||||||
|
/* Generate a table of task stats. */
|
||||||
|
strcpy( ( char * ) pcWriteBuffer, ( char * ) pcHeader );
|
||||||
|
vTaskGetRunTimeStats( pcWriteBuffer + strlen( ( char * ) pcHeader ) );
|
||||||
|
|
||||||
|
/* There is no more data to return after this single string, so return
|
||||||
|
pdFALSE. */
|
||||||
|
return pdFALSE;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvThreeParameterEchoCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
int8_t *pcParameter;
|
||||||
|
portBASE_TYPE xParameterStringLength, xReturn;
|
||||||
|
static portBASE_TYPE lParameterNumber = 0;
|
||||||
|
|
||||||
|
/* Remove compile time warnings about unused parameters, and check the
|
||||||
|
write buffer is not NULL. NOTE - for simplicity, this example assumes the
|
||||||
|
write buffer length is adequate, so does not check for buffer overflows. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
configASSERT( pcWriteBuffer );
|
||||||
|
|
||||||
|
if( lParameterNumber == 0 )
|
||||||
|
{
|
||||||
|
/* The first time the function is called after the command has been
|
||||||
|
entered just a header string is returned. */
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "The three parameters were:\r\n" );
|
||||||
|
|
||||||
|
/* Next time the function is called the first parameter will be echoed
|
||||||
|
back. */
|
||||||
|
lParameterNumber = 1L;
|
||||||
|
|
||||||
|
/* There is more data to be returned as no parameters have been echoed
|
||||||
|
back yet. */
|
||||||
|
xReturn = pdPASS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Obtain the parameter string. */
|
||||||
|
pcParameter = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
lParameterNumber, /* Return the next parameter. */
|
||||||
|
&xParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Sanity check something was returned. */
|
||||||
|
configASSERT( pcParameter );
|
||||||
|
|
||||||
|
/* Return the parameter string. */
|
||||||
|
memset( pcWriteBuffer, 0x00, xWriteBufferLen );
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "%d: ", ( int ) lParameterNumber );
|
||||||
|
strncat( ( char * ) pcWriteBuffer, ( const char * ) pcParameter, xParameterStringLength );
|
||||||
|
strncat( ( char * ) pcWriteBuffer, "\r\n", strlen( "\r\n" ) );
|
||||||
|
|
||||||
|
/* If this is the last of the three parameters then there are no more
|
||||||
|
strings to return after this one. */
|
||||||
|
if( lParameterNumber == 3L )
|
||||||
|
{
|
||||||
|
/* If this is the last of the three parameters then there are no more
|
||||||
|
strings to return after this one. */
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
lParameterNumber = 0L;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* There are more parameters to return after this one. */
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
lParameterNumber++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static portBASE_TYPE prvParameterEchoCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
int8_t *pcParameter;
|
||||||
|
portBASE_TYPE xParameterStringLength, xReturn;
|
||||||
|
static portBASE_TYPE lParameterNumber = 0;
|
||||||
|
|
||||||
|
/* Remove compile time warnings about unused parameters, and check the
|
||||||
|
write buffer is not NULL. NOTE - for simplicity, this example assumes the
|
||||||
|
write buffer length is adequate, so does not check for buffer overflows. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
configASSERT( pcWriteBuffer );
|
||||||
|
|
||||||
|
if( lParameterNumber == 0 )
|
||||||
|
{
|
||||||
|
/* The first time the function is called after the command has been
|
||||||
|
entered just a header string is returned. */
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "The parameters were:\r\n" );
|
||||||
|
|
||||||
|
/* Next time the function is called the first parameter will be echoed
|
||||||
|
back. */
|
||||||
|
lParameterNumber = 1L;
|
||||||
|
|
||||||
|
/* There is more data to be returned as no parameters have been echoed
|
||||||
|
back yet. */
|
||||||
|
xReturn = pdPASS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Obtain the parameter string. */
|
||||||
|
pcParameter = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
lParameterNumber, /* Return the next parameter. */
|
||||||
|
&xParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
if( pcParameter != NULL )
|
||||||
|
{
|
||||||
|
/* Return the parameter string. */
|
||||||
|
memset( pcWriteBuffer, 0x00, xWriteBufferLen );
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "%d: ", ( int ) lParameterNumber );
|
||||||
|
strncat( ( char * ) pcWriteBuffer, ( const char * ) pcParameter, xParameterStringLength );
|
||||||
|
strncat( ( char * ) pcWriteBuffer, "\r\n", strlen( "\r\n" ) );
|
||||||
|
|
||||||
|
/* There might be more parameters to return after this one. */
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
lParameterNumber++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* No more parameters were found. Make sure the write buffer does
|
||||||
|
not contain a valid string. */
|
||||||
|
pcWriteBuffer[ 0 ] = 0x00;
|
||||||
|
|
||||||
|
/* No more data to return. */
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
|
||||||
|
/* Start over the next time this command is executed. */
|
||||||
|
lParameterNumber = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if configINCLUDE_TRACE_RELATED_CLI_COMMANDS == 1
|
||||||
|
|
||||||
|
static portBASE_TYPE prvStartStopTraceCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
int8_t *pcParameter;
|
||||||
|
portBASE_TYPE lParameterStringLength;
|
||||||
|
|
||||||
|
/* Remove compile time warnings about unused parameters, and check the
|
||||||
|
write buffer is not NULL. NOTE - for simplicity, this example assumes the
|
||||||
|
write buffer length is adequate, so does not check for buffer overflows. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
configASSERT( pcWriteBuffer );
|
||||||
|
|
||||||
|
/* Obtain the parameter string. */
|
||||||
|
pcParameter = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
1, /* Return the first parameter. */
|
||||||
|
&lParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Sanity check something was returned. */
|
||||||
|
configASSERT( pcParameter );
|
||||||
|
|
||||||
|
/* There are only two valid parameter values. */
|
||||||
|
if( strncmp( ( const char * ) pcParameter, "start", strlen( "start" ) ) == 0 )
|
||||||
|
{
|
||||||
|
/* Start or restart the trace. */
|
||||||
|
vTraceStop();
|
||||||
|
vTraceClear();
|
||||||
|
vTraceStart();
|
||||||
|
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Trace recording (re)started.\r\n" );
|
||||||
|
}
|
||||||
|
else if( strncmp( ( const char * ) pcParameter, "stop", strlen( "stop" ) ) == 0 )
|
||||||
|
{
|
||||||
|
/* End the trace, if one is running. */
|
||||||
|
vTraceStop();
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Stopping trace recording.\r\n" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Valid parameters are 'start' and 'stop'.\r\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* There is no more data to return after this single string, so return
|
||||||
|
pdFALSE. */
|
||||||
|
return pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* configINCLUDE_TRACE_RELATED_CLI_COMMANDS */
|
|
@ -0,0 +1,351 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
|
All rights reserved
|
||||||
|
|
||||||
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
|
* platform software that has become a de facto standard. *
|
||||||
|
* *
|
||||||
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
|
* *
|
||||||
|
* Thank you! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
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 from the following
|
||||||
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
* not run, what could be wrong?" *
|
||||||
|
* *
|
||||||
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
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.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
|
licenses offer ticketed support, indemnification and 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!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* See the following URL for information on the commands defined in this file:
|
||||||
|
* http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/Embedded_Ethernet_Examples/Ethernet_Related_CLI_Commands.shtml
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/* FreeRTOS includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
/* FreeRTOS+CLI includes. */
|
||||||
|
#include "FreeRTOS_CLI.h"
|
||||||
|
|
||||||
|
/* FreeRTOS+UDP includes, just to make the stats available to the CLI
|
||||||
|
commands. */
|
||||||
|
#include "FreeRTOS_UDP_IP.h"
|
||||||
|
#include "FreeRTOS_Sockets.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defines a command that prints out IP address information.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvDisplayIPConfig( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defines a command that prints out the gathered demo debug stats.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvDisplayIPDebugStats( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defines a command that sends an ICMP ping request to an IP address.
|
||||||
|
*/
|
||||||
|
static portBASE_TYPE prvPingCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
||||||
|
|
||||||
|
/* Structure that defines the "ip-config" command line command. */
|
||||||
|
static const CLI_Command_Definition_t xIPConfig =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "ip-config",
|
||||||
|
( const int8_t * const ) "ip-config:\r\n Displays IP address configuration\r\n\r\n",
|
||||||
|
prvDisplayIPConfig,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
|
#if configINCLUDE_DEMO_DEBUG_STATS != 0
|
||||||
|
/* Structure that defines the "ip-debug-stats" command line command. */
|
||||||
|
static const CLI_Command_Definition_t xIPDebugStats =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "ip-debug-stats", /* The command string to type. */
|
||||||
|
( const int8_t * const ) "ip-debug-stats:\r\n Shows some IP stack stats useful for debug - an example only.\r\n\r\n",
|
||||||
|
prvDisplayIPDebugStats, /* The function to run. */
|
||||||
|
0 /* No parameters are expected. */
|
||||||
|
};
|
||||||
|
#endif /* configINCLUDE_DEMO_DEBUG_STATS */
|
||||||
|
|
||||||
|
#if ipconfigSUPPORT_OUTGOING_PINGS == 1
|
||||||
|
|
||||||
|
/* Structure that defines the "ping" command line command. This takes an IP
|
||||||
|
address or host name and (optionally) the number of bytes to ping as
|
||||||
|
parameters. */
|
||||||
|
static const CLI_Command_Definition_t xPing =
|
||||||
|
{
|
||||||
|
( const int8_t * const ) "ping",
|
||||||
|
( const int8_t * const ) "ping <ipaddress> <optional:bytes to send>:\r\n for example, ping 192.168.0.3 8, or ping www.example.com\r\n\r\n",
|
||||||
|
prvPingCommand, /* The function to run. */
|
||||||
|
-1 /* Ping can take either one or two parameter, so the number of parameters has to be determined by the ping command implementation. */
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* ipconfigSUPPORT_OUTGOING_PINGS */
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vRegisterUDPCLICommands( void )
|
||||||
|
{
|
||||||
|
/* Register all the command line commands defined immediately above. */
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xIPConfig );
|
||||||
|
|
||||||
|
#if configINCLUDE_DEMO_DEBUG_STATS == 1
|
||||||
|
{
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xIPDebugStats );
|
||||||
|
}
|
||||||
|
#endif /* configINCLUDE_DEMO_DEBUG_STATS */
|
||||||
|
|
||||||
|
#if ipconfigSUPPORT_OUTGOING_PINGS == 1
|
||||||
|
{
|
||||||
|
FreeRTOS_CLIRegisterCommand( &xPing );
|
||||||
|
}
|
||||||
|
#endif /* ipconfigSUPPORT_OUTGOING_PINGS */
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ipconfigSUPPORT_OUTGOING_PINGS == 1
|
||||||
|
|
||||||
|
static portBASE_TYPE prvPingCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
int8_t * pcParameter;
|
||||||
|
portBASE_TYPE lParameterStringLength, xReturn;
|
||||||
|
uint32_t ulIPAddress, ulBytesToPing;
|
||||||
|
const uint32_t ulDefaultBytesToPing = 8UL;
|
||||||
|
int8_t cBuffer[ 16 ];
|
||||||
|
|
||||||
|
/* Remove compile time warnings about unused parameters, and check the
|
||||||
|
write buffer is not NULL. NOTE - for simplicity, this example assumes the
|
||||||
|
write buffer length is adequate, so does not check for buffer overflows. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
configASSERT( pcWriteBuffer );
|
||||||
|
|
||||||
|
/* Start with an empty string. */
|
||||||
|
pcWriteBuffer[ 0 ] = 0x00;
|
||||||
|
|
||||||
|
/* Obtain the number of bytes to ping. */
|
||||||
|
pcParameter = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
2, /* Return the second parameter. */
|
||||||
|
&lParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
if( pcParameter == NULL )
|
||||||
|
{
|
||||||
|
/* The number of bytes was not specified, so default it. */
|
||||||
|
ulBytesToPing = ulDefaultBytesToPing;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ulBytesToPing = atol( ( const char * ) pcParameter );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Obtain the IP address string. */
|
||||||
|
pcParameter = ( int8_t * ) FreeRTOS_CLIGetParameter
|
||||||
|
(
|
||||||
|
pcCommandString, /* The command string itself. */
|
||||||
|
1, /* Return the first parameter. */
|
||||||
|
&lParameterStringLength /* Store the parameter string length. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Sanity check something was returned. */
|
||||||
|
configASSERT( pcParameter );
|
||||||
|
|
||||||
|
/* Attempt to obtain the IP address. If the first character is not a
|
||||||
|
digit, assume the host name has been passed in. */
|
||||||
|
if( ( *pcParameter >= '0' ) && ( *pcParameter <= '9' ) )
|
||||||
|
{
|
||||||
|
ulIPAddress = FreeRTOS_inet_addr( ( const uint8_t * ) pcParameter );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Terminate the host name. */
|
||||||
|
pcParameter[ lParameterStringLength ] = 0x00;
|
||||||
|
|
||||||
|
/* Attempt to resolve host. */
|
||||||
|
ulIPAddress = FreeRTOS_gethostbyname( ( uint8_t * ) pcParameter );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Convert IP address, which may have come from a DNS lookup, to string. */
|
||||||
|
FreeRTOS_inet_ntoa( ulIPAddress, ( char * ) cBuffer );
|
||||||
|
|
||||||
|
if( ulIPAddress != 0 )
|
||||||
|
{
|
||||||
|
xReturn = FreeRTOS_SendPingRequest( ulIPAddress, ( uint16_t ) ulBytesToPing, portMAX_DELAY );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( xReturn == pdFALSE )
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "%s", "Could not send ping request\r\n" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "Ping sent to %s with identifier %d\r\n", cBuffer, ( int ) xReturn );
|
||||||
|
}
|
||||||
|
|
||||||
|
return pdFALSE;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#endif /* ipconfigSUPPORT_OUTGOING_PINGS */
|
||||||
|
|
||||||
|
#if configINCLUDE_DEMO_DEBUG_STATS != 0
|
||||||
|
|
||||||
|
static portBASE_TYPE prvDisplayIPDebugStats( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
static portBASE_TYPE xIndex = -1;
|
||||||
|
extern xExampleDebugStatEntry_t xIPTraceValues[];
|
||||||
|
portBASE_TYPE xReturn;
|
||||||
|
|
||||||
|
/* Remove compile time warnings about unused parameters, and check the
|
||||||
|
write buffer is not NULL. NOTE - for simplicity, this example assumes the
|
||||||
|
write buffer length is adequate, so does not check for buffer overflows. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
configASSERT( pcWriteBuffer );
|
||||||
|
|
||||||
|
xIndex++;
|
||||||
|
|
||||||
|
if( xIndex < xExampleDebugStatEntries() )
|
||||||
|
{
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "%s %d\r\n", ( char * ) xIPTraceValues[ xIndex ].pucDescription, ( int ) xIPTraceValues[ xIndex ].ulData );
|
||||||
|
xReturn = pdPASS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Reset the index for the next time it is called. */
|
||||||
|
xIndex = -1;
|
||||||
|
|
||||||
|
/* Ensure nothing remains in the write buffer. */
|
||||||
|
pcWriteBuffer[ 0 ] = 0x00;
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#endif /* configINCLUDE_DEMO_DEBUG_STATS */
|
||||||
|
|
||||||
|
static portBASE_TYPE prvDisplayIPConfig( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
||||||
|
{
|
||||||
|
static portBASE_TYPE xIndex = 0;
|
||||||
|
portBASE_TYPE xReturn;
|
||||||
|
uint32_t ulAddress;
|
||||||
|
|
||||||
|
/* Remove compile time warnings about unused parameters, and check the
|
||||||
|
write buffer is not NULL. NOTE - for simplicity, this example assumes the
|
||||||
|
write buffer length is adequate, so does not check for buffer overflows. */
|
||||||
|
( void ) pcCommandString;
|
||||||
|
( void ) xWriteBufferLen;
|
||||||
|
configASSERT( pcWriteBuffer );
|
||||||
|
|
||||||
|
switch( xIndex )
|
||||||
|
{
|
||||||
|
case 0 :
|
||||||
|
FreeRTOS_GetAddressConfiguration( &ulAddress, NULL, NULL, NULL );
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "\r\nIP address " );
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
xIndex++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1 :
|
||||||
|
FreeRTOS_GetAddressConfiguration( NULL, &ulAddress, NULL, NULL );
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "\r\nNet mask " );
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
xIndex++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2 :
|
||||||
|
FreeRTOS_GetAddressConfiguration( NULL, NULL, &ulAddress, NULL );
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "\r\nGateway address " );
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
xIndex++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3 :
|
||||||
|
FreeRTOS_GetAddressConfiguration( NULL, NULL, NULL, &ulAddress );
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "\r\nDNS server address " );
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
xIndex++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default :
|
||||||
|
ulAddress = 0;
|
||||||
|
sprintf( ( char * ) pcWriteBuffer, "\r\n\r\n" );
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
xIndex = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ulAddress != 0 )
|
||||||
|
{
|
||||||
|
FreeRTOS_inet_ntoa( ulAddress, ( ( char * ) &( pcWriteBuffer[ strlen( ( char * ) pcWriteBuffer ) ] ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
|
@ -0,0 +1,359 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
|
All rights reserved
|
||||||
|
|
||||||
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
|
* platform software that has become a de facto standard. *
|
||||||
|
* *
|
||||||
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
|
* *
|
||||||
|
* Thank you! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
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 from the following
|
||||||
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
* not run, what could be wrong?" *
|
||||||
|
* *
|
||||||
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
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.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
|
licenses offer ticketed support, indemnification and 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!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* See the URL in the comments within main.c for the location of the online
|
||||||
|
* documentation.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* FreeRTOS includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
|
||||||
|
/* File system includes. */
|
||||||
|
#include "fat_sl.h"
|
||||||
|
#include "api_mdriver_ram.h"
|
||||||
|
|
||||||
|
/* 8.3 format, plus null terminator. */
|
||||||
|
#define fsMAX_FILE_NAME_LEN 13
|
||||||
|
|
||||||
|
/* The number of bytes read/written to the example files at a time. */
|
||||||
|
#define fsRAM_BUFFER_SIZE 200
|
||||||
|
|
||||||
|
/* The number of bytes written to the file that uses f_putc() and f_getc(). */
|
||||||
|
#define fsPUTC_FILE_SIZE 100
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates and verifies different files on the volume, demonstrating the use of
|
||||||
|
* various different API functions.
|
||||||
|
*/
|
||||||
|
void vCreateAndVerifySampleFiles( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a set of example files in the root directory of the volume using
|
||||||
|
* f_write().
|
||||||
|
*/
|
||||||
|
static void prvCreateDemoFilesUsing_f_write( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use f_read() to read back and verify the files that were created by
|
||||||
|
* prvCreateDemoFilesUsing_f_write().
|
||||||
|
*/
|
||||||
|
static void prvVerifyDemoFileUsing_f_read( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create an example file in a sub-directory using f_putc().
|
||||||
|
*/
|
||||||
|
static void prvCreateDemoFileUsing_f_putc( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use f_getc() to read back and verify the file that was created by
|
||||||
|
* prvCreateDemoFileUsing_f_putc().
|
||||||
|
*/
|
||||||
|
static void prvVerifyDemoFileUsing_f_getc( void );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* A buffer used to both create content to write to disk, and read content back
|
||||||
|
from a disk. Note there is no mutual exclusion on this buffer. */
|
||||||
|
static char cRAMBuffer[ fsRAM_BUFFER_SIZE ];
|
||||||
|
|
||||||
|
/* Names of directories that are created. */
|
||||||
|
static const char *pcRoot = "/", *pcDirectory1 = "SUB1", *pcDirectory2 = "SUB2", *pcFullPath = "/SUB1/SUB2";
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vCreateAndVerifySampleFiles( void )
|
||||||
|
{
|
||||||
|
unsigned char ucStatus;
|
||||||
|
|
||||||
|
/* First create the volume. */
|
||||||
|
ucStatus = f_initvolume( ram_initfunc );
|
||||||
|
|
||||||
|
/* It is expected that the volume is not formatted. */
|
||||||
|
if( ucStatus == F_ERR_NOTFORMATTED )
|
||||||
|
{
|
||||||
|
/* Format the created volume. */
|
||||||
|
ucStatus = f_format( F_FAT12_MEDIA );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ucStatus == F_NO_ERROR )
|
||||||
|
{
|
||||||
|
/* Create a set of files using f_write(). */
|
||||||
|
prvCreateDemoFilesUsing_f_write();
|
||||||
|
|
||||||
|
/* Read back and verify the files that were created using f_write(). */
|
||||||
|
prvVerifyDemoFileUsing_f_read();
|
||||||
|
|
||||||
|
/* Create sub directories two deep then create a file using putc. */
|
||||||
|
prvCreateDemoFileUsing_f_putc();
|
||||||
|
|
||||||
|
/* Read back and verify the file created by
|
||||||
|
prvCreateDemoFileUsing_f_putc(). */
|
||||||
|
prvVerifyDemoFileUsing_f_getc();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvCreateDemoFilesUsing_f_write( void )
|
||||||
|
{
|
||||||
|
portBASE_TYPE xFileNumber, xWriteNumber;
|
||||||
|
char cFileName[ fsMAX_FILE_NAME_LEN ];
|
||||||
|
const portBASE_TYPE xMaxFiles = 5;
|
||||||
|
long lItemsWritten;
|
||||||
|
F_FILE *pxFile;
|
||||||
|
|
||||||
|
/* Create xMaxFiles files. Each created file will be
|
||||||
|
( xFileNumber * fsRAM_BUFFER_SIZE ) bytes in length, and filled
|
||||||
|
with a different repeating character. */
|
||||||
|
for( xFileNumber = 1; xFileNumber <= xMaxFiles; xFileNumber++ )
|
||||||
|
{
|
||||||
|
/* Generate a file name. */
|
||||||
|
sprintf( cFileName, "root%03d.txt", ( int ) xFileNumber );
|
||||||
|
|
||||||
|
/* Obtain the current working directory and print out the file name and
|
||||||
|
the directory into which the file is being written. */
|
||||||
|
f_getcwd( cRAMBuffer, fsRAM_BUFFER_SIZE );
|
||||||
|
|
||||||
|
/* Open the file, creating the file if it does not already exist. */
|
||||||
|
pxFile = f_open( cFileName, "w" );
|
||||||
|
configASSERT( pxFile );
|
||||||
|
|
||||||
|
/* Fill the RAM buffer with data that will be written to the file. This
|
||||||
|
is just a repeating ascii character that indicates the file number. */
|
||||||
|
memset( cRAMBuffer, ( int ) ( '0' + xFileNumber ), fsRAM_BUFFER_SIZE );
|
||||||
|
|
||||||
|
/* Write the RAM buffer to the opened file a number of times. The
|
||||||
|
number of times the RAM buffer is written to the file depends on the
|
||||||
|
file number, so the length of each created file will be different. */
|
||||||
|
for( xWriteNumber = 0; xWriteNumber < xFileNumber; xWriteNumber++ )
|
||||||
|
{
|
||||||
|
lItemsWritten = f_write( cRAMBuffer, fsRAM_BUFFER_SIZE, 1, pxFile );
|
||||||
|
configASSERT( lItemsWritten == 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the file so another file can be created. */
|
||||||
|
f_close( pxFile );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvVerifyDemoFileUsing_f_read( void )
|
||||||
|
{
|
||||||
|
portBASE_TYPE xFileNumber, xReadNumber;
|
||||||
|
char cFileName[ fsMAX_FILE_NAME_LEN ];
|
||||||
|
const portBASE_TYPE xMaxFiles = 5;
|
||||||
|
long lItemsRead, lChar;
|
||||||
|
F_FILE *pxFile;
|
||||||
|
|
||||||
|
/* Read back the files that were created by
|
||||||
|
prvCreateDemoFilesUsing_f_write(). */
|
||||||
|
for( xFileNumber = 1; xFileNumber <= xMaxFiles; xFileNumber++ )
|
||||||
|
{
|
||||||
|
/* Generate the file name. */
|
||||||
|
sprintf( cFileName, "root%03d.txt", ( int ) xFileNumber );
|
||||||
|
|
||||||
|
/* Obtain the current working directory and print out the file name and
|
||||||
|
the directory from which the file is being read. */
|
||||||
|
f_getcwd( cRAMBuffer, fsRAM_BUFFER_SIZE );
|
||||||
|
|
||||||
|
/* Open the file for reading. */
|
||||||
|
pxFile = f_open( cFileName, "r" );
|
||||||
|
configASSERT( pxFile );
|
||||||
|
|
||||||
|
/* Read the file into the RAM buffer, checking the file contents are as
|
||||||
|
expected. The size of the file depends on the file number. */
|
||||||
|
for( xReadNumber = 0; xReadNumber < xFileNumber; xReadNumber++ )
|
||||||
|
{
|
||||||
|
/* Start with the RAM buffer clear. */
|
||||||
|
memset( cRAMBuffer, 0x00, fsRAM_BUFFER_SIZE );
|
||||||
|
|
||||||
|
lItemsRead = f_read( cRAMBuffer, fsRAM_BUFFER_SIZE, 1, pxFile );
|
||||||
|
configASSERT( lItemsRead == 1 );
|
||||||
|
|
||||||
|
/* Check the RAM buffer is filled with the expected data. Each
|
||||||
|
file contains a different repeating ascii character that indicates
|
||||||
|
the number of the file. */
|
||||||
|
for( lChar = 0; lChar < fsRAM_BUFFER_SIZE; lChar++ )
|
||||||
|
{
|
||||||
|
configASSERT( cRAMBuffer[ lChar ] == ( '0' + ( char ) xFileNumber ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the file. */
|
||||||
|
f_close( pxFile );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvCreateDemoFileUsing_f_putc( void )
|
||||||
|
{
|
||||||
|
unsigned char ucReturn;
|
||||||
|
int iByte, iReturned;
|
||||||
|
F_FILE *pxFile;
|
||||||
|
char cFileName[ fsMAX_FILE_NAME_LEN ];
|
||||||
|
|
||||||
|
/* Obtain and print out the working directory. */
|
||||||
|
f_getcwd( cRAMBuffer, fsRAM_BUFFER_SIZE );
|
||||||
|
|
||||||
|
/* Create a sub directory. */
|
||||||
|
ucReturn = f_mkdir( pcDirectory1 );
|
||||||
|
configASSERT( ucReturn == F_NO_ERROR );
|
||||||
|
|
||||||
|
/* Move into the created sub-directory. */
|
||||||
|
ucReturn = f_chdir( pcDirectory1 );
|
||||||
|
configASSERT( ucReturn == F_NO_ERROR );
|
||||||
|
|
||||||
|
/* Obtain and print out the working directory. */
|
||||||
|
f_getcwd( cRAMBuffer, fsRAM_BUFFER_SIZE );
|
||||||
|
|
||||||
|
/* Create a subdirectory in the new directory. */
|
||||||
|
ucReturn = f_mkdir( pcDirectory2 );
|
||||||
|
configASSERT( ucReturn == F_NO_ERROR );
|
||||||
|
|
||||||
|
/* Move into the directory just created - now two directories down from
|
||||||
|
the root. */
|
||||||
|
ucReturn = f_chdir( pcDirectory2 );
|
||||||
|
configASSERT( ucReturn == F_NO_ERROR );
|
||||||
|
|
||||||
|
/* Obtain and print out the working directory. */
|
||||||
|
f_getcwd( cRAMBuffer, fsRAM_BUFFER_SIZE );
|
||||||
|
configASSERT( strcmp( ( const char * ) cRAMBuffer, pcFullPath ) == 0 );
|
||||||
|
|
||||||
|
/* Generate the file name. */
|
||||||
|
sprintf( cFileName, "%s.txt", pcDirectory2 );
|
||||||
|
|
||||||
|
/* Print out the file name and the directory into which the file is being
|
||||||
|
written. */
|
||||||
|
pxFile = f_open( cFileName, "w" );
|
||||||
|
|
||||||
|
/* Create a file 1 byte at a time. The file is filled with incrementing
|
||||||
|
ascii characters starting from '0'. */
|
||||||
|
for( iByte = 0; iByte < fsPUTC_FILE_SIZE; iByte++ )
|
||||||
|
{
|
||||||
|
iReturned = f_putc( ( ( int ) '0' + iByte ), pxFile );
|
||||||
|
configASSERT( iReturned == ( ( int ) '0' + iByte ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finished so close the file. */
|
||||||
|
f_close( pxFile );
|
||||||
|
|
||||||
|
/* Move back to the root directory. */
|
||||||
|
ucReturn = f_chdir( "../.." );
|
||||||
|
configASSERT( ucReturn == F_NO_ERROR );
|
||||||
|
|
||||||
|
/* Obtain and print out the working directory. */
|
||||||
|
f_getcwd( cRAMBuffer, fsRAM_BUFFER_SIZE );
|
||||||
|
configASSERT( strcmp( ( const char * ) cRAMBuffer, pcRoot ) == 0 );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvVerifyDemoFileUsing_f_getc( void )
|
||||||
|
{
|
||||||
|
unsigned char ucReturn;
|
||||||
|
int iByte, iReturned;
|
||||||
|
F_FILE *pxFile;
|
||||||
|
char cFileName[ fsMAX_FILE_NAME_LEN ];
|
||||||
|
|
||||||
|
/* Move into the directory in which the file was created. */
|
||||||
|
ucReturn = f_chdir( pcFullPath );
|
||||||
|
configASSERT( ucReturn == F_NO_ERROR );
|
||||||
|
|
||||||
|
/* Obtain and print out the working directory. */
|
||||||
|
f_getcwd( cRAMBuffer, fsRAM_BUFFER_SIZE );
|
||||||
|
configASSERT( strcmp( ( const char * ) cRAMBuffer, pcFullPath ) == 0 );
|
||||||
|
|
||||||
|
/* Generate the file name. */
|
||||||
|
sprintf( cFileName, "%s.txt", pcDirectory2 );
|
||||||
|
|
||||||
|
/* This time the file is opened for reading. */
|
||||||
|
pxFile = f_open( cFileName, "r" );
|
||||||
|
|
||||||
|
/* Read the file 1 byte at a time. */
|
||||||
|
for( iByte = 0; iByte < fsPUTC_FILE_SIZE; iByte++ )
|
||||||
|
{
|
||||||
|
iReturned = f_getc( pxFile );
|
||||||
|
configASSERT( iReturned == ( ( int ) '0' + iByte ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finished so close the file. */
|
||||||
|
f_close( pxFile );
|
||||||
|
|
||||||
|
/* Move back to the root directory. */
|
||||||
|
ucReturn = f_chdir( "../.." );
|
||||||
|
configASSERT( ucReturn == F_NO_ERROR );
|
||||||
|
|
||||||
|
/* Obtain and print out the working directory. */
|
||||||
|
f_getcwd( cRAMBuffer, fsRAM_BUFFER_SIZE );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
|
All rights reserved
|
||||||
|
|
||||||
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
|
* platform software that has become a de facto standard. *
|
||||||
|
* *
|
||||||
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
|
* *
|
||||||
|
* Thank you! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
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 from the following
|
||||||
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
* not run, what could be wrong?" *
|
||||||
|
* *
|
||||||
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
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.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
|
licenses offer ticketed support, indemnification and 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!
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef UDP_COMMAND_INTERPRETER_H
|
||||||
|
#define UDP_COMMAND_INTERPRETER_H
|
||||||
|
|
||||||
|
void vStartUDPCommandInterpreterTask( uint16_t usStackSize, uint32_t ulPort, unsigned portBASE_TYPE uxPriority );
|
||||||
|
|
||||||
|
#endif /* UDP_COMMAND_INTERPRETER_H */
|
|
@ -0,0 +1,244 @@
|
||||||
|
/*
|
||||||
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
|
All rights reserved
|
||||||
|
|
||||||
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
|
* platform software that has become a de facto standard. *
|
||||||
|
* *
|
||||||
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
|
* *
|
||||||
|
* Thank you! *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
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 from the following
|
||||||
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
* not run, what could be wrong?" *
|
||||||
|
* *
|
||||||
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
|
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.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
|
licenses offer ticketed support, indemnification and 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!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/* FreeRTOS includes. */
|
||||||
|
#include "FreeRTOS.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
|
/* FreeRTOS+CLI includes. */
|
||||||
|
#include "FreeRTOS_CLI.h"
|
||||||
|
|
||||||
|
/* FreeRTOS+UDP includes. */
|
||||||
|
#include "FreeRTOS_UDP_IP.h"
|
||||||
|
#include "FreeRTOS_Sockets.h"
|
||||||
|
|
||||||
|
/* Demo app includes. */
|
||||||
|
#include "UDPCommandInterpreter.h"
|
||||||
|
|
||||||
|
/* Dimensions the buffer into which input characters are placed. */
|
||||||
|
#define cmdMAX_INPUT_SIZE 60
|
||||||
|
|
||||||
|
/* Dimensions the buffer into which string outputs can be placed. */
|
||||||
|
#define cmdMAX_OUTPUT_SIZE 1024
|
||||||
|
|
||||||
|
/* Dimensions the buffer passed to the recvfrom() call. */
|
||||||
|
#define cmdSOCKET_INPUT_BUFFER_SIZE 60
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The task that runs FreeRTOS+CLI.
|
||||||
|
*/
|
||||||
|
void vUDPCommandInterpreterTask( void *pvParameters );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Open and configure the UDP socket.
|
||||||
|
*/
|
||||||
|
static xSocket_t prvOpenUDPServerSocket( uint16_t usPort );
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void vStartUDPCommandInterpreterTask( uint16_t usStackSize, uint32_t ulPort, unsigned portBASE_TYPE uxPriority )
|
||||||
|
{
|
||||||
|
xTaskCreate( vUDPCommandInterpreterTask, ( signed char * ) "CLI", usStackSize, ( void * ) ulPort, uxPriority, NULL );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Task that provides the input and output for the FreeRTOS+CLI command
|
||||||
|
* interpreter. In this case a UDP port is used. See the URL in the comments
|
||||||
|
* within main.c for the location of the online documentation.
|
||||||
|
*/
|
||||||
|
void vUDPCommandInterpreterTask( void *pvParameters )
|
||||||
|
{
|
||||||
|
long lBytes, lByte;
|
||||||
|
signed char cInChar, cInputIndex = 0;
|
||||||
|
static signed char cInputString[ cmdMAX_INPUT_SIZE ], cOutputString[ cmdMAX_OUTPUT_SIZE ], cLocalBuffer[ cmdSOCKET_INPUT_BUFFER_SIZE ];
|
||||||
|
portBASE_TYPE xMoreDataToFollow;
|
||||||
|
struct freertos_sockaddr xClient;
|
||||||
|
socklen_t xClientAddressLength = 0; /* This is required as a parameter to maintain the sendto() Berkeley sockets API - but it is not actually used so can take any value. */
|
||||||
|
xSocket_t xSocket;
|
||||||
|
|
||||||
|
/* Just to prevent compiler warnings. */
|
||||||
|
( void ) pvParameters;
|
||||||
|
|
||||||
|
/* Attempt to open the socket. The port number is passed in the task
|
||||||
|
parameter. The strange casting is to remove compiler warnings on 32-bit
|
||||||
|
machines. */
|
||||||
|
xSocket = prvOpenUDPServerSocket( ( uint16_t ) ( ( uint32_t ) pvParameters ) & 0xffffUL );
|
||||||
|
|
||||||
|
if( xSocket != FREERTOS_INVALID_SOCKET )
|
||||||
|
{
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
/* Wait for incoming data on the opened socket. */
|
||||||
|
lBytes = FreeRTOS_recvfrom( xSocket, ( void * ) cLocalBuffer, sizeof( cLocalBuffer ), 0, &xClient, &xClientAddressLength );
|
||||||
|
|
||||||
|
if( lBytes != FREERTOS_SOCKET_ERROR )
|
||||||
|
{
|
||||||
|
/* Process each received byte in turn. */
|
||||||
|
lByte = 0;
|
||||||
|
while( lByte < lBytes )
|
||||||
|
{
|
||||||
|
/* The next character in the input buffer. */
|
||||||
|
cInChar = cLocalBuffer[ lByte ];
|
||||||
|
lByte++;
|
||||||
|
|
||||||
|
/* Newline characters are taken as the end of the command
|
||||||
|
string. */
|
||||||
|
if( cInChar == '\n' )
|
||||||
|
{
|
||||||
|
/* Process the input string received prior to the
|
||||||
|
newline. */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
/* Pass the string to FreeRTOS+CLI. */
|
||||||
|
xMoreDataToFollow = FreeRTOS_CLIProcessCommand( cInputString, cOutputString, cmdMAX_OUTPUT_SIZE );
|
||||||
|
|
||||||
|
/* Send the output generated by the command's
|
||||||
|
implementation. */
|
||||||
|
FreeRTOS_sendto( xSocket, cOutputString, strlen( ( const char * ) cOutputString ), 0, &xClient, xClientAddressLength );
|
||||||
|
|
||||||
|
} while( xMoreDataToFollow != pdFALSE ); /* Until the command does not generate any more output. */
|
||||||
|
|
||||||
|
/* All the strings generated by the command processing
|
||||||
|
have been sent. Clear the input string ready to receive
|
||||||
|
the next command. */
|
||||||
|
cInputIndex = 0;
|
||||||
|
memset( cInputString, 0x00, cmdMAX_INPUT_SIZE );
|
||||||
|
|
||||||
|
/* Transmit a spacer, just to make the command console
|
||||||
|
easier to read. */
|
||||||
|
FreeRTOS_sendto( xSocket, "\r\n", strlen( "\r\n" ), 0, &xClient, xClientAddressLength );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( cInChar == '\r' )
|
||||||
|
{
|
||||||
|
/* Ignore the character. Newlines are used to
|
||||||
|
detect the end of the input string. */
|
||||||
|
}
|
||||||
|
else if( cInChar == '\b' )
|
||||||
|
{
|
||||||
|
/* Backspace was pressed. Erase the last character
|
||||||
|
in the string - if any. */
|
||||||
|
if( cInputIndex > 0 )
|
||||||
|
{
|
||||||
|
cInputIndex--;
|
||||||
|
cInputString[ cInputIndex ] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* A character was entered. Add it to the string
|
||||||
|
entered so far. When a \n is entered the complete
|
||||||
|
string will be passed to the command interpreter. */
|
||||||
|
if( cInputIndex < cmdMAX_INPUT_SIZE )
|
||||||
|
{
|
||||||
|
cInputString[ cInputIndex ] = cInChar;
|
||||||
|
cInputIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The socket could not be opened. */
|
||||||
|
vTaskDelete( NULL );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static xSocket_t prvOpenUDPServerSocket( uint16_t usPort )
|
||||||
|
{
|
||||||
|
struct freertos_sockaddr xServer;
|
||||||
|
xSocket_t xSocket = FREERTOS_INVALID_SOCKET;
|
||||||
|
|
||||||
|
xSocket = FreeRTOS_socket( FREERTOS_AF_INET, FREERTOS_SOCK_DGRAM, FREERTOS_IPPROTO_UDP );
|
||||||
|
if( xSocket != FREERTOS_INVALID_SOCKET)
|
||||||
|
{
|
||||||
|
/* Zero out the server structure. */
|
||||||
|
memset( ( void * ) &xServer, 0x00, sizeof( xServer ) );
|
||||||
|
|
||||||
|
/* Set family and port. */
|
||||||
|
xServer.sin_port = FreeRTOS_htons( usPort );
|
||||||
|
|
||||||
|
/* Bind the address to the socket. */
|
||||||
|
if( FreeRTOS_bind( xSocket, &xServer, sizeof( xServer ) ) == -1 )
|
||||||
|
{
|
||||||
|
FreeRTOS_closesocket( xSocket );
|
||||||
|
xSocket = FREERTOS_INVALID_SOCKET;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return xSocket;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
@ -92,13 +92,8 @@
|
||||||
/* The echo tasks create a socket, send out a number of echo requests
|
/* The echo tasks create a socket, send out a number of echo requests
|
||||||
(listening for each echo reply), then close the socket again before
|
(listening for each echo reply), then close the socket again before
|
||||||
starting over. This delay is used between each iteration to ensure the
|
starting over. This delay is used between each iteration to ensure the
|
||||||
network does not get too congested. The delay is shorter when the Windows
|
network does not get too congested. */
|
||||||
simulator is used because simulated time is slower than real time. */
|
#define echoLOOP_DELAY ( ( portTickType ) 250 / portTICK_RATE_MS )
|
||||||
#ifdef _WINDOWS_
|
|
||||||
#define echoLOOP_DELAY ( ( portTickType ) 10 / portTICK_RATE_MS )
|
|
||||||
#else
|
|
||||||
#define echoLOOP_DELAY ( ( portTickType ) 150 / portTICK_RATE_MS )
|
|
||||||
#endif /* _WINDOWS_ */
|
|
||||||
|
|
||||||
#if ipconfigINCLUDE_EXAMPLE_FREERTOS_PLUS_TRACE_CALLS == 1
|
#if ipconfigINCLUDE_EXAMPLE_FREERTOS_PLUS_TRACE_CALLS == 1
|
||||||
/* When the trace recorder code is included user events are generated to
|
/* When the trace recorder code is included user events are generated to
|
||||||
|
@ -193,7 +188,7 @@ uint32_t xAddressLength = sizeof( xEchoServerAddress );
|
||||||
for( lLoopCount = 0; lLoopCount < lMaxLoopCount; lLoopCount++ )
|
for( lLoopCount = 0; lLoopCount < lMaxLoopCount; lLoopCount++ )
|
||||||
{
|
{
|
||||||
/* Create the string that is sent to the echo server. */
|
/* Create the string that is sent to the echo server. */
|
||||||
sprintf( ( char * ) cTxString, "Message number %u\r\n", ulTxCount );
|
sprintf( ( char * ) cTxString, "Message number %u\r\n", ( unsigned int ) ulTxCount );
|
||||||
|
|
||||||
/* Send the string to the socket. ulFlags is set to 0, so the zero
|
/* Send the string to the socket. ulFlags is set to 0, so the zero
|
||||||
copy interface is not used. That means the data from cTxString is
|
copy interface is not used. That means the data from cTxString is
|
||||||
|
@ -314,7 +309,7 @@ const size_t xBufferLength = strlen( ( char * ) pucStringToSend ) + 15;
|
||||||
/* A buffer was successfully obtained. Create the string that is
|
/* A buffer was successfully obtained. Create the string that is
|
||||||
sent to the echo server. Note the string is written directly
|
sent to the echo server. Note the string is written directly
|
||||||
into the buffer obtained from the IP stack. */
|
into the buffer obtained from the IP stack. */
|
||||||
sprintf( ( char * ) pucUDPPayloadBuffer, "%s %u\r\n", ( const char * ) "Zero copy message number", ulTxCount );
|
sprintf( ( char * ) pucUDPPayloadBuffer, "%s %u\r\n", ( const char * ) "Zero copy message number", ( unsigned int ) ulTxCount );
|
||||||
|
|
||||||
/* Also copy the string into a local buffer so it can be compared
|
/* Also copy the string into a local buffer so it can be compared
|
||||||
with the string that is later received back from the echo server. */
|
with the string that is later received back from the echo server. */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,49 +1,38 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* FreeRTOS tutorial books are available in pdf and paperback. *
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
* Complete, revised, and edited pdf reference manuals are also *
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
* available. *
|
* platform software that has become a de facto standard. *
|
||||||
* *
|
* *
|
||||||
* Purchasing FreeRTOS documentation will not only help you, by *
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
* ensuring you get running as quickly as possible and with an *
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
* in-depth knowledge of how to use FreeRTOS, it will also help *
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
* the FreeRTOS project to continue with its mission of providing *
|
|
||||||
* professional grade, cross platform, de facto standard solutions *
|
|
||||||
* for microcontrollers - completely free of charge! *
|
|
||||||
* *
|
* *
|
||||||
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
|
* Thank you! *
|
||||||
* *
|
|
||||||
* Thank you for using FreeRTOS, and thank you for your support! *
|
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
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
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||||
|
|
||||||
>>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to
|
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
||||||
distribute a combined work that includes FreeRTOS without being obliged to
|
>>! a combined work that includes FreeRTOS without being obliged to provide
|
||||||
provide the source code for proprietary components outside of the FreeRTOS
|
>>! the source code for proprietary components outside of the FreeRTOS
|
||||||
kernel.
|
>>! kernel.
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
||||||
details. You should have received a copy of the GNU General Public License
|
link: http://www.freertos.org/a00114.html
|
||||||
and the FreeRTOS license exception along with FreeRTOS; if not itcan be
|
|
||||||
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
|
||||||
writing to Real Time Engineers Ltd., contact details for whom are available
|
|
||||||
on the FreeRTOS WEB site.
|
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
@ -56,21 +45,22 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
|
||||||
license and Real Time Engineers Ltd. contact details.
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
fully thread aware and reentrant UDP/IP stack.
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
Integrity Systems, who sell the code with commercial support,
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
indemnification and middleware, under the OpenRTOS brand.
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
mission critical applications that require provable dependability.
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef FREERTOS_CONFIG_H
|
#ifndef FREERTOS_CONFIG_H
|
||||||
|
|
|
@ -1,49 +1,38 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* FreeRTOS tutorial books are available in pdf and paperback. *
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
* Complete, revised, and edited pdf reference manuals are also *
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
* available. *
|
* platform software that has become a de facto standard. *
|
||||||
* *
|
* *
|
||||||
* Purchasing FreeRTOS documentation will not only help you, by *
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
* ensuring you get running as quickly as possible and with an *
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
* in-depth knowledge of how to use FreeRTOS, it will also help *
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
* the FreeRTOS project to continue with its mission of providing *
|
|
||||||
* professional grade, cross platform, de facto standard solutions *
|
|
||||||
* for microcontrollers - completely free of charge! *
|
|
||||||
* *
|
* *
|
||||||
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
|
* Thank you! *
|
||||||
* *
|
|
||||||
* Thank you for using FreeRTOS, and thank you for your support! *
|
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
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
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||||
|
|
||||||
>>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to
|
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
||||||
distribute a combined work that includes FreeRTOS without being obliged to
|
>>! a combined work that includes FreeRTOS without being obliged to provide
|
||||||
provide the source code for proprietary components outside of the FreeRTOS
|
>>! the source code for proprietary components outside of the FreeRTOS
|
||||||
kernel.
|
>>! kernel.
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
||||||
details. You should have received a copy of the GNU General Public License
|
link: http://www.freertos.org/a00114.html
|
||||||
and the FreeRTOS license exception along with FreeRTOS; if not itcan be
|
|
||||||
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
|
||||||
writing to Real Time Engineers Ltd., contact details for whom are available
|
|
||||||
on the FreeRTOS WEB site.
|
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
@ -56,21 +45,22 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
license and Real Time Engineers Ltd. contact details.
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
fully thread aware and reentrant UDP/IP stack.
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
Integrity Systems, who sell the code with commercial support,
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
indemnification and middleware, under the OpenRTOS brand.
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
mission critical applications that require provable dependability.
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* FreeRTOS includes. */
|
/* FreeRTOS includes. */
|
||||||
|
|
|
@ -1,49 +1,38 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* FreeRTOS tutorial books are available in pdf and paperback. *
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
* Complete, revised, and edited pdf reference manuals are also *
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
* available. *
|
* platform software that has become a de facto standard. *
|
||||||
* *
|
* *
|
||||||
* Purchasing FreeRTOS documentation will not only help you, by *
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
* ensuring you get running as quickly as possible and with an *
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
* in-depth knowledge of how to use FreeRTOS, it will also help *
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
* the FreeRTOS project to continue with its mission of providing *
|
|
||||||
* professional grade, cross platform, de facto standard solutions *
|
|
||||||
* for microcontrollers - completely free of charge! *
|
|
||||||
* *
|
* *
|
||||||
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
|
* Thank you! *
|
||||||
* *
|
|
||||||
* Thank you for using FreeRTOS, and thank you for your support! *
|
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
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
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||||
|
|
||||||
>>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to
|
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
||||||
distribute a combined work that includes FreeRTOS without being obliged to
|
>>! a combined work that includes FreeRTOS without being obliged to provide
|
||||||
provide the source code for proprietary components outside of the FreeRTOS
|
>>! the source code for proprietary components outside of the FreeRTOS
|
||||||
kernel.
|
>>! kernel.
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
||||||
details. You should have received a copy of the GNU General Public License
|
link: http://www.freertos.org/a00114.html
|
||||||
and the FreeRTOS license exception along with FreeRTOS; if not itcan be
|
|
||||||
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
|
||||||
writing to Real Time Engineers Ltd., contact details for whom are available
|
|
||||||
on the FreeRTOS WEB site.
|
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
@ -56,21 +45,22 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
license and Real Time Engineers Ltd. contact details.
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
fully thread aware and reentrant UDP/IP stack.
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
Integrity Systems, who sell the code with commercial support,
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
indemnification and middleware, under the OpenRTOS brand.
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
mission critical applications that require provable dependability.
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
|
@ -1,49 +1,38 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* FreeRTOS tutorial books are available in pdf and paperback. *
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
* Complete, revised, and edited pdf reference manuals are also *
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
* available. *
|
* platform software that has become a de facto standard. *
|
||||||
* *
|
* *
|
||||||
* Purchasing FreeRTOS documentation will not only help you, by *
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
* ensuring you get running as quickly as possible and with an *
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
* in-depth knowledge of how to use FreeRTOS, it will also help *
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
* the FreeRTOS project to continue with its mission of providing *
|
|
||||||
* professional grade, cross platform, de facto standard solutions *
|
|
||||||
* for microcontrollers - completely free of charge! *
|
|
||||||
* *
|
* *
|
||||||
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
|
* Thank you! *
|
||||||
* *
|
|
||||||
* Thank you for using FreeRTOS, and thank you for your support! *
|
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
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
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||||
|
|
||||||
>>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to
|
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
||||||
distribute a combined work that includes FreeRTOS without being obliged to
|
>>! a combined work that includes FreeRTOS without being obliged to provide
|
||||||
provide the source code for proprietary components outside of the FreeRTOS
|
>>! the source code for proprietary components outside of the FreeRTOS
|
||||||
kernel.
|
>>! kernel.
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
||||||
details. You should have received a copy of the GNU General Public License
|
link: http://www.freertos.org/a00114.html
|
||||||
and the FreeRTOS license exception along with FreeRTOS; if not itcan be
|
|
||||||
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
|
||||||
writing to Real Time Engineers Ltd., contact details for whom are available
|
|
||||||
on the FreeRTOS WEB site.
|
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
@ -56,21 +45,22 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
|
||||||
license and Real Time Engineers Ltd. contact details.
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
fully thread aware and reentrant UDP/IP stack.
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
Integrity Systems, who sell the code with commercial support,
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
indemnification and middleware, under the OpenRTOS brand.
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
mission critical applications that require provable dependability.
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,49 +1,38 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* FreeRTOS tutorial books are available in pdf and paperback. *
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
* Complete, revised, and edited pdf reference manuals are also *
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
* available. *
|
* platform software that has become a de facto standard. *
|
||||||
* *
|
* *
|
||||||
* Purchasing FreeRTOS documentation will not only help you, by *
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
* ensuring you get running as quickly as possible and with an *
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
* in-depth knowledge of how to use FreeRTOS, it will also help *
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
* the FreeRTOS project to continue with its mission of providing *
|
|
||||||
* professional grade, cross platform, de facto standard solutions *
|
|
||||||
* for microcontrollers - completely free of charge! *
|
|
||||||
* *
|
* *
|
||||||
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
|
* Thank you! *
|
||||||
* *
|
|
||||||
* Thank you for using FreeRTOS, and thank you for your support! *
|
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
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
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||||
|
|
||||||
>>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to
|
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
||||||
distribute a combined work that includes FreeRTOS without being obliged to
|
>>! a combined work that includes FreeRTOS without being obliged to provide
|
||||||
provide the source code for proprietary components outside of the FreeRTOS
|
>>! the source code for proprietary components outside of the FreeRTOS
|
||||||
kernel.
|
>>! kernel.
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
||||||
details. You should have received a copy of the GNU General Public License
|
link: http://www.freertos.org/a00114.html
|
||||||
and the FreeRTOS license exception along with FreeRTOS; if not itcan be
|
|
||||||
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
|
||||||
writing to Real Time Engineers Ltd., contact details for whom are available
|
|
||||||
on the FreeRTOS WEB site.
|
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
@ -56,21 +45,22 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
|
||||||
license and Real Time Engineers Ltd. contact details.
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
fully thread aware and reentrant UDP/IP stack.
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
Integrity Systems, who sell the code with commercial support,
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
indemnification and middleware, under the OpenRTOS brand.
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
mission critical applications that require provable dependability.
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
|
@ -1,49 +1,38 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* FreeRTOS tutorial books are available in pdf and paperback. *
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
* Complete, revised, and edited pdf reference manuals are also *
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
* available. *
|
* platform software that has become a de facto standard. *
|
||||||
* *
|
* *
|
||||||
* Purchasing FreeRTOS documentation will not only help you, by *
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
* ensuring you get running as quickly as possible and with an *
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
* in-depth knowledge of how to use FreeRTOS, it will also help *
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
* the FreeRTOS project to continue with its mission of providing *
|
|
||||||
* professional grade, cross platform, de facto standard solutions *
|
|
||||||
* for microcontrollers - completely free of charge! *
|
|
||||||
* *
|
* *
|
||||||
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
|
* Thank you! *
|
||||||
* *
|
|
||||||
* Thank you for using FreeRTOS, and thank you for your support! *
|
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
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
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||||
|
|
||||||
>>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to
|
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
||||||
distribute a combined work that includes FreeRTOS without being obliged to
|
>>! a combined work that includes FreeRTOS without being obliged to provide
|
||||||
provide the source code for proprietary components outside of the FreeRTOS
|
>>! the source code for proprietary components outside of the FreeRTOS
|
||||||
kernel.
|
>>! kernel.
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
||||||
details. You should have received a copy of the GNU General Public License
|
link: http://www.freertos.org/a00114.html
|
||||||
and the FreeRTOS license exception along with FreeRTOS; if not itcan be
|
|
||||||
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
|
||||||
writing to Real Time Engineers Ltd., contact details for whom are available
|
|
||||||
on the FreeRTOS WEB site.
|
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
@ -56,21 +45,22 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
license and Real Time Engineers Ltd. contact details.
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
fully thread aware and reentrant UDP/IP stack.
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
Integrity Systems, who sell the code with commercial support,
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
indemnification and middleware, under the OpenRTOS brand.
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
mission critical applications that require provable dependability.
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,49 +1,38 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* FreeRTOS tutorial books are available in pdf and paperback. *
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
* Complete, revised, and edited pdf reference manuals are also *
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
* available. *
|
* platform software that has become a de facto standard. *
|
||||||
* *
|
* *
|
||||||
* Purchasing FreeRTOS documentation will not only help you, by *
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
* ensuring you get running as quickly as possible and with an *
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
* in-depth knowledge of how to use FreeRTOS, it will also help *
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
* the FreeRTOS project to continue with its mission of providing *
|
|
||||||
* professional grade, cross platform, de facto standard solutions *
|
|
||||||
* for microcontrollers - completely free of charge! *
|
|
||||||
* *
|
* *
|
||||||
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
|
* Thank you! *
|
||||||
* *
|
|
||||||
* Thank you for using FreeRTOS, and thank you for your support! *
|
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
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
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
|
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||||
|
|
||||||
>>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to
|
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
||||||
distribute a combined work that includes FreeRTOS without being obliged to
|
>>! a combined work that includes FreeRTOS without being obliged to provide
|
||||||
provide the source code for proprietary components outside of the FreeRTOS
|
>>! the source code for proprietary components outside of the FreeRTOS
|
||||||
kernel.
|
>>! kernel.
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
||||||
details. You should have received a copy of the GNU General Public License
|
link: http://www.freertos.org/a00114.html
|
||||||
and the FreeRTOS license exception along with FreeRTOS; if not itcan be
|
|
||||||
viewed here: http://www.freertos.org/a00114.html and also obtained by
|
|
||||||
writing to Real Time Engineers Ltd., contact details for whom are available
|
|
||||||
on the FreeRTOS WEB site.
|
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
|
@ -56,21 +45,22 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
license and Real Time Engineers Ltd. contact details.
|
license and Real Time Engineers Ltd. contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool, and our new
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
fully thread aware and reentrant UDP/IP stack.
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
Integrity Systems, who sell the code with commercial support,
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
indemnification and middleware, under the OpenRTOS brand.
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
mission critical applications that require provable dependability.
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
|
1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[InternetShortcut]
|
||||||
|
URL=http://www.freertos.org/Atmel_SAM4E_RTOS_Demo.html
|
||||||
|
IDList=
|
||||||
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
|
Prop3=19,2
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
|
FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
Loading…
Reference in a new issue