164064216a8433360745f69edddce19a606659163The Android Open Source Project/*******************************************************************************
264064216a8433360745f69edddce19a606659163The Android Open Source Project**+--------------------------------------------------------------------------+**
364064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                          |**
464064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright 1998-2008 Texas Instruments, Inc. - http://www.ti.com/         |**
564064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                          |**
664064216a8433360745f69edddce19a606659163The Android Open Source Project**| Licensed under the Apache License, Version 2.0 (the "License");          |**
764064216a8433360745f69edddce19a606659163The Android Open Source Project**| you may not use this file except in compliance with the License.         |**
864064216a8433360745f69edddce19a606659163The Android Open Source Project**| You may obtain a copy of the License at                                  |**
964064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                          |**
1064064216a8433360745f69edddce19a606659163The Android Open Source Project**|     http://www.apache.org/licenses/LICENSE-2.0                           |**
1164064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                          |**
1264064216a8433360745f69edddce19a606659163The Android Open Source Project**| Unless required by applicable law or agreed to in writing, software      |**
1364064216a8433360745f69edddce19a606659163The Android Open Source Project**| distributed under the License is distributed on an "AS IS" BASIS,        |**
1464064216a8433360745f69edddce19a606659163The Android Open Source Project**| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |**
1564064216a8433360745f69edddce19a606659163The Android Open Source Project**| See the License for the specific language governing permissions and      |**
1664064216a8433360745f69edddce19a606659163The Android Open Source Project**| limitations under the License.                                           |**
1764064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                          |**
1864064216a8433360745f69edddce19a606659163The Android Open Source Project**+--------------------------------------------------------------------------+**
1964064216a8433360745f69edddce19a606659163The Android Open Source Project*******************************************************************************/
2064064216a8433360745f69edddce19a606659163The Android Open Source Project
2164064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef tiwlan_console_h
2264064216a8433360745f69edddce19a606659163The Android Open Source Project#define tiwlan_console_h
2364064216a8433360745f69edddce19a606659163The Android Open Source Project
2464064216a8433360745f69edddce19a606659163The Android Open Source Project#include <stdio.h>
2564064216a8433360745f69edddce19a606659163The Android Open Source Project#include <assert.h>
2664064216a8433360745f69edddce19a606659163The Android Open Source Project/*
2764064216a8433360745f69edddce19a606659163The Android Open Source Project * --------------------- *
2864064216a8433360745f69edddce19a606659163The Android Open Source Project *     error codes
2964064216a8433360745f69edddce19a606659163The Android Open Source Project * --------------------- *
3064064216a8433360745f69edddce19a606659163The Android Open Source Project */
3164064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
3264064216a8433360745f69edddce19a606659163The Android Open Source Project{
3364064216a8433360745f69edddce19a606659163The Android Open Source Project   E_OK = 0
3464064216a8433360745f69edddce19a606659163The Android Open Source Project   , E_BADPARM
3564064216a8433360745f69edddce19a606659163The Android Open Source Project   , E_TOOMANY
3664064216a8433360745f69edddce19a606659163The Android Open Source Project   , E_NOMEMORY
3764064216a8433360745f69edddce19a606659163The Android Open Source Project   , E_NOT_FOUND
3864064216a8433360745f69edddce19a606659163The Android Open Source Project   , E_EXISTS
3964064216a8433360745f69edddce19a606659163The Android Open Source Project   , E_DUMMY
4064064216a8433360745f69edddce19a606659163The Android Open Source Project} consoleErr_t;
4164064216a8433360745f69edddce19a606659163The Android Open Source Project
4264064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef consoleErr_t  consoleErr;
4364064216a8433360745f69edddce19a606659163The Android Open Source Project
4464064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef void *                   handle_t;
4564064216a8433360745f69edddce19a606659163The Android Open Source Project
4664064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef unsigned char            U8;
4764064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef signed char              S8;
4864064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef unsigned short           U16;
4964064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef signed short             S16;
5064064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef unsigned long            U32;
5164064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef signed long              S32;
5264064216a8433360745f69edddce19a606659163The Android Open Source Project
5364064216a8433360745f69edddce19a606659163The Android Open Source Project
5464064216a8433360745f69edddce19a606659163The Android Open Source Project
5564064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef __cplusplus
5664064216a8433360745f69edddce19a606659163The Android Open Source Projectextern "C" {
5764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* __cplusplus */
5864064216a8433360745f69edddce19a606659163The Android Open Source Project
5964064216a8433360745f69edddce19a606659163The Android Open Source Project/* Monitor parameter flags */
6064064216a8433360745f69edddce19a606659163The Android Open Source Project#define CON_PARM_OPTIONAL    0x01  /* Parameter is optional */
6164064216a8433360745f69edddce19a606659163The Android Open Source Project#define CON_PARM_DEFVAL      0x02  /* Default value is set */
6264064216a8433360745f69edddce19a606659163The Android Open Source Project#define CON_PARM_RANGE       0x04  /* Range is set */
6364064216a8433360745f69edddce19a606659163The Android Open Source Project#define CON_PARM_STRING      0x08  /* String parm */
6464064216a8433360745f69edddce19a606659163The Android Open Source Project#define CON_PARM_LINE        0x10  /* String from the current parser position till EOL */
6564064216a8433360745f69edddce19a606659163The Android Open Source Project#define CON_PARM_SIGN        0x20  /* Signed param */
6664064216a8433360745f69edddce19a606659163The Android Open Source Project#define CON_PARM_NOVAL       0x80  /* Internal flag: parameter is anassigned */
6764064216a8433360745f69edddce19a606659163The Android Open Source Project
6864064216a8433360745f69edddce19a606659163The Android Open Source Project/* Function parameter structure */
6964064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct ConParm_t
7064064216a8433360745f69edddce19a606659163The Android Open Source Project{
7164064216a8433360745f69edddce19a606659163The Android Open Source Project   const char *name;             /* Parameter name. Shouldn't be allocated on stack! */
7264064216a8433360745f69edddce19a606659163The Android Open Source Project   U8 flags;                     /* Combination of CON_PARM_??? flags */
7364064216a8433360745f69edddce19a606659163The Android Open Source Project   U32 low_val;                  /* Low val for range checking */
7464064216a8433360745f69edddce19a606659163The Android Open Source Project   U32 hi_val;                   /* Hi val for range checking/max length of string */
7564064216a8433360745f69edddce19a606659163The Android Open Source Project   U32 value;                    /* Value/address of string parameter */
7664064216a8433360745f69edddce19a606659163The Android Open Source Project} ConParm_t;
7764064216a8433360745f69edddce19a606659163The Android Open Source Project
7864064216a8433360745f69edddce19a606659163The Android Open Source Project#define CON_LAST_PARM       { NULL, 0, 0, 0, 0 }
7964064216a8433360745f69edddce19a606659163The Android Open Source Project
8064064216a8433360745f69edddce19a606659163The Android Open Source Project/* Monitor command handler prototype */
8164064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef void (*FuncToken_t)(ConParm_t parm[], U16 nParms);
8264064216a8433360745f69edddce19a606659163The Android Open Source Project
8364064216a8433360745f69edddce19a606659163The Android Open Source Project/* Add subdirectory to the p_root directory
8464064216a8433360745f69edddce19a606659163The Android Open Source Project   Returns the new directory handle
8564064216a8433360745f69edddce19a606659163The Android Open Source Project*/
8664064216a8433360745f69edddce19a606659163The Android Open Source Projecthandle_t consoleAddDirExt(
8764064216a8433360745f69edddce19a606659163The Android Open Source Project                       handle_t   hRoot,          /* Upper directory handle. NULL=root */
8864064216a8433360745f69edddce19a606659163The Android Open Source Project                       const char *name,          /* New directory name */
8964064216a8433360745f69edddce19a606659163The Android Open Source Project                       const char *desc );    /* Optional directory description */
9064064216a8433360745f69edddce19a606659163The Android Open Source Project
9164064216a8433360745f69edddce19a606659163The Android Open Source Project/* Add token */
9264064216a8433360745f69edddce19a606659163The Android Open Source ProjectconsoleErr consoleAddToken( handle_t     hDir,     /* Directory handle. NULL=root */
9364064216a8433360745f69edddce19a606659163The Android Open Source Project                      const char    *name,    /* Token name. Shouldn't be allocated on stack! */
9464064216a8433360745f69edddce19a606659163The Android Open Source Project                      const char    *help,    /* Token help. Shouldn't be allocated on stack! */
9564064216a8433360745f69edddce19a606659163The Android Open Source Project                      FuncToken_t   p_func,   /* Token handler */
9664064216a8433360745f69edddce19a606659163The Android Open Source Project                      ConParm_t     p_parms[]);/* Array of token parameters. */
9764064216a8433360745f69edddce19a606659163The Android Open Source Project                                              /* The last array element has parameter */
9864064216a8433360745f69edddce19a606659163The Android Open Source Project                                              /* name = NULL */
9964064216a8433360745f69edddce19a606659163The Android Open Source Project
10064064216a8433360745f69edddce19a606659163The Android Open Source Project/* Monitor driver.
10164064216a8433360745f69edddce19a606659163The Android Open Source Project   Calls XX_Gets in infinite loop to get input string.
10264064216a8433360745f69edddce19a606659163The Android Open Source Project   Gives the string to console_ParseString for processing.
10364064216a8433360745f69edddce19a606659163The Android Open Source Project   Monitor token handler can call consoleStop() to exit the
10464064216a8433360745f69edddce19a606659163The Android Open Source Project   consoleStart.
10564064216a8433360745f69edddce19a606659163The Android Open Source Project*/
10664064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid consoleStart( void );
10764064216a8433360745f69edddce19a606659163The Android Open Source Project
10864064216a8433360745f69edddce19a606659163The Android Open Source Project/* Parse the given input string and exit.
10964064216a8433360745f69edddce19a606659163The Android Open Source Project   All commands in the input string are executed one by one.
11064064216a8433360745f69edddce19a606659163The Android Open Source Project*/
11164064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid console_ParseString( char *input_string );
11264064216a8433360745f69edddce19a606659163The Android Open Source Project
11364064216a8433360745f69edddce19a606659163The Android Open Source Project/* Stop monitor driver */
11464064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid consoleStop( void );
11564064216a8433360745f69edddce19a606659163The Android Open Source Project
11664064216a8433360745f69edddce19a606659163The Android Open Source Project/* Execute commands from 'script_file' */
11764064216a8433360745f69edddce19a606659163The Android Open Source Projectint consoleRunScript( char *script_file );
11864064216a8433360745f69edddce19a606659163The Android Open Source Project
11964064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef _WINDOWS
12064064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
12164064216a8433360745f69edddce19a606659163The Android Open Source Project
12264064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef __cplusplus
12364064216a8433360745f69edddce19a606659163The Android Open Source Project}
12464064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
12564064216a8433360745f69edddce19a606659163The Android Open Source Project
12664064216a8433360745f69edddce19a606659163The Android Open Source Project/* ----------------------------------------------------- */
12764064216a8433360745f69edddce19a606659163The Android Open Source Project
12864064216a8433360745f69edddce19a606659163The Android Open Source Project#define ALIAS_LEN                1
12964064216a8433360745f69edddce19a606659163The Android Open Source Project
13064064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_NAME_LEN       80
13164064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_HELP_LEN       80
13264064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_PARM_LEN       20
13364064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_NUM_OF_PARMS   30
13464064216a8433360745f69edddce19a606659163The Android Open Source Project
13564064216a8433360745f69edddce19a606659163The Android Open Source Project#define TOKEN_UP           ".."
13664064216a8433360745f69edddce19a606659163The Android Open Source Project#define TOKEN_ROOT         "/"
13764064216a8433360745f69edddce19a606659163The Android Open Source Project#define TOKEN_BREAK        "#"
13864064216a8433360745f69edddce19a606659163The Android Open Source Project#define TOKEN_HELP         "?"
13964064216a8433360745f69edddce19a606659163The Android Open Source Project#define TOKEN_DIRHELP      "help"
14064064216a8433360745f69edddce19a606659163The Android Open Source Project
14164064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef FALSE
14264064216a8433360745f69edddce19a606659163The Android Open Source Project	#define FALSE    0
14364064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
14464064216a8433360745f69edddce19a606659163The Android Open Source Project
14564064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef TRUE
14664064216a8433360745f69edddce19a606659163The Android Open Source Project	#define TRUE    1
14764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
14864064216a8433360745f69edddce19a606659163The Android Open Source Project
14964064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef __LINUX__ // TRS:WDK
15064064216a8433360745f69edddce19a606659163The Android Open Source Project	#define perror(str) printf("\nError at %s:%d  - %s.\n", __FILE__, __LINE__, (str))
15164064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* __LINUX__ */
15264064216a8433360745f69edddce19a606659163The Android Open Source Project//TRS end
15364064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef    __cplusplus
15464064216a8433360745f69edddce19a606659163The Android Open Source Project	extern "C" {
15564064216a8433360745f69edddce19a606659163The Android Open Source Project#endif   /* __cplusplus */
15664064216a8433360745f69edddce19a606659163The Android Open Source Project
15764064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef _WINDOWS /* TRS:WDK __LINUX__ */
15864064216a8433360745f69edddce19a606659163The Android Open Source Project	#ifdef ERRCHK
15964064216a8433360745f69edddce19a606659163The Android Open Source Project		# define ASSERT(p) assert(p)
16064064216a8433360745f69edddce19a606659163The Android Open Source Project	#else
16164064216a8433360745f69edddce19a606659163The Android Open Source Project		# define ASSERT(p) do {} while (0)
16264064216a8433360745f69edddce19a606659163The Android Open Source Project	#endif
16364064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TRS:WDK __LINUX__ */
16464064216a8433360745f69edddce19a606659163The Android Open Source Project
16564064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef __cplusplus
16664064216a8433360745f69edddce19a606659163The Android Open Source Project}
16764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
16864064216a8433360745f69edddce19a606659163The Android Open Source Project
16964064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum { Dir, Token } ConEntry_type_t;
17064064216a8433360745f69edddce19a606659163The Android Open Source Project
17164064216a8433360745f69edddce19a606659163The Android Open Source Project/* Parameter name and format */
17264064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef char (ParmName_t)[MAX_NAME_LEN+1];
17364064216a8433360745f69edddce19a606659163The Android Open Source Project
17464064216a8433360745f69edddce19a606659163The Android Open Source Project/* Monitor token structure */
17564064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct ConEntry_t
17664064216a8433360745f69edddce19a606659163The Android Open Source Project{
17764064216a8433360745f69edddce19a606659163The Android Open Source Project   struct ConEntry_t   *next;
17864064216a8433360745f69edddce19a606659163The Android Open Source Project   char                name[MAX_NAME_LEN+1];    /* Entry name */
17964064216a8433360745f69edddce19a606659163The Android Open Source Project   char                help[MAX_HELP_LEN+1];    /* Help string */
18064064216a8433360745f69edddce19a606659163The Android Open Source Project   char                *alias;                  /* Alias - always in upper case*/
18164064216a8433360745f69edddce19a606659163The Android Open Source Project   ConEntry_type_t     sel;                   /* Entry selector */
18264064216a8433360745f69edddce19a606659163The Android Open Source Project
18364064216a8433360745f69edddce19a606659163The Android Open Source Project   union {
18464064216a8433360745f69edddce19a606659163The Android Open Source Project      struct
18564064216a8433360745f69edddce19a606659163The Android Open Source Project      {
18664064216a8433360745f69edddce19a606659163The Android Open Source Project         struct ConEntry_t   *upper;            /* Upper directory */
18764064216a8433360745f69edddce19a606659163The Android Open Source Project         struct ConEntry_t   *first;            /* First entry */
18864064216a8433360745f69edddce19a606659163The Android Open Source Project      } dir;
18964064216a8433360745f69edddce19a606659163The Android Open Source Project      struct t_Token
19064064216a8433360745f69edddce19a606659163The Android Open Source Project      {
19164064216a8433360745f69edddce19a606659163The Android Open Source Project         FuncToken_t    f_tokenFunc;            /* Token handler */
19264064216a8433360745f69edddce19a606659163The Android Open Source Project         ConParm_t      parm[MAX_NUM_OF_PARMS]; /* Parameters array */
19364064216a8433360745f69edddce19a606659163The Android Open Source Project         ParmName_t     name[MAX_NUM_OF_PARMS]; /* Parameter name */
19464064216a8433360745f69edddce19a606659163The Android Open Source Project      } token;
19564064216a8433360745f69edddce19a606659163The Android Open Source Project   } u;
19664064216a8433360745f69edddce19a606659163The Android Open Source Project} ConEntry_t;
19764064216a8433360745f69edddce19a606659163The Android Open Source Project
19864064216a8433360745f69edddce19a606659163The Android Open Source Project/* Token types */
19964064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
20064064216a8433360745f69edddce19a606659163The Android Open Source Project{
20164064216a8433360745f69edddce19a606659163The Android Open Source Project   EmptyToken,
20264064216a8433360745f69edddce19a606659163The Android Open Source Project   UpToken,
20364064216a8433360745f69edddce19a606659163The Android Open Source Project   RootToken,
20464064216a8433360745f69edddce19a606659163The Android Open Source Project   BreakToken,
20564064216a8433360745f69edddce19a606659163The Android Open Source Project   HelpToken,
20664064216a8433360745f69edddce19a606659163The Android Open Source Project   DirHelpToken,
20764064216a8433360745f69edddce19a606659163The Android Open Source Project   NameToken
20864064216a8433360745f69edddce19a606659163The Android Open Source Project} t_TokenType;
20964064216a8433360745f69edddce19a606659163The Android Open Source Project
21064064216a8433360745f69edddce19a606659163The Android Open Source Projectchar * console_strlwr( char *s );
21164064216a8433360745f69edddce19a606659163The Android Open Source Projectint    console_stricmp( char *s1, char *s2, U16 len );
21264064216a8433360745f69edddce19a606659163The Android Open Source Projectchar * console_ltrim( char *s );
21364064216a8433360745f69edddce19a606659163The Android Open Source Project
21464064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* #ifndef tiwlan_console_h */
215