]> git.sur5r.net Git - freertos/commitdiff
Add an optional global buffer to the command interpreter that can be used for command...
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 26 Sep 2011 14:27:03 +0000 (14:27 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 26 Sep 2011 14:27:03 +0000 (14:27 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1612 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/Common/Utils/CommandInterpreter.c
Demo/Common/Utils/CommandInterpreter.h

index 59eb5eb4426c8bd0a59f67f4e35e00831ca9c2b7..94a8020ea40154898673191e2a669486e9613726 100644 (file)
@@ -90,6 +90,16 @@ static xCommandLineInputListItem xRegisteredCommands =
        NULL                    /* The next pointer is initialised to NULL, as there are no other registered commands yet. */\r
 };\r
 \r
+/* A buffer into which command outputs can be written is declared here, rather\r
+than in the command console implementation, to allow multiple command consoles\r
+to share the same buffer.  For example, an application may allow access to the\r
+command interpreter by UART and by Ethernet.  Sharing a buffer is done purely\r
+to save RAM.  Note, however, that the command console itself is not re-entrant,\r
+so only one command interpreter interface can be used at any one time.  For that\r
+reason, no attempt at providing mutual exclusion to the cOutputBuffer array is\r
+attempted. */\r
+static signed char cOutputBuffer[ configCOMMAND_INT_MAX_OUTPUT_SIZE ];\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 portBASE_TYPE xCmdIntRegisterCommand( const xCommandLineInput * const pxCommandToRegister )\r
@@ -124,6 +134,7 @@ portBASE_TYPE xReturn = pdFAIL;
                        /* Set the end of list marker to the new list item. */\r
                        pxLastCommandInList = pxNewListItem;\r
                }\r
+               taskEXIT_CRITICAL();\r
                \r
                xReturn = pdPASS;\r
        }\r
@@ -177,6 +188,18 @@ portBASE_TYPE xReturn;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+signed char *pcCmdIntGetOutputBuffer( void )\r
+{\r
+       return cOutputBuffer;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+unsigned portBASE_TYPE uxCmdIntGetOutputBufferSizeBytes( void )\r
+{\r
+       return configCOMMAND_INT_MAX_OUTPUT_SIZE;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
 static portBASE_TYPE prvHelpCommand( signed char *pcWriteBuffer, size_t xWriteBufferLen )\r
 {\r
 static const xCommandLineInputListItem * pxCommand = NULL;\r
@@ -206,3 +229,4 @@ signed portBASE_TYPE xReturn;
 \r
        return xReturn;\r
 }\r
+\r
index c19c1c83a80c0dea63d835cb23cf4d62667600ba..6501451d8777207af24af6c6de92c670ae83f01b 100644 (file)
@@ -91,6 +91,25 @@ portBASE_TYPE xCmdIntRegisterCommand( const xCommandLineInput * const pxCommandT
  */\r
 portBASE_TYPE xCmdIntProcessCommand( const signed char * const pcCommandInput, signed char * pcWriteBuffer, size_t xWriteBufferLen  );\r
 \r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * A buffer into which command outputs can be written is declared in the\r
+ * main command interpreter, rather than in the command console implementation,\r
+ * to allow application that provide access to the command console via multiple\r
+ * interfaces to share a buffer, and therefore save RAM.  Note, however, that\r
+ * the command interpreter itself is not re-entrant, so only one command\r
+ * console interface can be used at any one time.  For that reason, no attempt\r
+ * is made to provide any mutual exclusion mechanism on the output buffer.\r
+ *\r
+ * pcCmdIntGetOutputBuffer() returns the address of the output buffer.\r
+ *\r
+ * uxCmdIntGetOutputBufferSizeBytes() returns the size, in bytes, of the output\r
+ * buffer returned by pcCmdIntGetOutputBuffer();\r
+ */\r
+signed char *pcCmdIntGetOutputBuffer( void );\r
+unsigned portBASE_TYPE uxCmdIntGetOutputBufferSizeBytes( void );\r
+\r
 #endif /* COMMAND_INTERPRETER_H */\r
 \r
 \r