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.
SimpleShell.h
- Committer:
- shimniok
- Date:
- 2018-12-12
- Revision:
- 7:b58450c94d32
- Parent:
- 6:4da092220ba8
- Child:
- 8:41b7274a9753
- Child:
- 10:c3faa7ffd23b
File content as of revision 7:b58450c94d32:
#ifndef __SIMPLESHELL_H
#define __SIMPLESHELL_H
#include "mbed.h"
/** SimpleShell
* A simple, flexible, embedded shell with dynamically added shell commands.
* @code
* #include "SimpleShell.h"
*
* void helloworld() { printf("Hello world!\n"); }
*
* int main() {
* SimpleShell sh;
* sh.attach(helloworld, "test");
* sh.run();
* }
* @endcode
*/
class SimpleShell {
public:
/// Create a new shell instance
SimpleShell();
/** Call this to run the shell.
* @note The shell can be run in a new thread.
* @code
* SimpleShell sh;
* sh.run();
* thread.start(callback(&sh, &SimpleShell::run));
* @endcode
*/
void run();
/** Attaches a shell command
* @param cb is the callback function that implements the command
* @param command is the string used to invoke the command in the shell
* @code
* sh.attach(helloworld, "test");
* @endcode
*/
void attach(Callback<void()> cb, char *command);
private:
/// Maximum number of commands
static const int MAXLOOKUP=32;
/// Maximum command line buffer size
static const int MAXBUF=64;
/// internal struct to contain a single command
typedef struct {
char *command;
Callback<void()> cb;
} command_entry_t;
/** finds and eturns the callback for a command
* @return Callback to a function returning void
*/
Callback<void()> findCommand();
/// Prints command prompt
void printPrompt(void);
/// Reads a command from the prompt (with editing)
void readCommand();
/// Command lookup table
command_entry_t lookup[MAXLOOKUP];
/// Current end of lookup table
int lookupEnd;
/// Temporary command string
char cmd[MAXBUF];
/// Current working directory
char _cwd[MAXBUF];
}; // class
#endif