Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: mbed_controller_demo
Fork of CMDB by
Diff: cmdb.h
- Revision:
- 7:269c2445b8f5
- Parent:
- 6:76b033971c3c
- Child:
- 8:83edd6addbd5
--- a/cmdb.h Fri Feb 11 00:51:37 2011 +0000
+++ b/cmdb.h Fri Feb 11 10:26:33 2011 +0000
@@ -26,48 +26,116 @@
#include "mbed.h"
#include <vector>
+#include <limits>
-//Max size of an Ansi escape code.
+//------------------------------------------------------------------------------
+
+/** Max size of an Ansi escape code.
+ */
#define MAX_ESC_LEN 5
-//Max (strlen) of a Param.
+/** Max (strlen) of a Param.
+ */
#define MAX_PARM_LEN 32
-//Max eight parms.
-#define MAX_ARGS 8
+/** Max eight parms.
+ */
+#define MAX_ARGS 8
-//Max 132 characters commandline.
+/** Max 132 characters commandline.
+ */
#define MAX_CMD_LEN 132
-//'Show' hidden subsystems and commands.
+/** 'Show' hidden subsystems and commands.
+ */
#define SHOWHIDDEN
-#define MIN_BYTE -128
-#define MAX_BYTE +127
+/** Enable macro commands.
+ */
+#define ENABLEMACROS
+
+/** Enable statemachine.
+ *
+ * Used to implement a series of commands running at power-up.
+ *
+ * @note Not Implemented!
+ */
+#undef STATEMACHINE
-#define MIN_SHORT -32768
-#define MAX_SHORT +32767
+/** Enable subsystem prompts.
+ *
+ * When defined, prompts will reflect the SubSystem.
+ */
+#undef SUBSYSTEMPROMPTS
+
+//------------------------------------------------------------------------------
+
+/** 8 bit limits.
+ *
+ * @see http://www.daniweb.com/forums/thread18963.html
+ */
+#define MIN_BYTE std::numeric_limits<signed char>::min()
+
+/** 8 bit limits.
+ *
+ * @see http://www.daniweb.com/forums/thread18963.html
+ */
+#define MAX_BYTE std::numeric_limits<signed char>::max()
-#define MIN_INT -32768
-#define MAX_INT +32767
+/** 16 bit limits.
+ *
+ * @see http://www.daniweb.com/forums/thread18963.html
+ */
+#define MIN_SHORT std::numeric_limits<short int>::min()
+
+/** 16 bit limits.
+ *
+ * @see http://www.daniweb.com/forums/thread18963.html
+ */
+#define MAX_SHORT std::numeric_limits<short int>::max()
-//TODO Make sure we use id and array index properly!!
+/** 32 bit limits.
+ *
+ * @see http://www.daniweb.com/forums/thread18963.html
+ */
+#define MIN_INT std::numeric_limits<int>::min()
+#define MAX_INT std::numeric_limits<int>::max()
-struct cmdb_cmd {
+/** 32 bit limits.
+ *
+ * @see http://www.daniweb.com/forums/thread18963.html
+ */
+#define MIN_LONG std::numeric_limits<long>::min()
+#define MAX_LONG std::numeric_limits<long>::max()
+
+//------------------------------------------------------------------------------
+
+/** Description of a command.
+ */
+struct cmd {
public:
char *cmdstr;
int subs;
- int id; //Changed to int as signed char won't compile
+ int cid;
char *parms;
char *cmddescr;
char *parmdescr;
- cmdb_cmd(char *_cmdstr, int _subs, int _id, char *_parms, char *_cmddescr, char *_parmdescr = "") {
+ /** Command Constructor.
+ *
+ * @parm _cmdstr the command, not case sensitive.
+ * @parm _subs subsystem id
+ * @parm _cid the command id that will be passed to the dispatcher.
+ * @parm _parms a scanf alike pattern.
+ * @parm _cmddescr command description.
+ * @parm _parmdescr parameter description.
+ */
+ cmd(char *_cmdstr, int _subs, int _cid, char *_parms, char *_cmddescr, char *_parmdescr = "") {
cmdstr = (char*)malloc(strlen(_cmdstr)+1);
strcpy(cmdstr,_cmdstr);
subs = _subs;
- id = _id;
+ cid = _cid;
parms = (char*)malloc(strlen(_parms)+1);
strcpy(parms,_parms);
@@ -80,72 +148,200 @@
}
};
-//----Escape Codes and Strings
+//------------------------------------------------------------------------------
+
+/** Cr.
+ */
+const char cr = '\r';
-const char cr = '\r';
+/** Lf.
+ */
const char lf = '\n';
+
+/** Bell.
+ */
const char bell = '\7';
+
+/** Escape.
+ */
const char esc = '\033';
+
+/** Space.
+ */
const char sp = ' ';
-const char crlf[] = "\r\n\0";
-const char bs[] = "\b \b\0";
+/** CrLf.
+ */
+const char crlf[] = "\r\n";
+
+/** Backspace that 'tries' to wipe the last character.
+ */
+const char bs[] = "\b \b";
-const char boldon[] = "\033[1m\0";
-const char boldoff[] = "\033[0m\0";
-const char cls[] = "\033[2J\0";
-const char home[] = "\033[H\0";
+/** VT100 Bold Command.
+ */
+const char boldon[] = "\033[1m";
+
+/** VT100 Normal Command.
+ */
+const char boldoff[] = "\033[0m";
-const char prompt[] = "CMD>";
+/** VT100 Cls Command.
+ */
+const char cls[] = "\033[2J";
+
+/** VT100 Home Command.
+ */
+const char home[] = "\033[H";
-//Before including this file, define CID_LAST as the last value from the enum with commands.
+/** The default command prompt.
+ */
+const char PROMPT[] = "CMD>";
+
+//------------------------------------------------------------------------------
-//#define CMD_TBL_LEN CID_LAST
+/** Subsystem Id for a Subsystem.
+ */
+#define SUBSYSTEM -1
-#define SUBSYSTEM -1
+/** Subsystem Id for a Global Command (always available).
+ */
#define GLOBALCMD -2
+
+/** Subsystem Id for a Hidden Subsystem (ommitted from help).
+ */
#define HIDDENSUB -3
+/** Predefined Boot Command.
+ */
#define CID_BOOT 9990
+
+/** Predefined Macro Command.
+ *
+ * This command will take a string with spaces replace by _ and cr replace by | for later replay with run.
+ */
#define CID_MACRO 9991
+
+/** Predefined Macro Command.
+ *
+ * This command replay a macro.
+ */
#define CID_RUN 9992
+
+/** Predefined Macro Command.
+ *
+ * This command print the current macro.
+ */
#define CID_MACROS 9993
+/** Predefined Echo Command.
+ *
+ * This command turn echo on or off.
+ */
#define CID_ECHO 9994
+
+/** Predefined VT100 Bold Command.
+ *
+ * This command turn VT100 bold usage on or off.
+ */
#define CID_BOLD 9995
+
+/** Predefined VT100 Cls Command.
+ *
+ * This command will clear the screen.
+ */
#define CID_CLS 9996
+
+/** Predefined Idle Command.
+ *
+ * This command will return to the global command level, leaving the active subsystem.
+ */
#define CID_IDLE 9997
+
+/** Predefined Help Command.
+ *
+ * This command will either print all active command (without parameters) or a more detailed
+ * help for a command passed as parameter.
+ */
#define CID_HELP 9998
+
+/** Predefided Semi Command.
+ *
+ * CID_LAST only functions as a special Commend Id to signal unknown commands.
+ */
#define CID_LAST 9999
-//You need to add the following commands to your command table.
+//------------------------------------------------------------------------------
-//Optional
-const cmdb_cmd BOOT("Boot",GLOBALCMD,CID_BOOT,"","Boot");
+/** The Boot Command.
+ *
+ * Optional.
+ */
+const cmd BOOT("Boot",GLOBALCMD,CID_BOOT,"","Boot");
-//Optional
-const cmdb_cmd MACRO("Macro",GLOBALCMD,CID_MACRO,"%s","Define macro (sp->_, cr->|)","command(s)");
-const cmdb_cmd RUN("Run",GLOBALCMD,CID_RUN,"","Run a macro");
-const cmdb_cmd MACROS("Macros",GLOBALCMD,CID_MACROS,"","List macro(s)");
+/** The Macro Command.
+ *
+ * Optional.
+ */
+const cmd MACRO("Macro",GLOBALCMD,CID_MACRO,"%s","Define macro (sp->_, cr->|)","command(s)");
+
+/** The Run Command.
+ *
+ * Optional.
+ */
+const cmd RUN("Run",GLOBALCMD,CID_RUN,"","Run a macro");
+
+/** The Macros Command.
+ *
+ * Optional.
+ */
+const cmd MACROS("Macros",GLOBALCMD,CID_MACROS,"","List macro(s)");
-//Optional
-const cmdb_cmd ECHO("Echo",GLOBALCMD,CID_ECHO,"%bu","Echo On|Off (1|0)","state");
-const cmdb_cmd BOLD("Bold",GLOBALCMD,CID_BOLD,"%bu","Bold On|Off (1|0)","state");
-const cmdb_cmd CLS("Cls",GLOBALCMD,CID_CLS,"","Clears the terminal screen");
+/** The Echo Command.
+ *
+ * Optional.
+ */
+const cmd ECHO("Echo",GLOBALCMD,CID_ECHO,"%bu","Echo On|Off (1|0)","state");
+
+/** The Bold Command.
+ *
+ * Optional.
+ */
+const cmd BOLD("Bold",GLOBALCMD,CID_BOLD,"%bu","Bold On|Off (1|0)","state");
-//Mandatory!
-const cmdb_cmd IDLE("Idle",GLOBALCMD,CID_IDLE,"","Deselect Subsystems");
+/** The Cls Command.
+ *
+ * Optional.
+ */
+const cmd CLS("Cls",GLOBALCMD,CID_CLS,"","Clears the terminal screen");
-//Mandatory!
-const cmdb_cmd HELP("Help",GLOBALCMD,CID_HELP,"%s","Help");
+/** The Idle Command.
+ *
+ * Mandatory if you use subsystems.
+ */
+const cmd IDLE("Idle",GLOBALCMD,CID_IDLE,"","Deselect Subsystems");
+/** The Help Command.
+ *
+ * Mandatory.
+ */
+const cmd HELP("Help",GLOBALCMD,CID_HELP,"%s","Help");
+
+//------------------------------------------------------------------------------
+
+/** We'll only define the 4 cursor codes at the moment.
+ */
#define ESC_TBL_LEN 4
+/** Escape code definition struct.
+ */
struct esc_st {
char *escstr;
int id;
};
+/** The Escape Code Id's.
+ */
enum {
EID_CURSOR_UP,
EID_CURSOR_DOWN,
@@ -154,6 +350,8 @@
EID_LAST
};
+/** The Escape Codes Table.
+ */
const struct esc_st esc_tbl [ESC_TBL_LEN] = {
{ "\033[A", EID_CURSOR_UP },
{ "\033[B", EID_CURSOR_DOWN },
@@ -161,72 +359,88 @@
{ "\033[D", EID_CURSOR_LEFT },
};
-//class Cmdb;
+//------------------------------------------------------------------------------
-//See http://stackoverflow.com/questions/9410/how-do-you-pass-a-function-as-a-parameter-in-c
-//void func ( void (*f)(Cmdb&, int) );
+/** The Command Interpreter Version.
+ */
+#define CMDB_VERSION 0.7
-//Define a const struct cmbd_cmd cmdb_tbl [CMD_TBL_LEN] {}; that is passed into the constructor.
+//------------------------------------------------------------------------------
/** Command Interpreter class.<br/>
* <br/>
* Steps to take:<br/>
* <br/>
- * 1) Create a std::vector<cmdb_cmd> and fill it with at least<br/>
+ * 1) Create a std::vector<cmd> and fill it with at least<br/>
* the mandatory commands IDLE and HELP.<br/>
- * 2) Create an Cmdb class instance and pass it both the vector and<br/>
- * a Serial port object like Serial serial(USBTX, USBRX);<br/>
+ * <br/>
+ * 2) Create an Cmdb class instance and pass it the vector,<br/>
+ * a Serial port object like Serial serial(USBTX, USBRX); <br/>
+ * and finally a command dispatcher function.<br/>
+ * <br/>
* 3) Feed the interpreter with characters received from your serial port.<br/>
* Note Cmdb self does not retrieve input it must be handed to it<br/>
+ * <br/>
* 4) Handle commands added by the application by the Id and parameters passed.<br/>
*
+ * @see main.cpp for a sample.
*/
class Cmdb {
public:
/** Create a Command Interpreter.
*
- * See http://www.newty.de/fpt/fpt.html#chapter2 for function pointers.
+ * @see http://www.newty.de/fpt/fpt.html#chapter2 for function pointers.
+ * @see http://stackoverflow.com/questions/9410/how-do-you-pass-a-function-as-a-parameter-in-c
+ * @see http://www.daniweb.com/forums/thread293338.html
*
* @param serial a Serial port used for communication.
* @param cmds a vector with the command table.
*/
- Cmdb(const Serial& serial, const std::vector<cmdb_cmd>& cmds, void (*cmdb_callback)(Cmdb&,int) );
+ Cmdb(const Serial& serial, const std::vector<cmd>& cmds, void (*callback)(Cmdb&,int) );
+
+ /** The version of the Command Interpreter.
+ *
+ * returns the version.
+ */
+ static float version() {
+ return CMDB_VERSION;
+ }
/** Checks if the macro buffer has any characters left.
*
* @returns true if any characters left.
*/
- bool cmdb_macro_hasnext();
+ bool macro_hasnext();
/** Gets the next character from the macro buffer and
* advances the macro buffer pointer.
*
- * Do not call if no more characters are left!
+ * @note Do not call if no more characters are left!
*
* @returns the next character.
*/
- char cmdb_macro_next();
+ char macro_next();
/** Gets the next character from the macro buffer
* but does not advance the macro buffer pointer.
*
- * Do not call if no more characters are left!
+ * @note Do not call if no more characters are left!
*
* @returns the next character.
*/
- char cmdb_macro_peek();
+ char macro_peek();
/** Resets the macro buffer and macro buffer pointer.
*
*/
- void cmdb_macro_reset();
+ void macro_reset();
/** Checks if the serial port has any characters
* left to read by calling serial.readable().
*
* @returns true if any characters available.
*/
- bool cmdb_hasnext();
+ bool hasnext();
/** Gets the next character from the serial port by
* calling serial.getc().
@@ -235,79 +449,188 @@
*
* @returns the next character.
*/
- char cmdb_next();
+ char next();
/** Add a character to the command being processed.
* If a cr is added, the command is parsed and executed if possible
* If supported special keys are encountered (like backspace, delete and cursor up) they are processed.
*
- * @parmam c the character to add.
+ * @param c the character to add.
*
* @returns true if a command was recognized and executed.
*/
- bool cmdb_scan(const char c);
+ bool scan(const char c);
+
+ /** printf substitute using the serial parameter passed to the constructor.
+ *
+ * @see http://www.cplusplus.com/reference/clibrary/cstdio/printf/
+ *
+ * @parm format the printf format string.
+ * @parm ... optional paramaters to be merged into the format string.
+ *
+ * @returns the printf return value.
+ */
+ int printf(const char *format, ...);
- //Output.
- int cmdb_printf(const char *format, ...);
- int cmdb_print(const char *msg);
- char cmdb_printch(const char ch);
+ /** print is simply printf without parameters using the serial parameter passed to the constructor.
+ *
+ * @parm msg the string to print.
+ *
+ * @returns the printf return value.
+ */
+ int print(const char *msg);
+
+ /** printch is simply putc subsitute using the serial parameter passed to the constructor.
+ *
+ * @parm msg the string to print.
+ *
+ * @returns the printf return value.
+ */
+ char printch(const char ch);
+
+//------------------------------------------------------------------------------
+
+ /** Initializes the parser (called by the constructor).
+ *
+ * @parm full if true the macro buffer is also cleared else only the command interpreter is reset.
+ */
+ void init(const char full);
//------------------------------------------------------------------------------
//----These helper functions retieve parameters in the correct format.
//------------------------------------------------------------------------------
-//TODO Add tests for correct type of parameter.
-
+ /** Typecasts parameter ndx to a bool.
+ *
+ * mask: %bu
+ *
+ * @parm the parameter index
+ *
+ * @return a bool
+ */
bool BOOLPARM(int ndx) {
return parms[ndx].val.uc!=0;
}
+ /** Typecasts parameter ndx to a byte/unsigned char.
+ *
+ * mask: %bu
+ *
+ * @parm the parameter index
+ *
+ * @return a byte/unsigned char
+ */
unsigned char BYTEPARM(int ndx) {
return parms[ndx].val.uc;
}
+ /** Typecasts parameter ndx to a char.
+ *
+ * mask: %c
+ *
+ * @parm the parameter index
+ *
+ * @return a char
+ */
char CHARPARM(int ndx) {
return parms[ndx].val.c;
}
+ /** Typecasts parameter ndx to word/unsigned int.
+ *
+ * mask: %hu
+ *
+ * @parm the parameter index
+ *
+ * @return a word/unsigned int
+ */
unsigned int WORDPARM(int ndx) {
return parms[ndx].val.ui;
}
+ /** Typecasts parameter ndx to a unsigned int.
+ *
+ * mask: %u
+ *
+ * @parm the parameter index
+ *
+ * @return a unsigned int
+ */
unsigned int UINTPARM(int ndx) {
return parms[ndx].val.ui;
}
+ /** Typecasts parameter ndx to a int.
+ *
+ * mask: %i
+ *
+ * @parm the parameter index
+ *
+ * @return a int
+ */
int INTPARM(int ndx) {
return parms[ndx].val.i;
}
+ /** Typecasts parameter ndx to a bool.
+ *
+ * mask: %lu
+ *
+ * @parm the parameter index
+ *
+ * @return a bool
+ */
unsigned long DWORDPARM(int ndx) {
return parms[ndx].val.ul;
}
+ /** Typecasts parameter ndx to a long.
+ *
+ * mask: %li
+ *
+ * @parm the parameter index
+ *
+ * @return a long
+ */
long LONGPARM(int ndx) {
return parms[ndx].val.l;
}
+ /** Typecasts parameter ndx to a float.
+ *
+ * mask: %f
+ *
+ * @parm the parameter index
+ *
+ * @return a float
+ */
float FLOATPARM(int ndx) {
return parms[ndx].val.f;
}
+ /** Typecasts parameter ndx to a string.
+ *
+ * @note spaces are not allowed as it makes parsing so much harder.
+ *
+ * mask: %s
+ *
+ * @parm the parameter index
+ *
+ * @return a string
+ */
char* STRINGPARM(int ndx) {
return parms[ndx].val.s;
}
private:
- //See http://www.newty.de/fpt/fpt.html#chapter2 for function pointers.
-
- //C++ member
- //void (Cmdb::*cmdb_callback)(Cmdb&,int);
- //C function
- void (*cmdb_callback)(Cmdb&,int);
-
- //void(*_cmdb_callback)(Cmdb&,int);
+ /** C callback function
+ *
+ * @see See http://www.newty.de/fpt/fpt.html#chapter2 for function pointers.
+ *
+ * C++ member equivalent would be void (Cmdb::*callback)(Cmdb&,int);
+ */
+ void (*callback)(Cmdb&,int);
/** Searches the escape code list for a match.
*
@@ -315,7 +638,7 @@
*
* @returns the index of the escape code or -1.
*/
- int cmdb_escid_search(char *escstr);
+ int escid_search(char *escstr);
/** Checks if the command table for a match.
*
@@ -323,7 +646,7 @@
*
* @returns the id of the command or -1.
*/
- int cmdb_cmdid_search(char *cmdstr);
+ int cmdid_search(char *cmdstr);
/** Converts an command id to an index of the command table.
*
@@ -331,34 +654,28 @@
*
* @returns the index of the command or -1.
*/
- int cmdb_cmdid_index(int cmdid);
-
- /** Initializes the parser.
- *
- * @parm full if true the macro buffer is also cleared else only the command interpreter is reset.
- */
- void cmdb_init(const char full);
+ int cmdid_index(int cmdid);
/** Writes a prompt to the serial port.
*
*/
- void cmdb_prompt(void);
+ void prompt(void);
- /** Called by cmdb_cmd_dispatch it parses the command against the command table.
+ /** Called by cmd_dispatch it parses the command against the command table.
*
* @param cmd the command and paramaters to parse.
*
* @returns the id of the parsed command.
*/
- int cmdb_parse(char *cmd);
+ int parse(char *cmd);
- /** Called by cmdb_scan it processes the arguments and dispatches the command.
+ /** Called by scan it processes the arguments and dispatches the command.
*
- * Note: This member calls the cmdb_callback callback function.
+ * Note: This member calls the callback callback function.
*
* @param cmd the command to dispatch.
*/
- void cmdb_cmd_dispatcher(char *cmd);
+ void cmd_dispatcher(char *cmd);
/** Generates Help from the command table and prints it.
*
@@ -366,24 +683,59 @@
* @param ndx the index of the command in the command table.
* @param post trailing text.
*/
- void cmdb_cmdhelp(char *pre, int ndx, char *post);
+ void cmdhelp(char *pre, int ndx, char *post);
+
+ /** memset wrapper.
+ *
+ * @param p The string to be cleared.
+ * @param siz The string size.
+ */
+ void zeromemory(char *p,unsigned int siz);
- //Utilities.
- void zeromemory(char *p,unsigned int siz);
+ /** Case insensitive compare.
+ *
+ * @see strcmp.
+ *
+ * @param s1
+ * @param s2 the second string to compare.
+ *
+ * @returns 0 if s1=s2, -1 if s1<s2 or +1 if s1>s2.
+ */
int stricmp (char *s1, char *s2);
- //Storage, see http://www.cplusplus.com/reference/stl/vector/
- std::vector<cmdb_cmd> _cmds;
- Serial _serial;
+ /** Internal Serial Port Storage.
+ */
+ Serial serial;
+
+ /** Internal Command Table Vector Storage.
+ *
+ * @see http://www.cplusplus.com/reference/stl/vector/
+ */
+ std::vector<cmd> cmds;
+
+ /** Internal Echo Flag Storage.
+ */
bool echo;
+
+ /** Internal VT100 Bold Flag Storage.
+ */
bool bold;
- int CMD_TBL_LEN;
+ /** Internal Command Table Length Storage.
+ */
+ //int CMD_TBL_LEN;
//Macro's.
+ /** Internal Macro Pointer.
+ */
int macro_ptr;
+
+ /** Internal Macro Buffer.
+ */
char macro_buf[1 + MAX_CMD_LEN];
+ /** Used for parsing parameters.
+ */
enum parmtype {
PARM_UNUSED, //0
@@ -397,6 +749,8 @@
PARM_STRING //6 (s)
};
+ /** Used for parsing parameters.
+ */
union value {
float f;
@@ -415,32 +769,62 @@
char s[MAX_PARM_LEN];
};
+ /** Used for parsing parameters.
+ */
struct parm {
enum parmtype type;
union value val;
};
-//------------------------------------------------------------------------------
-//----Buffers
-//------------------------------------------------------------------------------
+ //------------------------------------------------------------------------------
+ //----Buffers & Storage.
+ //------------------------------------------------------------------------------
+
+ /** Command Buffer.
+ */
+ char cmdbuf [1 + MAX_CMD_LEN]; // command buffer
+
+ /** Command Buffer Pointer.
+ */
+ char cmdndx; // command index
- char cmdbuf [1 + MAX_CMD_LEN]; // command buffer
- char cmdndx; // command index
+ /** Last Command Buffer (Used when pressing Cursor Up).
+ */
+ char lstbuf [1 + MAX_CMD_LEN]; // last command buffer
- char lstbuf [1 + MAX_CMD_LEN]; // last command buffer
+ /** Escape Code Buffer.
+ */
+ char escbuf [1 + MAX_ESC_LEN];
+
+ /** Escape Code Buffer Pointer.
+ */
+ unsigned char escndx;
- char escbuf [1 + MAX_ESC_LEN]; // command buffer
- unsigned char escndx; // command index
+ /** Storage for Parsed Parameters
+ */
+ struct parm parms[MAX_ARGS];
- struct parm parms[MAX_ARGS];
- int noparms;
+ /** Parsed Parameters Pointer.
+ */
+ int noparms;
+
+ /** Current Selected Subsystem (-1 for Global).
+ */
+ int subsystem;
- int subsystem;
+ /** No of arguments found in command.
+ */
+ int argcnt;
- int argcnt; //No of arguments found in command
- int argfnd; //No of arguments to find in parameter definition.
- int error; //strtoXX() Error detection
+ /** No of arguments to find in parameter definition (Command Table).
+ */
+ int argfnd;
+ /** strtoXX() Error detection.
+ */
+ int error;
};
+extern "C" void mbed_reset();
+
#endif
\ No newline at end of file
