?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{FILE START}

library

?curdirlinks? - Rev 6

?prevdifflink? - Blame - ?getfile?

/*! \file cmdline.h \brief Command-Line Interface Library. */
//*****************************************************************************
//
// File Name    : 'cmdline.h'
// Title                : Command-Line Interface Library
// Author               : Pascal Stang - Copyright (C) 2003
// Created              : 2003.07.16
// Revised              : 2003.07.16
// Version              : 0.1
// Target MCU   : Atmel AVR Series
// Editor Tabs  : 4
//
///     \ingroup general
/// \defgroup cmdline Command-line Implementation (cmdline.c)
/// \code #include "cmdline.h" \endcode
/// \par Overview
///             This Command-Line interface library is meant to provide a reusable
///     terminal-like user interface much like a DOS command line or UNIX terminal.
///     A terminal with VT100 support is assumed on the user's end.  Common
///     line-editing is supported, including backspace, arrow keys, and even a
/// small command-history buffer.
///
///     \note One can imagine more efficient ways to implement the command and 
///             function database contained in this library, however, this is a decent
///             and functional first cut.  I may someday get around to making some
///             improvements.
///
/// \par Operation
///     The cmdline library does the following things for you:
///             - Prints command prompts
///             - Gathers a command string from the user (with editing features)
///             - Parses the command string when the user presses [ENTER]
///             - Compares the entered command to the command database
///               -- Executes the corresponding function if a match is found
///               -- Reports an error if no match is found
///             -Provides functions to retrieve the command arguments:
///               --as strings
///               --as decimal integers
///               --as hex integers
///
///     Supported editing features include:
///             - Backspace support
///             - Mid-line editing, inserting and deleting (left/right-arrows)
///             - Command History (up-arrow) (currently only one command deep)
///
///     To use the cmdline system, you will need to associate command strings
///     (commands the user will be typing) with your function that you wish to have
///     called when the user enters that command.  This is done by using the
///     cmdlineAddCommand() function.
///
///     To setup the cmdline system, you must do these things:
///             - Initialize it: cmdlineInit()
///             - Add one or more commands to the database: cmdlineAddCommand()
///             - Set an output function for your terminal: cmdlineSetOutputFunc()
///
///     To operate the cmdline system, you must do these things repeatedly:
///             - Pass user input from the terminal to: cmdlineSetOutputFunc()
///             - Call cmdlineMainLoop() from your program's main loop
///
///     The cmdline library does not assume an input or output device, but can be
///     configured to use any user function for output using cmdlineSetOutputFunc()
///     and accepts input by calling cmdlineInputFunc().  This means the cmdline
///     library can operate over any interface including UART (serial port),
///     I2c, ethernet, etc.
///
///     ***** FOR MORE INFORMATION ABOUT USING cmdline SEE THE AVRLIB EXAMPLE *****
///     ***** CODE IN THE avrlib/examples DIRECTORY                           *****
//
// NOTE: This code is currently below version 1.0, and therefore is considered
// to be lacking in some functionality or documentation, or may not be fully
// tested.  Nonetheless, you can expect most functions to work.
//
// This code is distributed under the GNU Public License
//              which can be found at http://www.gnu.org/licenses/gpl.txt
//
//*****************************************************************************
//@{

#ifndef CMDLINE_H
#define CMDLINE_H

#include "global.h"

// constants/macros/typdefs
typedef void (*CmdlineFuncPtrType)(void);

// functions

//! initalize the command line system
void cmdlineInit(void);

//! add a new command to the database of known commands
// newCmdString should be a null-terminated command string with no whitespace
// newCmdFuncPtr should be a pointer to the function to execute when
//   the user enters the corresponding command tring
void cmdlineAddCommand(u08* newCmdString, CmdlineFuncPtrType newCmdFuncPtr);

//! sets the function used for sending characters to the user terminal
void cmdlineSetOutputFunc(void (*output_func)(unsigned char c));

//! call this function to pass input charaters from the user terminal
void cmdlineInputFunc(unsigned char c);

//! call this function in your program's main loop
void cmdlineMainLoop(void);

// internal commands
void cmdlineRepaint(void);
void cmdlineDoHistory(u08 action);
void cmdlineProcessInputString(void);
void cmdlinePrintPrompt(void);
void cmdlinePrintError(void);

// argument retrieval commands
//! returns a string pointer to argument number [argnum] on the command line
u08* cmdlineGetArgStr(u08 argnum);
//! returns the decimal integer interpretation of argument number [argnum]
long cmdlineGetArgInt(u08 argnum);
//! returns the hex integer interpretation of argument number [argnum]
long cmdlineGetArgHex(u08 argnum);

#endif
//@}
{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3