blob: 1e305177b7f917cc0623fd9ffde4398c880522c8 [file] [log] [blame]
/*******************************************************************************
**+--------------------------------------------------------------------------+**
**| |**
**| Copyright 1998-2008 Texas Instruments, Inc. - http://www.ti.com/ |**
**| |**
**| Licensed under the Apache License, Version 2.0 (the "License"); |**
**| you may not use this file except in compliance with the License. |**
**| You may obtain a copy of the License at |**
**| |**
**| http://www.apache.org/licenses/LICENSE-2.0 |**
**| |**
**| Unless required by applicable law or agreed to in writing, software |**
**| distributed under the License is distributed on an "AS IS" BASIS, |**
**| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |**
**| See the License for the specific language governing permissions and |**
**| limitations under the License. |**
**| |**
**+--------------------------------------------------------------------------+**
*******************************************************************************/
#ifndef tiwlan_console_h
#define tiwlan_console_h
#include <stdio.h>
#include <assert.h>
/*
* --------------------- *
* error codes
* --------------------- *
*/
typedef enum
{
E_OK = 0
, E_BADPARM
, E_TOOMANY
, E_NOMEMORY
, E_NOT_FOUND
, E_EXISTS
, E_DUMMY
} consoleErr_t;
typedef consoleErr_t consoleErr;
typedef void * handle_t;
typedef unsigned char U8;
typedef signed char S8;
typedef unsigned short U16;
typedef signed short S16;
typedef unsigned long U32;
typedef signed long S32;
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Monitor parameter flags */
#define CON_PARM_OPTIONAL 0x01 /* Parameter is optional */
#define CON_PARM_DEFVAL 0x02 /* Default value is set */
#define CON_PARM_RANGE 0x04 /* Range is set */
#define CON_PARM_STRING 0x08 /* String parm */
#define CON_PARM_LINE 0x10 /* String from the current parser position till EOL */
#define CON_PARM_SIGN 0x20 /* Signed param */
#define CON_PARM_NOVAL 0x80 /* Internal flag: parameter is anassigned */
/* Function parameter structure */
typedef struct ConParm_t
{
const char *name; /* Parameter name. Shouldn't be allocated on stack! */
U8 flags; /* Combination of CON_PARM_??? flags */
U32 low_val; /* Low val for range checking */
U32 hi_val; /* Hi val for range checking/max length of string */
U32 value; /* Value/address of string parameter */
} ConParm_t;
#define CON_LAST_PARM { NULL, 0, 0, 0, 0 }
/* Monitor command handler prototype */
typedef void (*FuncToken_t)(ConParm_t parm[], U16 nParms);
/* Add subdirectory to the p_root directory
Returns the new directory handle
*/
handle_t consoleAddDirExt(
handle_t hRoot, /* Upper directory handle. NULL=root */
const char *name, /* New directory name */
const char *desc ); /* Optional directory description */
/* Add token */
consoleErr consoleAddToken( handle_t hDir, /* Directory handle. NULL=root */
const char *name, /* Token name. Shouldn't be allocated on stack! */
const char *help, /* Token help. Shouldn't be allocated on stack! */
FuncToken_t p_func, /* Token handler */
ConParm_t p_parms[]);/* Array of token parameters. */
/* The last array element has parameter */
/* name = NULL */
/* Monitor driver.
Calls XX_Gets in infinite loop to get input string.
Gives the string to console_ParseString for processing.
Monitor token handler can call consoleStop() to exit the
consoleStart.
*/
void consoleStart( void );
/* Parse the given input string and exit.
All commands in the input string are executed one by one.
*/
void console_ParseString( char *input_string );
/* Stop monitor driver */
void consoleStop( void );
/* Execute commands from 'script_file' */
int consoleRunScript( char *script_file );
#ifdef _WINDOWS
#endif
#ifdef __cplusplus
}
#endif
/* ----------------------------------------------------- */
#define ALIAS_LEN 1
#define MAX_NAME_LEN 80
#define MAX_HELP_LEN 80
#define MAX_PARM_LEN 20
#define MAX_NUM_OF_PARMS 30
#define TOKEN_UP ".."
#define TOKEN_ROOT "/"
#define TOKEN_BREAK "#"
#define TOKEN_HELP "?"
#define TOKEN_DIRHELP "help"
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef __LINUX__ // TRS:WDK
#define perror(str) printf("\nError at %s:%d - %s.\n", __FILE__, __LINE__, (str))
#endif /* __LINUX__ */
//TRS end
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifndef _WINDOWS /* TRS:WDK __LINUX__ */
#ifdef ERRCHK
# define ASSERT(p) assert(p)
#else
# define ASSERT(p) do {} while (0)
#endif
#endif /* TRS:WDK __LINUX__ */
#ifdef __cplusplus
}
#endif
typedef enum { Dir, Token } ConEntry_type_t;
/* Parameter name and format */
typedef char (ParmName_t)[MAX_NAME_LEN+1];
/* Monitor token structure */
typedef struct ConEntry_t
{
struct ConEntry_t *next;
char name[MAX_NAME_LEN+1]; /* Entry name */
char help[MAX_HELP_LEN+1]; /* Help string */
char *alias; /* Alias - always in upper case*/
ConEntry_type_t sel; /* Entry selector */
union {
struct
{
struct ConEntry_t *upper; /* Upper directory */
struct ConEntry_t *first; /* First entry */
} dir;
struct t_Token
{
FuncToken_t f_tokenFunc; /* Token handler */
ConParm_t parm[MAX_NUM_OF_PARMS]; /* Parameters array */
ParmName_t name[MAX_NUM_OF_PARMS]; /* Parameter name */
} token;
} u;
} ConEntry_t;
/* Token types */
typedef enum
{
EmptyToken,
UpToken,
RootToken,
BreakToken,
HelpToken,
DirHelpToken,
NameToken
} t_TokenType;
char * console_strlwr( char *s );
int console_stricmp( char *s1, char *s2, U16 len );
char * console_ltrim( char *s );
#endif /* #ifndef tiwlan_console_h */