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