• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************************
2 **+--------------------------------------------------------------------------+**
3 **|                                                                          |**
4 **| Copyright 1998-2008 Texas Instruments, Inc. - http://www.ti.com/         |**
5 **|                                                                          |**
6 **| Licensed under the Apache License, Version 2.0 (the "License");          |**
7 **| you may not use this file except in compliance with the License.         |**
8 **| You may obtain a copy of the License at                                  |**
9 **|                                                                          |**
10 **|     http://www.apache.org/licenses/LICENSE-2.0                           |**
11 **|                                                                          |**
12 **| Unless required by applicable law or agreed to in writing, software      |**
13 **| distributed under the License is distributed on an "AS IS" BASIS,        |**
14 **| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |**
15 **| See the License for the specific language governing permissions and      |**
16 **| limitations under the License.                                           |**
17 **|                                                                          |**
18 **+--------------------------------------------------------------------------+**
19 *******************************************************************************/
20 
21 #include <stdio.h>
22 #include <stdlib.h>
23 
24 #ifdef _WINDOWS
25 #else /* __LINUX__ */
26 	#include <errno.h>
27 #include <unistd.h>
28 #include <sys/types.h>
29 #include <sys/stat.h>
30 #include <fcntl.h>
31 #include <sys/ioctl.h>
32 #include <sys/socket.h>
33 #include <linux/if.h>
34 #include <linux/wireless.h>
35 #include <stdarg.h>
36 #include <sys/socket.h>
37 #include <linux/in.h>
38 #include "ipc.h"
39 #include "wipp_ctrl.h"
40 #include "eth_utils.h"
41 #include "dbg_module.h"
42 #include "g_tester.h"
43 	#define LINUX_OS_FILES
44 #endif
45 
46 #define MAX_CERT_FILE_NAME_LENGTH 32
47 #define MAX_CERT_PASSWORD_LENGTH 32
48 #define MAX_CERT_USER_NAME_LENGTH 32
49 #define MAX_PSK_STRING_LENGTH       64 /* MAX string phrase is 63 chars, but hexa phrase is 64 chars excactly */
50 #define MIN_PSK_STRING_LENGTH       8  /* MIN string phrase is 8 chars */
51 
52 #include "paramOut.h"
53 #include "linux_ioctl_common.h"
54 #include "tiioctl.h"
55 #include "console.h"
56 #include "ticon.h"
57 #include "cu_cmd.h"
58 
59 #define WLAN_DEVICE_NAME	    (_T("TIWLNAPI1"))
60 
61 #ifdef EXC_MODULE_INCLUDED
62 #include "TI_AdapterEXC.h"
63 #endif /*EXC_MODULE_INCLUDED*/
64 #include "TI_AdapterApiC.h"
65 #include "TI_IPC_Api.h"
66 
67 
68 extern void osInitTable(initTable_t *InitTable);
69 
70 void quit_func(void);
71 void dummy_func(void);
72 
73 void init_extended_tools(void);
74 void deinit_extended_tools(void);
75 
76 char    g_drv_name[IFNAMSIZ + 1];
77 
78 #ifdef _WINDOWS
79 #endif /* ifdef _WINDOWS */
80 
81 #define MAX_HOST_MESSAGE_SIZE	(256)
82 
83 /************************************************************************
84  *                        console_printf_terminal		                *
85  ************************************************************************
86 DESCRIPTION: Sends a text message to host
87 
88 CONTEXT:  Any process, the 'p_shared_memory' points
89 		  to the shared memory block
90 ************************************************************************/
console_printf_terminal(const char * arg_list,...)91 int console_printf_terminal(const char *arg_list ,...)
92 {
93 #ifndef _WINDOWS /*TRS:WDK slightly different code needed for each OS*/
94 	va_list ap;
95     tiUINT8 msg[MAX_HOST_MESSAGE_SIZE];
96 	int message_length;
97 
98 	/***********************/
99 	/* Format the message */
100 	/*********************/
101 
102 	va_start(ap, arg_list);
103 	message_length = vsnprintf((char*)&msg[0], sizeof(msg), arg_list, ap);
104 
105 	/*********************************/
106 	/* Send the message to the host */
107 	/*******************************/
108 
109 	return console_send_buffer_to_host(ETHERNET_UTILS_TERMINAL_MODULE_ID, msg, message_length);
110 
111 #else /* _WINDOWS */
112 #endif /* _WINDOWS */
113 }
114 
115 #ifndef _WINDOWS
116 #define ETHERNET_PROTOCOL_PREFIX_SIZE	(3)
117 #define MUX_UART_PROTOCOL_PREFIX_SIZE	(2)
118 /************************************************************************
119  *                        console_send_buffer_to_host                   *
120  ************************************************************************
121 DESCRIPTION: Sends a text message to host
122 
123 CONTEXT:  Any process, the 'p_shared_memory' points
124 		  to the shared memory block
125 ************************************************************************/
console_send_buffer_to_host(tiUINT8 module_inedx,tiUINT8 * buffer,tiUINT16 length)126 int console_send_buffer_to_host(tiUINT8 module_inedx, tiUINT8 *buffer, tiUINT16 length)
127 {
128 	tiUINT8 output_path = SHARED_MEMORY_OUTPUT_PATH(module_inedx);
129 	tiUINT8 protocol_header[3];
130 	int return_size, ret;
131 
132 	/*****************/
133 	/* Sanity check */
134 	/***************/
135 
136 	if (output_path == OUTPUT_PATH_ETHERNET)
137 	{
138 		/***********************/
139 		/* Output to ethernet */
140 		/*********************/
141 
142 		/* Prepare the header */
143 		protocol_header[0] = 'W';					/* Ethernet protocol Prefix */
144 		protocol_header[1] = length & 0xFF;			/* Message size (first byte) */
145 		protocol_header[2] = (length >> 8) & 0xFF;	/* Message size (second byte) */
146 
147 		/* Send the header */
148 		ret = write(SHARED_MEMORY_IPC_PIPE(module_inedx), protocol_header, ETHERNET_PROTOCOL_PREFIX_SIZE);
149         if( ret <= 0 )
150         {
151             printf("\tERROR: %s() returned %d (err=%d)\n\n", __FUNCTION__, ret, errno );
152             return 0;
153         }
154 
155 		/* Send the message */
156 		ret = write(SHARED_MEMORY_IPC_PIPE(module_inedx), buffer, length);
157         if( ret <= 0 )
158         {
159             printf("\tERROR1: %s() returned %d (err=%d)\n\n", __FUNCTION__, ret, errno );
160             return 0;
161         }
162 
163 		return_size = (ETHERNET_PROTOCOL_PREFIX_SIZE + length);
164 	}
165 	else if (output_path == OUTPUT_PATH_MUX_UART)
166 	{
167 		/***********************/
168 		/* OUTPUT to mux UART */
169 		/*********************/
170 
171 		/* Write the protocol prefix */
172 		protocol_header[0] = (28 << 3);
173 		protocol_header[1] = length;
174 		fwrite(protocol_header, 1, MUX_UART_PROTOCOL_PREFIX_SIZE, stdout);
175 
176 		/* Write the message */
177 		fwrite(buffer, 1, length, stdout);
178 
179 		return_size = (MUX_UART_PROTOCOL_PREFIX_SIZE + length);
180 	}
181 	else
182 	{
183 		/*******************/
184 		/* OUTPUT to UART */
185 		/*****************/
186 
187 		/* Use the original printf function */
188 		return_size = printf("%s", buffer);
189 	}
190 
191 	return return_size;
192 }
193 #endif /* __LINUX__ */
194 
195 
196 #ifdef _WINDOWS
197 #endif /* WINDOWS */
198 
dummy_func()199 void dummy_func()
200 {
201     console_printf_terminal("1: not implemented yet!!\n");
202 }
203 
quit_func(void)204 void quit_func(void)
205 {
206     consoleStop();
207 }
208 
print_usage(char * eeprom_file_name,char * init_file_name,char * firmware_file_name)209 int print_usage(char  *eeprom_file_name, char  *init_file_name, char *firmware_file_name)
210 {
211 #ifdef _WINDOWS
212 #else
213     fprintf(stderr, "Usage: ./wlan_cu [driver_name] [options]\n");
214 #endif
215     fprintf(stderr, "   -s <filename>  - run script\n");
216     fprintf(stderr, "   -e <filename>  - eeprom image file name. Dft=%s\n", eeprom_file_name);
217     fprintf(stderr, "   -i <filename>  - init file name. Dft=%s\n", init_file_name);
218     fprintf(stderr, "   -f <filename>  - firmware image file name. Dft=%s\n",firmware_file_name);
219     fprintf(stderr, "   -b             - bypass supplicant\n");
220 #ifdef _WINDOWS
221 #endif /* ifdef _WINDOWS */
222     return 1;
223 }
224 
init_console_menu(void)225 int init_console_menu(void)
226 {
227     handle_t h, h1, h2;
228 
229     /* -------------------------------------------- Driver -------------------------------------------- */
230 
231     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "Driver",  "Driver start/stop" ) );
232         {
233             ConParm_t aaa[]  = { { "start_suppl_manager", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
234             consoleAddToken(h, "Start",  "Start driver", (FuncToken_t) cmd_start_driver, aaa );
235         }
236             consoleAddToken(h, "stoP",   "Stop driver", (FuncToken_t) cmd_stop_driver, NULL );
237             consoleAddToken(h, "stAtus", "Print status", (FuncToken_t) cmd_show_status, NULL );
238 
239     /* -------------------------------------------- Connection -------------------------------------------- */
240 
241     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "Connection",  "Connection management" ) );
242         consoleAddToken(h, "Bssid_list",  "Bssid_list", (FuncToken_t) cmd_bssid_list, NULL );
243         {
244             ConParm_t aaa[]  = { { "ssid", 	CON_PARM_STRING | CON_PARM_OPTIONAL, 0, 32, 0 },
245 								 { "bssid", CON_PARM_STRING | CON_PARM_OPTIONAL, 0, 32, 0 },
246 								CON_LAST_PARM };
247 
248             consoleAddToken(h, "Connect",  "Connect", (FuncToken_t) cmd_connect, aaa );
249         }
250         consoleAddToken(h, "Disassociate",  "disconnect", (FuncToken_t) cmd_disassociate, NULL );
251         consoleAddToken(h, "Status", "Print connection status", (FuncToken_t) cmd_show_status, NULL );
252         consoleAddToken(h, "Full_bssid_list",  "Full_bssid_list", (FuncToken_t) cmd_Full_bssid_list, NULL );
253         consoleAddToken(h, "full_Primary_bssid",  "Full_Primary_bssid", (FuncToken_t) cmd_FullPrimaryBbssid, NULL );
254 
255 
256     /* -------------------------------------------- Management -------------------------------------------- */
257 
258     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "Management",  "Station management" ) );
259         {
260             ConParm_t aaa[]  = { { "ssid", CON_PARM_LINE | CON_PARM_OPTIONAL, 0, 32, 0 }, CON_LAST_PARM };
261             consoleAddToken(h, "Ssid",  "Set prefered SSID", (FuncToken_t) cmd_modify_ssid, aaa );
262         }
263         {
264             ConParm_t aaa[]  = { { "channel", /*CON_PARM_RANGE | */CON_PARM_OPTIONAL, 0, 0/*1000*/, 0 }, CON_LAST_PARM };
265             consoleAddToken(h, "Channel",  "Set the channel", (FuncToken_t) cmd_modify_channel, aaa );
266         }
267         {
268             ConParm_t aaa[]  = { { "tx rate", CON_PARM_STRING | CON_PARM_OPTIONAL, 0, 32, 0 }, CON_LAST_PARM };
269             consoleAddToken(h, "Rate",  "Get TX data rate in Mbps (1,2,5.5,11,22)", (FuncToken_t) cmd_modify_rate, aaa );
270         }
271         {
272             ConParm_t aaa[]  = { { "BSS_type", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
273             consoleAddToken(h, "Mode",  "BSS_type", (FuncToken_t) cmd_modify_bss_type, aaa );
274         }
275         {
276             ConParm_t aaa[]  = { { "frag", /*CON_PARM_RANGE | */CON_PARM_OPTIONAL, 0/*256*/, 0/*2346*/, 0 }, CON_LAST_PARM };
277             consoleAddToken(h, "Frag",  "Set the fragmentation threshold <256..2346>", (FuncToken_t) cmd_modify_frag_threshold, aaa );
278         }
279         {
280             ConParm_t aaa[]  = { { "rts", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
281             consoleAddToken(h, "rts",  "Set RTS threshold <0..2347>", (FuncToken_t) cmd_modify_rts_threshold, aaa);
282         }
283         {
284             ConParm_t aaa[]  = { { "preamble", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 1, 0 }, CON_LAST_PARM };
285             consoleAddToken(h, "prEamble",  "Set preamble type 1=short 0=long", (FuncToken_t) cmd_modify_preamble, aaa );
286         }
287         {
288             ConParm_t aaa[]  = { { "slot", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
289             consoleAddToken(h, "sLot",  "Set short  slot", (FuncToken_t) cmd_modify_short_slot, aaa );
290         }
291             consoleAddToken(h, "Info",  "Get Selected BSSID Info", (FuncToken_t) cmd_get_selected_bssid_info, NULL );
292             consoleAddToken(h, "DriverState",  "Get Driver State", (FuncToken_t) cmd_get_driver_state, NULL );
293             consoleAddToken(h, "siGnal",  "Get Current RSSI level", (FuncToken_t) cmd_get_rsii_level, NULL );
294 			consoleAddToken(h, "snr ratiO",  "Get Current SNR radio", (FuncToken_t) cmd_get_snr_ratio, NULL );
295 
296 
297         {
298             ConParm_t aaa[]  = { { "Tx power level", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
299             consoleAddToken(h, "tX_power_level_table",  "Tx power level", (FuncToken_t) cmd_show_tx_power_level_table, aaa );
300             consoleAddToken(h, "tx_power_dBm_div10",  "Tx power level", (FuncToken_t) cmd_tx_power_dbm, aaa );
301         }
302         consoleAddToken(h, "arP ip addresses table",  "Get ARP IP address table", (FuncToken_t) cmd_get_arpIpTable, NULL);
303     consoleAddToken(h, "groUp address table",  "Get Group address table", (FuncToken_t) cmd_get_GroupAddressTable, NULL);
304 
305 
306         CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "802_11d_h",  "802_11D_H" ) );
307             {
308                     ConParm_t aaa[]  = { { "802_11_D", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
309                     ConParm_t bbb[]  = {
310                             { "min DFS channel", CON_PARM_RANGE, 0, 180, 40 },
311                             { "max DFS channel", CON_PARM_RANGE, 0, 180, 140 },
312                              CON_LAST_PARM};
313 
314                     consoleAddToken(h1, "D_enableDisable",  "enableDisable_d", (FuncToken_t) cmd_enableDisable_802_11d, aaa );
315                     consoleAddToken(h1, "H_enableDisable",  "enableDisable_h", (FuncToken_t) cmd_enableDisable_802_11h, aaa );
316                     consoleAddToken(h1, "d_Country_2_4Ie",  "d_Country_2_4Ie", (FuncToken_t) cmd_d_Country_2_4Ie, aaa );
317                     consoleAddToken(h1, "d_cOuntry_5Ie",  "d_Country_5Ie", (FuncToken_t) cmd_d_Country_5Ie, aaa );
318 
319                     consoleAddToken(h1, "dfS_range",  "DFS_range", (FuncToken_t) cmd_DFS_range, bbb );
320 
321             }
322 
323 
324                                 /* b-only, g-only, b&g mode, a-only, a&g mode b-plus-mode */
325         CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Antenna",  "tx/rx selected antenna" ) );
326             {
327                 ConParm_t aaa[]  = { { "Enable RX diversity", CON_PARM_RANGE, 0, 1, 0 },
328                                      { "RX selected antenna", CON_PARM_RANGE, 1, 2, 2 },
329                                      { "Enable TX diversity", CON_PARM_RANGE, 0, 1, 0 },
330                                      { "TX selected antenna", CON_PARM_RANGE, 1, 2, 2 },
331                                      { "Share RX and TX antennas", CON_PARM_RANGE, 0, 1, 1 },
332                                      CON_LAST_PARM };
333                 consoleAddToken(h1, "Diversityparams",  "Set antenna diversity params", (FuncToken_t) cmd_modify_antenna_diversity, aaa );
334             }
335 
336 		CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "beacoN",  "Set Beacon Filter Desired State" ) );
337             {
338                 ConParm_t beaconFilterDesiredState[]  = { { "Set Beacon Desired State", CON_PARM_OPTIONAL, 0, 0, 0 },
339                                      CON_LAST_PARM };
340                 consoleAddToken(h1, "Set Beacon Filter Desired State","Set Beacon Filter Current State", (FuncToken_t) cmd_Beacon_Filter_Set_Desired_State, beaconFilterDesiredState );
341 				consoleAddToken(h1, "Get Beacon Filter Current State","Get Beacon Filter Current State", (FuncToken_t) cmd_Beacon_Filter_Get_Desired_State, beaconFilterDesiredState );
342             }
343 
344 
345         CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "adVanced",  "Advanced params" ) );
346             {
347                 ConParm_t aaa[]  = { { "ext_rates", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
348                 consoleAddToken(h1, "Draft",  "Draft", (FuncToken_t) cmd_modify_ext_rates_ie, aaa );
349             }
350             {
351                 ConParm_t aaa[]  = { { "rates", CON_PARM_OPTIONAL | CON_PARM_LINE, 0, 120, 0 }, CON_LAST_PARM };
352                 consoleAddToken(h1, "Supported rates",  "rates", (FuncToken_t) cmd_modify_supported_rates, aaa );
353             }
354             {
355                 ConParm_t aaa[]  = { { "CtsToSelf", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 1, 0 }, CON_LAST_PARM };
356                 consoleAddToken(h1, "Cts to self",  "Enable/Disable CTS to self", (FuncToken_t) cmd_modify_ctsToSelf, aaa );
357             }
358             CHK_NULL(h2 = (handle_t) consoleAddDirExt( (handle_t) h1, "rx data Filter",  "Rx Data Filter" ) );
359                 consoleAddToken(h2, "Enable",  "Enable Rx Data Filtering", (FuncToken_t) cmd_enable_rx_data_filters, NULL );
360                 consoleAddToken(h2, "Disable",  "Enable Rx Data Filtering", (FuncToken_t) cmd_disable_rx_data_filters, NULL );
361                 {
362                     ConParm_t aaa[]  =
363                     {
364                         { "Offset", CON_PARM_RANGE, 0, 255, 0 },
365                         { "Mask", CON_PARM_STRING, 0, 64, 0 },
366                         { "Pattern", CON_PARM_STRING, 0, 128, 0 },
367                         CON_LAST_PARM
368                     };
369                     consoleAddToken(h2, "Add",  "Add Rx Data Filter", (FuncToken_t) cmd_add_rx_data_filter, aaa );
370                 }
371                 {
372                     ConParm_t aaa[]  =
373                     {
374                         { "Offset", CON_PARM_RANGE, 0, 255, 0 },
375                         { "Mask", CON_PARM_STRING, 0, 64, 0 },
376                         { "Pattern", CON_PARM_STRING, 0, 128, 0 },
377                         CON_LAST_PARM
378                     };
379                     consoleAddToken(h2, "Remove",  "Remove Rx Data Filter", (FuncToken_t) cmd_remove_rx_data_filter, aaa );
380                 }
381                 consoleAddToken(h2, "Statistics",  "Print Rx Data Filtering Statistics", (FuncToken_t) cmd_get_rx_data_filters_statistics, NULL );
382 
383     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "Show",  "Show params" ) );
384         consoleAddToken(h, "Statistics",  "Show statistics", (FuncToken_t) cmd_show_statistics, NULL );
385 		{
386 			ConParm_t aaa[]  = { { "Clear stats on read", CON_PARM_OPTIONAL | CON_PARM_RANGE, 0, 1, 0 }, CON_LAST_PARM };
387 			consoleAddToken(h, "Tx statistics",  "Show tx statistics", (FuncToken_t) cmd_show_tx_statistics, aaa );
388 		}
389 		consoleAddToken(h, "Advanced",  "Show advanced params", (FuncToken_t) cmd_show_advanced_params, NULL );
390 
391         consoleAddToken(h, "Power consumption",  "Show power consumption statistics", (FuncToken_t) cmd_show_power_consumption_stats, NULL );
392 
393         /* -------------------------------------------- Privacy -------------------------------------------- */
394 
395         CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "Privacy",  "Privacy configuration" ) );
396             {
397                 ConParm_t aaa[]  = { { "mode", CON_PARM_OPTIONAL, 0, 0, 0 },CON_LAST_PARM };
398                 consoleAddToken(h, "Authentication",  "Set authentication mode",
399                             (FuncToken_t)cmd_privacy_auth, aaa );
400             }
401             {
402                 ConParm_t aaa[]  = { { "type", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
403                 consoleAddToken(h, "EAP",  "Set EAP type", (FuncToken_t)cmd_privacy_eap, aaa );
404             }
405             {
406                 ConParm_t aaa[]  = { { "type", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
407                 consoleAddToken(h, "encRyption",  "Set Encryption type", (FuncToken_t)cmd_privacy_encrypt, aaa);
408             }
409 
410             {
411                 ConParm_t aaa[]  = { { "type", 0, 0, 0, 0 }, CON_LAST_PARM };
412                 consoleAddToken(h, "Keytype",  "Set key type", (FuncToken_t) cmd_privacy_key_type, aaa );
413             }
414 
415             {
416                 ConParm_t aaa[]  = { { "mode", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
417                 consoleAddToken(h, "Mixedmode",  "Set mixed mode", (FuncToken_t) cmd_privacy_mixed_mode, aaa );
418             }
419 
420             {
421                 ConParm_t aaa[]  = {
422                     { "User:", CON_PARM_STRING, 0, MAX_CERT_USER_NAME_LENGTH, 0 },
423                     { "Password:", CON_PARM_STRING | CON_PARM_OPTIONAL, 0, MAX_CERT_PASSWORD_LENGTH , 0 },
424                     CON_LAST_PARM };
425                 consoleAddToken(h, "Credentials",  "Set Credentials ", (FuncToken_t)cmd_privacy_credent, aaa);
426             }
427             {
428 				ConParm_t aaa[]  =
429                     {
430                         { "Passphrase", CON_PARM_STRING, MIN_PSK_STRING_LENGTH, MAX_PSK_STRING_LENGTH, 0},
431                         { "key type (hex | text) [text]", CON_PARM_OPTIONAL | CON_PARM_STRING, 0, 5, 0},
432                         CON_LAST_PARM
433                     };
434                 consoleAddToken(h, "PSKPassphrase",  "Set PSK Passphrase", (FuncToken_t)cmd_privacy_PSKPassphrase, aaa );
435             }
436 #ifdef _WINDOWS  // TRS:HLC certificate hash for Windows
437 #else
438             {
439                 ConParm_t aaa[]  = { { "Certificate Name:", CON_PARM_STRING, 0, MAX_CERT_FILE_NAME_LENGTH, 0 },
440                 { "Validate (yes - 1 /no - 0):", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
441                 consoleAddToken(h, "cerTificate",  "Set Certificate",(FuncToken_t)cmd_privacy_certificate, aaa);
442 
443             }
444 #endif
445             {
446                 ConParm_t aaa[]  = { { "option", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
447                 consoleAddToken(h, "wpa_Options",  "Set WPA options", (FuncToken_t)cmd_privacy_wpa_options, aaa );
448             }
449             CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Wep",  "Wep" ) );
450                 {
451                     ConParm_t aaa[]  =
452                     {
453                         { "Key Value", CON_PARM_STRING, 0, 64, 0},
454                         { "Tx Key Index", 0, 0, 0, 0 },
455                         { "Default Key (yes - 1 /no - 0)", 0, 0, 0, 0 },
456                         { "key type (hex | text) [hex]", CON_PARM_OPTIONAL | CON_PARM_STRING, 0, 5, 0},
457                         CON_LAST_PARM
458                     };
459                     consoleAddToken(h1, "Add",  "Add WEP", (FuncToken_t)cmd_privacy_addkey, aaa );
460                 }
461                 {
462                     ConParm_t aaa[]  = { { "Key Index", 0, 0, 0, 0 }, CON_LAST_PARM };
463                     consoleAddToken(h1, "Remove",  "Remove WEP", (FuncToken_t)cmd_privacy_removekey, aaa);
464                 }
465                 consoleAddToken(h1, "Get Default Key ID",  "Get Default Key ID", (FuncToken_t)cmd_privacy_getdefaultkey, NULL);
466 
467 
468 #ifdef EXC_MODULE_INCLUDED
469             add_EXC_menu( h );
470 #endif/*EXC_MODULE_INCLUDED*/
471 
472     /* -------------------------------------------- Scan -------------------------------------------- */
473 
474     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "scAn",  "Scan Service Configuration" ) );
475         consoleAddToken(h, "Start",  "Start Application Scan", (FuncToken_t) cmd_Scan_Start, NULL );
476         consoleAddToken(h, "sTop",  "Stop Application Scan", (FuncToken_t) cmd_Scan_Stop, NULL );
477         CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "configApp",  "Configure Application Scan Params" ) );
478         {
479             ConParm_t aaa[]  = {
480                     { "SSID", CON_PARM_STRING, 0, 33, 0 },
481 #ifdef TI_DBG /* limitn application scan to normal only in release version */
482                     { "Scan Type", CON_PARM_RANGE, SCAN_TYPE_NORMAL_PASSIVE, SCAN_TYPE_TRIGGERED_ACTIVE, 0 },
483 #else
484                     { "Scan Type", CON_PARM_RANGE, SCAN_TYPE_NORMAL_PASSIVE, SCAN_TYPE_NORMAL_ACTIVE, 0 },
485 #endif
486                     { "Band", CON_PARM_RANGE, 0, 1, 0 },
487                     { "Probe Request Number", CON_PARM_RANGE, 0, 255, 0 },
488                     { "Probe Request Rate", CON_PARM_RANGE, 0, DRV_RATE_MASK_54_OFDM, 0 },
489 
490 #ifdef TI_DBG
491                     { "Tid", CON_PARM_RANGE, 0, 255, 0 },
492 #endif
493                     { "Number of Channels", CON_PARM_RANGE, 0, 16, 0 },
494                     CON_LAST_PARM };
495             consoleAddToken(h1, "Global",  "Config Global Params", (FuncToken_t) cmd_Scan_app_global_config, aaa );
496         }
497         {
498             ConParm_t aaa[]  = {
499                     { "Index", CON_PARM_RANGE, 0, 30, 0 },
500                     { "BSSID (xx:xx:xx:xx:xx:xx)", CON_PARM_STRING, 0, 18, 0 },
501                     { "Max Dwell Time", CON_PARM_RANGE, 0, 100000000, 0 },
502                     { "Min Dwell Time", CON_PARM_RANGE, 0, 100000000, 0 },
503                     { "ET Condition", CON_PARM_RANGE, SCAN_ET_COND_DISABLE, SCAN_ET_COND_ANY_FRAME, 0 },
504                     { "ET Frame Number", CON_PARM_RANGE, 0, 255, 0 },
505                     { "TX power level", CON_PARM_RANGE, 0, MAX_TX_POWER, 0 },
506                     { "Channel Number", CON_PARM_RANGE, 0, 255, 0 },
507                     CON_LAST_PARM };
508             consoleAddToken(h1, "Channel",  "Config Channel Params", (FuncToken_t) cmd_Scan_app_channel_config, aaa );
509         }
510         consoleAddToken(h1, "cLear",  "Clear All Params", (FuncToken_t) cmd_Scan_app_clear, NULL );
511         consoleAddToken(h1, "Display",  "Display Params", (FuncToken_t) cmd_Scan_app_display, NULL );
512 
513         CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "configPolicy",  "Configure scan manager scan policy" ) );
514         {
515             ConParm_t aaa[]  = {
516                     { "Normal scan interval (msec)", CON_PARM_RANGE, 0, 3600000, 5000 },
517                     { "Deteriorating scan interval", CON_PARM_RANGE, 0, 3600000, 3000 },
518                     { "Max Track Failures", CON_PARM_RANGE, 0, 20, 3 },
519                     { "BSS list size", CON_PARM_RANGE, 0, 16, 8 },
520                     { "BSS Number to start discovery", CON_PARM_RANGE, 0, 16, 4 },
521                     { "Number of bands", CON_PARM_RANGE, 0, 2, 1 },
522                      CON_LAST_PARM };
523             consoleAddToken(h1, "Gloabal",  "Set Global policy Params", (FuncToken_t) cmd_Scan_policy_global_config, aaa );
524         }
525 
526             CHK_NULL(h2 = (handle_t) consoleAddDirExt( (handle_t) h1, "Band",  "Configure band scan policy" ) );
527             {
528                 ConParm_t aaa[]  = {
529                         { "Index", CON_PARM_RANGE, 0, 1, 0 },
530                         { "Band", CON_PARM_RANGE, 0, 1, 0 },
531                         { "RSSI threshold", CON_PARM_RANGE| CON_PARM_SIGN, -100, 0, 0 },
532                         { "Channel number for discovery cycle", CON_PARM_RANGE, 0, 30, 5 },
533                         { "Number of Channels", CON_PARM_RANGE, 0, 30, 0 },
534                          CON_LAST_PARM };
535                 consoleAddToken(h2, "Misc",   "Set misc band params",  (FuncToken_t) cmd_Scan_band_global_config, aaa );
536             }
537             {
538                 ConParm_t aaa[]  = {
539                         { "Band Index", CON_PARM_RANGE, 0, 1, 0 },
540                         { "Channel Index", CON_PARM_RANGE, 0, 29, 0 },
541                         { "Channel", CON_PARM_RANGE, 0, 160, 0 },
542                          CON_LAST_PARM };
543                 consoleAddToken(h2, "Channel",   "Set Channel params",  (FuncToken_t) cmd_Scan_band_channel_config, aaa );
544             }
545             {
546                 ConParm_t aaa[]  = {
547                         { "Band Index", CON_PARM_RANGE, 0, 1, 0 },
548                         { "Scan Type", CON_PARM_RANGE, 0, 5, 0 },
549                         { "ET event", CON_PARM_RANGE, SCAN_ET_COND_DISABLE, SCAN_ET_COND_ANY_FRAME, SCAN_ET_COND_DISABLE },
550                         { "ET num of frames", CON_PARM_RANGE, 0, 255,0 },
551                         { "Triggering AC", CON_PARM_RANGE, 0, 255, 0 },
552                         { "Scan Duration (SPS)", CON_PARM_RANGE, 0, 100000000, 2000 },
553                         { "Max dwell time", CON_PARM_RANGE, 0, 100000000, 60000 },
554                         { "Min dwell time", CON_PARM_RANGE, 0, 100000000, 30000 },
555                         { "Probe req. number", CON_PARM_RANGE, 0, 255, 2 },
556 
557                         { "Probe req. rate", CON_PARM_RANGE, 0, DRV_RATE_MASK_54_OFDM, 0 },
558 
559                         { "TX power level", CON_PARM_RANGE, 0, MAX_TX_POWER, 0 },
560                          CON_LAST_PARM };
561                 consoleAddToken(h2, "Track",   "Set tracking method params",  (FuncToken_t) cmd_Scan_band_track_config, aaa );
562             }
563             {
564                 ConParm_t aaa[]  = {
565                         { "Band Index", CON_PARM_RANGE, 0, 1, 0 },
566                         { "Scan Type", CON_PARM_RANGE, 0, 5, 0 },
567                         { "ET event", CON_PARM_RANGE, SCAN_ET_COND_DISABLE, SCAN_ET_COND_ANY_FRAME, SCAN_ET_COND_DISABLE },
568                         { "ET num of frames", CON_PARM_RANGE, 0, 255,0 },
569                         { "Triggering AC", CON_PARM_RANGE, 0, 255, 0 },
570                         { "Scan Duration (SPS)", CON_PARM_RANGE, 0, 100000000, 2000 },
571                         { "Max dwell time", CON_PARM_RANGE, 0, 100000000, 60000 },
572                         { "Min dwell time", CON_PARM_RANGE, 0, 100000000, 30000 },
573                         { "Probe req. number", CON_PARM_RANGE, 0, 255, 2 },
574 
575                         { "Probe req. rate", CON_PARM_RANGE, 0, DRV_RATE_MASK_54_OFDM, 0 },
576 
577                         { "TX power level", CON_PARM_RANGE, 0, MAX_TX_POWER, 0 },
578                          CON_LAST_PARM };
579                 consoleAddToken(h2, "Discovery",   "Set Discovery method params",  (FuncToken_t) cmd_Scan_band_discover_config, aaa );
580             }
581             {
582                 ConParm_t aaa[]  = {
583                         { "Band Index", CON_PARM_RANGE, 0, 1, 0 },
584                         { "Scan Type", CON_PARM_RANGE, 0, 5, 0 },
585                         { "ET event", CON_PARM_RANGE, SCAN_ET_COND_DISABLE, SCAN_ET_COND_ANY_FRAME, SCAN_ET_COND_DISABLE },
586                         { "ET num of frames", CON_PARM_RANGE, 0, 255,0 },
587                         { "Triggering AC", CON_PARM_RANGE, 0, 255, 0 },
588                         { "Scan Duration (SPS)", CON_PARM_RANGE, 0, 100000000, 2000 },
589                         { "Max dwell time", CON_PARM_RANGE, 0, 100000000, 60000 },
590                         { "Min dwell time", CON_PARM_RANGE, 0, 100000000, 30000 },
591                         { "Probe req. number", CON_PARM_RANGE, 0, 255, 2 },
592 
593                         { "Probe req. rate", CON_PARM_RANGE, 0, DRV_RATE_MASK_54_OFDM, 0 },
594 
595                         { "TX power level", CON_PARM_RANGE, 0, MAX_TX_POWER, 0 },
596                          CON_LAST_PARM };
597                 consoleAddToken(h2, "Immediate",   "Set Immediate method params",  (FuncToken_t) cmd_Scan_band_immed_config, aaa );
598             }
599 
600 
601         consoleAddToken(h1, "Display",  "Display Policy Params", (FuncToken_t) cmd_Scan_policy_display, NULL );
602         consoleAddToken(h1, "Clear",  "Clear Polciy Params", (FuncToken_t) cmd_Scan_policy_clear, NULL );
603         consoleAddToken(h1, "Store",  "Send policy to scan manager", (FuncToken_t) cmd_Scan_policy_store, NULL );
604         consoleAddToken(h1, "bsslisT", "Display BSS list", (FuncToken_t) cmd_Scan_get_bss_list, NULL );
605 
606 
607 	/************ ROAMING manager commands - start  ********************/
608     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "roaminG",  "Roaming Manager configuration" ) );
609 	consoleAddToken(h, "Enable",  "Enable Internal Roaming", (FuncToken_t) cmd_Roaming_enable, NULL );
610 	consoleAddToken(h, "Disable",  "Disable Internal Roaming", (FuncToken_t) cmd_Roaming_disable, NULL );
611 	{
612 		ConParm_t aaa[]  = {
613 				{ "Low pass filter time", CON_PARM_DEFVAL, 0, 1440, 30 }, CON_LAST_PARM };
614 		consoleAddToken(h, "Low pass filter",  "Time in sec ", (FuncToken_t) cmd_Roaming_lowPassFilter, aaa );
615 	}
616 	{
617 		ConParm_t aaa[]  = {
618 				{ "Quality threshold", CON_PARM_DEFVAL | CON_PARM_SIGN, -150, 0, -100 }, CON_LAST_PARM };
619 		consoleAddToken(h, "Quality threshold",  "Quality indicator", (FuncToken_t) cmd_Roaming_qualityIndicator, aaa );
620 	}
621 
622 	consoleAddToken(h, "Get ",  "Get Roaming config params ", (FuncToken_t) cmd_Roaming_getConfParams, NULL );
623 
624     CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Thresholds",  "Set Roaming MNGR triggers thresholds" ) );
625 	{
626 		ConParm_t aaa[]  = {
627 				{ "Tx retry", CON_PARM_DEFVAL, 0, 255, 20 }, CON_LAST_PARM };
628 		consoleAddToken(h1, "Tx retry ",  "Consecutive number of TX retries", (FuncToken_t) cmd_Roaming_dataRetryThreshold, aaa );
629 	}
630 	{
631 		ConParm_t aaa[]  = {
632 				{ "Bss loss", CON_PARM_DEFVAL, 1, 255, 4 }, CON_LAST_PARM };
633 		consoleAddToken(h1, "Bss loss ",  "Number of TBTTs", (FuncToken_t) cmd_Roaming_numExpectedTbttForBSSLoss, aaa );
634 	}
635 	{
636 		ConParm_t aaa[]  = {
637 				{ "tx Rate threshold", CON_PARM_DEFVAL, 0, 54, 2 }, CON_LAST_PARM };
638 				consoleAddToken(h1, "tx Rate threshold ",  "TX rate (fallback) threshold", (FuncToken_t) cmd_Roaming_txRateThreshold, aaa );
639 	}
640 	{
641 		ConParm_t aaa[]  = {
642 				{ "Low rssi threshold", CON_PARM_DEFVAL | CON_PARM_SIGN, -150, 0, -80 }, CON_LAST_PARM };
643 
644 				consoleAddToken(h1, "Low rssi threshold ",  "Low RSSI threshold", (FuncToken_t) cmd_Roaming_lowRssiThreshold, aaa );
645 	}
646 	{
647 		ConParm_t aaa[]  = {
648 				{ "low Snr threshold", CON_PARM_DEFVAL, 0, 255, 10 }, CON_LAST_PARM };
649 		consoleAddToken(h1, "low Snr threshold ",  "Low SNR threshold", (FuncToken_t) cmd_Roaming_lowSnrThreshold, aaa );
650 	}
651 	{
652 		ConParm_t aaa[]  = {
653 				{ "low Quality for scan", CON_PARM_DEFVAL | CON_PARM_SIGN, -150, -40, -85 }, CON_LAST_PARM };
654 				consoleAddToken(h1, "low Quality for scan ",  "Increase the background scan", (FuncToken_t) cmd_Roaming_lowQualityForBackgroungScanCondition, aaa );
655 	}
656 	{
657 		ConParm_t aaa[]  = {
658 				{ "Normal quality for scan", CON_PARM_DEFVAL | CON_PARM_SIGN, -150, -40, -70 }, CON_LAST_PARM };
659 				consoleAddToken(h1, "Normal Quality for scan ",  "Reduce the background scan", (FuncToken_t) cmd_Roaming_normalQualityForBackgroungScanCondition, aaa );
660 	}
661 	{
662 		ConParm_t aaa[]  = {
663 				{ "Rssi filter weight", CON_PARM_DEFVAL, 0, 100, 10 }, CON_LAST_PARM };
664 				consoleAddToken(h1, "rssI filter weight ",  "Set weight for the last RSSI value in the AVG calculation", (FuncToken_t) cmd_Roaming_rssiFilterWeight, aaa );
665 	}
666 	{
667 		ConParm_t aaa[]  = {
668 				{ "Snr filter weight", CON_PARM_DEFVAL, 0, 100, 10 }, CON_LAST_PARM };
669 				consoleAddToken(h1, "snr Filter weight ",  "Set weight for the last SNR value in the AVG calculation", (FuncToken_t) cmd_Roaming_snrFilterWeight, aaa );
670 	}
671 
672 	/************ ROAMING manager commands - end  ********************/
673 
674     /* -------------------------------------------- QOS -------------------------------------------- */
675 
676 
677     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "qOs",  "Quality of service" ) );
678 
679 		CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Upsd",  "UPSD Sub-menu" ) );
680         {       ConParm_t TspecParams[]  = {
681                 { "UserPriority", CON_PARM_RANGE, 0, 7, 1  },
682                 { "NominalMSDUsize", CON_PARM_RANGE, 1, 2312, 1  },
683                 { "MeanDataRate (Bps units)", CON_PARM_RANGE, 0, 54000000, 0 },
684                 { "MinimumPHYRate (Mbps units)", CON_PARM_RANGE , 0, 54, 0  },
685                 { "SurplusBandwidthAllowance", CON_PARM_RANGE , 0, 7, 0 },
686                 { "UPSD Mode (0 - Legacy, 1 - U-APSD)", CON_PARM_RANGE , 0, 1, 0 },
687                     CON_LAST_PARM };
688                 consoleAddToken(h1, "Add",  "Add TSPEC", (FuncToken_t) cmd_add_tspec, TspecParams );
689         }
690         {
691             ConParm_t UPid[]  = { { "User priority", CON_PARM_RANGE, 0, 7, 1  }, CON_LAST_PARM };
692             consoleAddToken(h1, "Get",  "Get TSPEC Params", (FuncToken_t) cmd_get_tspec_params, UPid );
693         }
694         {
695             ConParm_t UPid[]  = { { "UserPriority", CON_PARM_RANGE, 0, 7, 1  },
696                                   { "ReasonCode", CON_PARM_RANGE, 32, 45, 32  }, CON_LAST_PARM };
697             consoleAddToken(h1, "Delete",  "Delete TSPEC", (FuncToken_t) cmd_delete_tspec, UPid );
698         }
699 
700         consoleAddToken(h1, "aP params", "Get AP QoS parameters", (FuncToken_t) cmd_get_ap_qos_params, NULL );
701         consoleAddToken(h1, "ap Capabilities", "Get AP QoS capabilities parameters", (FuncToken_t) cmd_get_ap_qos_capabilities, NULL );
702 
703         {
704             ConParm_t ACid[]  = { { "AC", CON_PARM_RANGE, 0, 3, 3  }, CON_LAST_PARM };
705             consoleAddToken(h1, "ac Status", "Get Current AC Status", (FuncToken_t) cmd_get_ac_status, ACid );
706         }
707 
708             {
709                 ConParm_t MediumUsageParams[]  = {
710                     { "AC", CON_PARM_RANGE, 0, 3, 3  },
711                     { "HighThreshold", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 100, 1  },
712                     { "LowThreshold", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 100, 1 },
713                      CON_LAST_PARM };
714                     consoleAddToken(h1, "Medium usage", "Medium usage threshold", (FuncToken_t) cmd_medium_usage_threshold, MediumUsageParams );
715             }
716             {
717                 ConParm_t PhyRateParams[]  = {
718                     { "AC", CON_PARM_RANGE, 0, 3, 3  },
719                     { "HighThreshold", CON_PARM_RANGE | CON_PARM_OPTIONAL, 1, 54, 1  },
720                     { "LowThreshold", CON_PARM_RANGE | CON_PARM_OPTIONAL, 1, 54, 1 },
721                      CON_LAST_PARM };
722                     consoleAddToken(h1, "phy Rate", "PHY rate threshold", (FuncToken_t) cmd_phy_rate_threshold, PhyRateParams );
723             }
724         consoleAddToken(h1, "dEsired ps mode", "Get desired PS mode", (FuncToken_t) cmd_get_desired_ps_mode, NULL );
725 
726     CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Classifier",  "Classifier sub-menu" ) );
727         {
728             ConParm_t aaa[]  = {{ "con0 Port = ", CON_PARM_RANGE, 0, 65535, 0  },
729                                 { "con0 Pri = ", CON_PARM_RANGE, 0, 7, 0  },
730                                 { "con1 Port = ", CON_PARM_RANGE, 0, 65535, 0  },
731                                 { "con1 Pri = ", CON_PARM_RANGE, 0, 7, 0  },
732                                 { "con2 Port = ", CON_PARM_RANGE, 0, 65535, 0  },
733                                 { "con2 Pri = ", CON_PARM_RANGE, 0, 7, 0  },
734                                 { "con3 Port = ", CON_PARM_RANGE, 0, 65535, 0  },
735                                 { "con3 Pri = ", CON_PARM_RANGE, 0, 7, 0  },
736                                 { "cons Ip1 = ", CON_PARM_RANGE, 0,255 , 0   },
737                                 { "cons Ip2 = ", CON_PARM_RANGE, 0,255 , 0   },
738                                 { "cons Ip3 = ", CON_PARM_RANGE, 0,255 , 0   },
739                                 { "cons Ip4 = ", CON_PARM_RANGE, 0,255 , 0   },
740                                 CON_LAST_PARM };
741             consoleAddToken(h1, "TxClassifier", "Config Tx Classifier", (FuncToken_t) cmd_config_tx_classifier, aaa );
742         }
743 
744         {       ConParm_t aaa[]  = {
745                 { "Type", CON_PARM_RANGE, DSCP_CLSFR, CLSFR_TYPE_MAX, 0  },
746                 { "D-Tag", CON_PARM_RANGE, CLASSIFIER_DTAG_MIN, CLASSIFIER_DTAG_MAX, CLASSIFIER_DTAG_DEF  },
747                 { "Param1", CON_PARM_RANGE, 0, 65535, 0 },
748                 { "Ip1", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0  },
749                 { "Ip2", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
750                 { "Ip3", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
751 				{ "Ip4", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
752                     CON_LAST_PARM };
753                 consoleAddToken(h1, "Insert ",  "Insert new classification entry", (FuncToken_t) cmd_insert_clsfr_entry, aaa );
754         }
755 
756         {       ConParm_t aaa[]  = {
757                 { "Type", CON_PARM_RANGE, DSCP_CLSFR, CLSFR_TYPE_MAX, 0  },
758                 { "D-Tag", CON_PARM_RANGE, CLASSIFIER_DTAG_MIN, CLASSIFIER_DTAG_MAX, CLASSIFIER_DTAG_DEF  },
759                 { "Param1", CON_PARM_RANGE, 0, 65535, 0 },
760                 { "Ip1", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0  },
761                 { "Ip2", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
762                 { "Ip3", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
763 				{ "Ip4", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
764                     CON_LAST_PARM };
765                 consoleAddToken(h1, "Remove",  "Remove classification entry", (FuncToken_t) cmd_remove_clsfr_entry, aaa );
766         }
767 
768        {
769             ConParm_t aaa[]  = {
770             { "acID", CON_PARM_RANGE, 0, 3, 0  },
771             { "MaxLifeTime", CON_PARM_RANGE , 0, 1024, 0  },
772             { "Reserved and ignored (ShortMaxRetries)", CON_PARM_RANGE , 0, 255, 0 },
773             { "Reserved and ignored (LongMaxRetries)", CON_PARM_RANGE , 0, 255, 0 },
774             { "Reserved and ignored (RxTimeout)", CON_PARM_RANGE , 0, 65535, 0  },
775             { "Voice delivery Protocol (VO QUEUE ONLY : 0 - None, 1 - PS POLL)", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 1, 0 },
776 			{ "PS Delivery Protocol (1 - U-APSD, 2 - Legacy)", CON_PARM_RANGE | CON_PARM_OPTIONAL, 1 /*PS_SCHEME_UPSD_TRIGGER*/, 2/*PS_SCHEME_LEGACY_PSPOLL*/, 2/*PS_SCHEME_LEGACY_PSPOLL*/},
777                 CON_LAST_PARM };
778             consoleAddToken(h, "QosParams ",  "Set QOS Parameters", (FuncToken_t) cmd_set_qos_params, aaa );
779         }
780 
781         {
782             ConParm_t aaa[]  = {
783             { "dtag0_to_ac", CON_PARM_RANGE, 0, 3, 0  },
784             { "dtag1_to_ac", CON_PARM_RANGE, 0, 3, 0  },
785             { "dtag2_to_ac", CON_PARM_RANGE, 0, 3, 0  },
786             { "dtag3_to_ac", CON_PARM_RANGE, 0, 3, 0  },
787             { "dtag4_to_ac", CON_PARM_RANGE, 0, 3, 0  },
788             { "dtag5_to_ac", CON_PARM_RANGE, 0, 3, 0  },
789             { "dtag6_to_ac", CON_PARM_RANGE, 0, 3, 0  },
790             { "dtag7_to_ac", CON_PARM_RANGE, 0, 3, 0  },
791                 CON_LAST_PARM };
792             consoleAddToken(h, "Set_dtag2ac_mapping_table ",  "Set dtag2ac mapping table", (FuncToken_t) cmd_set_dtag_to_ac_mapping_table, aaa );
793         }
794 
795         {
796             ConParm_t aaa[]  = {
797             { "Enable", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 1, 0  },
798             { "vadTimerDuration", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 100, 0  },
799                 CON_LAST_PARM };
800             consoleAddToken(h, "setVad ",  "Set VAD", (FuncToken_t) cmd_set_vad, aaa );
801         }
802         {
803             ConParm_t aaa[]  = { { "AC", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 3, 3  }, CON_LAST_PARM };
804             consoleAddToken(h, "Poll AP packets", "Poll Ap Packets", (FuncToken_t) cmd_poll_ap_packets, aaa );
805         }
806 
807 		{
808             ConParm_t aaa[]  = {
809             { "PsPoll", CON_PARM_RANGE, 0, 65000, 0  },
810             { "UPSD", CON_PARM_RANGE , 0, 65000, 0  },
811                 CON_LAST_PARM };
812             consoleAddToken(h, "Rx TimeOut ",  "Rx TimeOut ", (FuncToken_t) cmd_set_rxTimeOut_params, aaa );
813         }
814 		{
815             ConParm_t aaa[]  = {
816             { "MaxRxLifeTime", CON_PARM_OPTIONAL|CON_PARM_RANGE, 0, 0xffffffff, 0  },
817                 CON_LAST_PARM };
818             consoleAddToken(h, "Max Rx Lifetime",  "Max Rx Lifetime", (FuncToken_t) cmd_MaxRxLifetime_params, aaa );
819         }
820 
821 
822 
823 
824 
825         /* -------------------------------------------- Power Management -------------------------------------------- */
826 
827     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "poWer",  "Power Management" ) );
828         {
829             	/* Set Power Mode Command */
830             	ConParm_t powerModeCmd[]  = {
831                     { "PowerMode", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 3, 1 }, /* Min/Max/Def */
832                     CON_LAST_PARM };
833             	consoleAddToken(h, "set_Power_mode",  "Set user power mode", (FuncToken_t) cmd_set_power_mode, powerModeCmd );
834 
835         }
836         {
837 		/* Set Power Save Power level Command */
838             	ConParm_t powerSavePowerLevelCmd[]  = {
839                     { "PowerSavePowerLevel", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 2, 2 }, /* Min/Max/Def */
840                     CON_LAST_PARM };
841             consoleAddToken(h, "set_powersave_powerLevel",  "Set the Power level during PowerSave", (FuncToken_t) cmd_set_PowerSave_PowerLevel, powerSavePowerLevelCmd );
842 
843         }
844 		{
845 		/* Set default Power level Command */
846             	ConParm_t defaultPowerLevelCmd[]  = {
847                     { "DefaultPowerLevel", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 2, 2 }, /* Min/Max/Def */
848                     CON_LAST_PARM };
849             consoleAddToken(h, "set_deFault_powerlevel",  "Set the default power level", (FuncToken_t) cmd_set_Default_PowerLevel, defaultPowerLevelCmd );
850 
851         }
852 		{
853 		/* Set doze mode in auto power mode */
854             	ConParm_t powerSaveDozeMode[]  = {
855                     { "DozeModeInAuto", CON_PARM_RANGE | CON_PARM_OPTIONAL, AUTO_POWER_MODE_DOZE_MODE_MIN_VALUE, AUTO_POWER_MODE_DOZE_MODE_MAX_VALUE, AUTO_POWER_MODE_DOZE_MODE_DEF_VALUE },
856                     CON_LAST_PARM };
857             consoleAddToken(h, "set_doZe_mode_in_auto",  "Set doze mode in auto power mode", (FuncToken_t) cmd_set_DozeModeInAutoPowerLevel, powerSaveDozeMode );
858 
859         }
860         {
861             ConParm_t TrafficIntensityParams[]  = {
862                 { "HighThreshold (packets/sec)", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 1000, 100  },
863                 { "LowThreshold (packets/sec)", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 1000, 25 },
864                 { "CheckInterval (ms)", CON_PARM_RANGE | CON_PARM_OPTIONAL, 100, 10000, 1000 },
865                  CON_LAST_PARM };
866                 consoleAddToken(h, "traffic_Thresholds", "Set/Get traffic intensity thresholds", (FuncToken_t) cmd_traffic_intensity_threshold, TrafficIntensityParams );
867         }
868          consoleAddToken(h, "eNable",  "enable traffic intensity events", (FuncToken_t) cmd_enable_traffic_events, NULL );
869          consoleAddToken(h, "Disable",  "disable traffic intensity events", (FuncToken_t) cmd_disable_traffic_events, NULL );
870 
871        /* -------------------------------------------- Events -------------------------------------------- */
872 
873     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "eVents",  "Events" ) );
874         {
875             ConParm_t aaa[]  = { { "type", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
876             consoleAddToken(h, "Register",  "IPC events", (FuncToken_t)cmd_events_register, aaa);
877         }
878         {
879             ConParm_t aaa[]  = { { "type", CON_PARM_OPTIONAL, 0, 0, 0 }, CON_LAST_PARM };
880             consoleAddToken(h, "Unregister",  "IPC events", (FuncToken_t)cmd_events_unregister, aaa);
881         }
882     CHK_NULL(h = (handle_t) consoleAddDirExt( NULL, "File",  "restore configuration" ) );
883         {
884             ConParm_t aaa[]  = { { "filename", CON_PARM_STRING, 0, 128, 0 }, CON_LAST_PARM };
885             consoleAddToken(h, "Load",  "Load profile", (FuncToken_t) cmd_file_load, aaa );
886         }
887 
888     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "Bt CoExsistance",  "BT - Wlan CoExsistance" ) );
889         {
890 			ConParm_t aaa[]  = { { "enable", CON_PARM_RANGE | CON_PARM_OPTIONAL,
891 								SOFT_GEMINI_ENABLED_MIN, SOFT_GEMINI_ENABLED_MAX, 0 }, CON_LAST_PARM };
892             consoleAddToken(h, "Enable", "Enable BT Coexistense", (FuncToken_t) cmd_bt_coe_enable, aaa );
893         }
894         {
895 			ConParm_t aaa[]  = { { "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
896 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
897 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
898 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
899 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
900 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
901 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
902 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
903 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
904 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
905 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
906 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
907 								{ "rate", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 255, 0 },
908 								CON_LAST_PARM };
909             consoleAddToken(h, "Rate", "Select Rates", (FuncToken_t) cmd_bt_coe_rate, aaa );
910         }
911 		{
912             ConParm_t aaa[]  = {
913 							{ "wlanRxMinRateToRespectBtHp", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
914 							SOFT_GEMINI_PARAMS_WLAN_RX_MIN_RATE_MIN , SOFT_GEMINI_PARAMS_WLAN_RX_MIN_RATE_MAX, 0  },
915 							{ "btHpMaxTime", CON_PARM_RANGE | CON_PARM_OPTIONAL,
916 							SOFT_GEMINI_PARAMS_BT_HP_MAXTIME_MIN, SOFT_GEMINI_PARAMS_BT_HP_MAXTIME_MAX, 0  },
917 							{ "wlanHpMaxTime", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
918 							SOFT_GEMINI_PARAMS_WLAN_HP_MAX_TIME_MIN, SOFT_GEMINI_PARAMS_WLAN_HP_MAX_TIME_MAX, 0  },
919 							{ "senseDisableTimer", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
920 							SOFT_GEMINI_PARAMS_SENSE_DISABLE_TIMER_MIN, SOFT_GEMINI_PARAMS_SENSE_DISABLE_TIMER_MAX, 0  },
921 							{ "protectiveRxTimeBeforeBtHp", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
922 							SOFT_GEMINI_PARAMS_PROTECTIVE_RX_TIME_MIN, SOFT_GEMINI_PARAMS_PROTECTIVE_RX_TIME_MAX, 0  },
923 							{ "protectiveTxTimeBeforeBtHp", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
924 							SOFT_GEMINI_PARAMS_PROTECTIVE_TX_TIME_MIN, SOFT_GEMINI_PARAMS_PROTECTIVE_TX_TIME_MAX, 0  },
925 							{ "protectiveRxTimeBeforeBtHpFastAp", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
926 							SOFT_GEMINI_PARAMS_PROTECTIVE_RX_TIME_FAST_MIN, SOFT_GEMINI_PARAMS_PROTECTIVE_RX_TIME_FAST_MAX, 0  },
927 							{ "protectiveTxTimeBeforeBtHpFastAp", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
928 							SOFT_GEMINI_PARAMS_PROTECTIVE_TX_TIME_FAST_MIN, SOFT_GEMINI_PARAMS_PROTECTIVE_TX_TIME_FAST_MAX, 0  },
929 							{ "protectiveWlanCycleTimeForFastAp", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
930 							SOFT_GEMINI_PARAMS_CYCLE_TIME_FAST_MIN, SOFT_GEMINI_PARAMS_CYCLE_TIME_FAST_MAX, 0  },
931                             { "btAntiStarvationPeriod", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
932 							SOFT_GEMINI_PARAMS_ANTI_STARVE_PERIOD_MIN , SOFT_GEMINI_PARAMS_ANTI_STARVE_PERIOD_MAX, 0  },
933 							{ "timeoutNextBtLpPacket", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
934 							SOFT_GEMINI_PARAMS_TIMEOUT_NEXT_BT_LP_PACKET_MIN, SOFT_GEMINI_PARAMS_TIMEOUT_NEXT_BT_LP_PACKET_MAX,0  },
935 							{ "wakeUpTimeBeforeBeacon", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
936 							SOFT_GEMINI_PARAMS_TIME_BEFORE_BEACON_MIN , SOFT_GEMINI_PARAMS_TIME_BEFORE_BEACON_MAX, 0  },
937 							{ "hpdmMaxGuardTime", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
938 							SOFT_GEMINI_PARAMS_HPDM_MAX_TIME_MIN , SOFT_GEMINI_PARAMS_HPDM_MAX_TIME_MAX, 0  },
939 							{ "timeoutNextWlanPacket", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
940 							SOFT_GEMINI_PARAMS_TIME_OUT_NEXT_WLAN_MIN , SOFT_GEMINI_PARAMS_TIME_OUT_NEXT_WLAN_MAX, 0  },
941 							{ "sgAntennaType", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
942 							SOFT_GEMINI_PARAMS_SG_ANTENNA_TYPE_MIN, SOFT_GEMINI_PARAMS_SG_ANTENNA_TYPE_MAX , 0  },
943 							{ "signalingType", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
944 							SOFT_GEMINI_PARAMS_SIGNALING_TYPE_MIN, SOFT_GEMINI_PARAMS_SIGNALING_TYPE_MAX , 0  },
945 							{ "afhLeverageOn", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
946 							SOFT_GEMINI_PARAMS_AFH_LEVERAGE_ON_MIN, SOFT_GEMINI_PARAMS_AFH_LEVERAGE_ON_MAX, 0  },
947 							{ "numberQuietCycle", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
948 							SOFT_GEMINI_PARAMS_NUMBER_QUIET_CYCLE_MIN, SOFT_GEMINI_PARAMS_NUMBER_QUIET_CYCLE_MAX , 0  },
949 							{ "maxNumCts", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
950 							SOFT_GEMINI_PARAMS_MAX_NUM_CTS_MIN, SOFT_GEMINI_PARAMS_MAX_NUM_CTS_MAX, 0  },
951 							{ "numberOfWlanPackets", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
952 							SOFT_GEMINI_PARAMS_NUMBER_OF_WLAN_PACKETS_MIN, SOFT_GEMINI_PARAMS_NUMBER_OF_WLAN_PACKETS_MAX,0  },
953 							{ "numberOfBtPackets", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
954 							SOFT_GEMINI_PARAMS_NUMBER_OF_BT_PACKETS_MIN, SOFT_GEMINI_PARAMS_NUMBER_OF_BT_PACKETS_MAX,0  },
955 							{ "numberOfMissedRxForAvalancheTrigger", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
956 							SOFT_GEMINI_PARAMS_RX_FOR_AVALANCHE_MIN, SOFT_GEMINI_PARAMS_RX_FOR_AVALANCHE_MAX, 0  },
957 							{ "wlanElpHpSupport", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
958 							SOFT_GEMINI_PARAMS_ELP_HP_MIN, SOFT_GEMINI_PARAMS_ELP_HP_MAX, 0  },
959 							{ "btAntiStarvationNumberOfCyclesWithinThePeriod", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
960 							SOFT_GEMINI_PARAMS_ANTI_STARVE_NUM_CYCLE_MIN , SOFT_GEMINI_PARAMS_ANTI_STARVE_NUM_CYCLE_MAX, 0  },
961                             { "ackModeDuringBtLpInDualAnt", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
962                             SOFT_GEMINI_PARAMS_ACK_MODE_MIN , SOFT_GEMINI_PARAMS_ACK_MODE_MAX, 0  },
963                             { "allowPaSdToggleDuringBtActivityEnable", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
964 							SOFT_GEMINI_PARAMS_ALLOW_PA_SD_MIN , SOFT_GEMINI_PARAMS_ALLOW_PA_SD_MAX, 0  },
965 							{ "sgAutoModeNoCts", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
966 							SOFT_GEMINI_PARAMS_AUTO_MODE_NO_CTS_MIN , SOFT_GEMINI_PARAMS_AUTO_MODE_NO_CTS_MAX, 0  },
967 							{ "numOfBtHpRespectedReq", CON_PARM_RANGE | CON_PARM_OPTIONAL ,
968 							SOFT_GEMINI_PARAMS_BT_HP_RESPECTED_MIN , SOFT_GEMINI_PARAMS_BT_HP_RESPECTED_MAX, 0  },
969 							CON_LAST_PARM };
970 
971 			consoleAddToken(h, "Config",  "Parameters configuration", (FuncToken_t) cmd_bt_coe_config, aaa );
972 		}
973         {
974 			ConParm_t aaa[]  = { { "status", CON_PARM_RANGE | CON_PARM_OPTIONAL, 0, 3, 0 }, CON_LAST_PARM };
975             consoleAddToken(h, "Status", "Get status", (FuncToken_t) cmd_bt_coe_get_status, aaa );
976         }
977 #ifdef EXC_MODULE_INCLUDED
978 		/************ MEASUREMENT commands - start  ********************/
979 		CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "measuremenT",  "Measurement configuration" ) );
980 		consoleAddToken(h, "Enable",  "Enable Measurement", (FuncToken_t) cmd_Measurement_enable, NULL );
981 		consoleAddToken(h, "Disable",  "Disable Measurement", (FuncToken_t) cmd_Measurement_disable, NULL );
982 		{
983 			ConParm_t aaa[]  = {
984 					{ "Change max duration", CON_PARM_RANGE, 0, 2000, 300 }, CON_LAST_PARM };
985 			consoleAddToken(h, "Max duration",  "Time in msec ", (FuncToken_t) cmd_Measurement_setMaxDuration, aaa );
986 		}
987 		/************ MEASUREMENT commands - end  ********************/
988 #endif /* EXC_MODULE_INCLUDED*/
989 
990 #ifdef TI_DBG
991 
992       /* -------------------------------------------- Report -------------------------------------------- */
993 
994     CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) NULL, "Report",  "Debug features" ) );
995         {
996             ConParm_t aaa[]  =
997 			{
998 				{ "module table", CON_PARM_STRING | CON_PARM_OPTIONAL , WLAN_MAX_LOG_MODULES, WLAN_MAX_LOG_MODULES, 0 },
999 				CON_LAST_PARM };
1000             consoleAddToken(h1, "Set",  "set report module table", (FuncToken_t) cmd_report_set, aaa );
1001         }
1002         {
1003             ConParm_t aaa[]  =
1004 			{
1005 				{ "module", CON_PARM_OPTIONAL, 0, 0, 0 },
1006 				CON_LAST_PARM
1007 			};
1008             consoleAddToken(h1, "Add",  "set report for specified module", (FuncToken_t) cmd_report_add, aaa );
1009         }
1010         {
1011 			ConParm_t aaa[]  =
1012 			{
1013 				{ "module", CON_PARM_OPTIONAL, 0, 0, 0 },
1014 				CON_LAST_PARM
1015 			};
1016             consoleAddToken(h1, "Clear",  "clear report for specified module", (FuncToken_t) cmd_report_clear, aaa );
1017         }
1018         {
1019             ConParm_t aaa[]  = { { "level", CON_PARM_OPTIONAL , 0, 0, 0 }, CON_LAST_PARM };
1020             consoleAddToken(h1, "Level",  "set report severity level", (FuncToken_t) cmd_report_severity_level, aaa );
1021         }
1022         {
1023             ConParm_t aaa[]  = { { "osDbgState", CON_PARM_OPTIONAL , 0, 0, 0 }, CON_LAST_PARM };
1024             consoleAddToken(h1, "Osdbgstate",  "set OS abstraction layer debug dtate", (FuncToken_t) cmd_report_os_dbg_state, aaa );
1025         }
1026 
1027       /* -------------------------------------------- Debug -------------------------------------------- */
1028 
1029     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "dEbug",  "Debug features" ) );
1030         {
1031             ConParm_t aaa[]  = {{ "reg_num", 0, 0, 0, 0 },
1032                                 { "value", CON_PARM_OPTIONAL , 0, 0, 0 }, CON_LAST_PARM };
1033             consoleAddToken(h, "Register",  "read/write HW register", (FuncToken_t) cmd_hw_register, aaa );
1034         }
1035 
1036         {
1037             ConParm_t aaa[]  = {{ "func_num", CON_PARM_OPTIONAL, 0, 0, 0 },
1038                                 { "param", CON_PARM_OPTIONAL , 0, 0, 0 }, CON_LAST_PARM };
1039             consoleAddToken(h, "print",  "print driver debug info", (FuncToken_t) cmd_debug_driver_print, aaa );
1040         }
1041 
1042 
1043 		{
1044 			ConParm_t aaa[]  = { { "func_num", CON_PARM_OPTIONAL, 0, 0, 0 },
1045 											{ "string param", CON_PARM_LINE, 0, 128, 0 },
1046 											CON_LAST_PARM };
1047 			consoleAddToken(h, "Buffer",  "Pass the buffer to the driver", (FuncToken_t)cmd_debug_buffer_put, aaa );
1048 		}
1049 
1050 #ifdef DRIVER_PROFILING
1051         consoleAddToken(h, "proFile report",  "Show driver resource usage", (FuncToken_t) cmd_profile_report, NULL );
1052         {
1053             ConParm_t aaa[] = {{ "command_type", CON_PARM_DEFVAL | CON_PARM_RANGE, 1, 3, 3 },
1054                                 { "resolution", CON_PARM_OPTIONAL , 0, 0, 0 },
1055                                 CON_LAST_PARM
1056                                 };
1057             consoleAddToken(h, "Cpu estimator command",  "start/stop/reset cpu estimator", (FuncToken_t) cmd_profile_cpu_estimator_command, aaa );
1058         }
1059 
1060 #endif
1061 
1062 
1063 #endif /*TI_DBG*/
1064 
1065       /* -------------------------------------------- PLT -------------------------------------------- */
1066 
1067     CHK_NULL(h = (handle_t) consoleAddDirExt( (handle_t) NULL, "pLt",  "PLatform table Testings" ) );
1068         CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Register",  "Register Read/Write" ) );
1069         {
1070             ConParm_t aaa[]  = {{ "address(hex)", CON_PARM_STRING, 1, 8, 0 },
1071                                  CON_LAST_PARM };
1072             consoleAddToken(h1, "Read",  "read register", (FuncToken_t) cmd_PLT_RegisterRead, aaa );
1073         }
1074 
1075         {
1076             ConParm_t aaa[]  = {{ "address(hex)", CON_PARM_STRING, 1, 8, 0 },
1077                                 { "value(hex)", CON_PARM_STRING, 1, 8, 0 },
1078                                  CON_LAST_PARM };
1079             consoleAddToken(h1, "Write",  "write register", (FuncToken_t) cmd_PLT_RegisterWrite, aaa );
1080         }
1081 
1082 		{
1083             ConParm_t aaa[]  = {{ "Band", CON_PARM_OPTIONAL|CON_PARM_RANGE, 0, 2, 0 },
1084             { "Channel", CON_PARM_OPTIONAL|CON_PARM_RANGE , 1, 161, 0 }, CON_LAST_PARM };
1085             consoleAddToken(h, "rAdio tune",  "Set the RX channel", (FuncToken_t) cmd_PLT_RadioTune, aaa );
1086         }
1087 
1088 		CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "rx Per",  "RX PER test" ) );
1089 			{
1090 				ConParm_t aaa[] = {CON_LAST_PARM};
1091 				consoleAddToken(h1, "Start",  "Stop RX PER counters", (FuncToken_t) cmd_PLT_RxPerStart, aaa );
1092 				consoleAddToken(h1, "stoP",  "Stop RX PER counters", (FuncToken_t) cmd_PLT_RxPerStop, aaa );
1093 				consoleAddToken(h1, "Clear",  "Clear RX PER counters", (FuncToken_t) cmd_PLT_RxPerClear, aaa );
1094 				consoleAddToken(h1, "Get",  "Get RX PER counters", (FuncToken_t) cmd_PLT_RxPerGet, aaa );
1095 			}
1096 
1097 		CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Tx",  "TX test test" ) );
1098 				{
1099                     ConParm_t aaa[]  = {{ "Band", CON_PARM_OPTIONAL|CON_PARM_RANGE, 0, 2, 0 },
1100                     { "Channel", CON_PARM_OPTIONAL , 1, 161, 0 }, CON_LAST_PARM };
1101 				consoleAddToken(h1, "Cw",  "Start CW test", (FuncToken_t) cmd_PLT_TxCW, aaa );
1102 				}
1103                 {
1104                     ConParm_t aaa[]  = {{ "Band (0 - 2.4Ghz(B/G), 1 - 5Ghz(A), 2 - Japan(4.9Ghz))", CON_PARM_OPTIONAL|CON_PARM_RANGE, 0, 2, 0 },
1105                     { "Channel: (1..14(2.4Ghz), 1..180(5Ghz))", CON_PARM_OPTIONAL|CON_PARM_RANGE , 1, 161, 14 },
1106                     { "Rate: 1-1M,2-2M,3-5.5M,4-11M,6-6M,7-9M,8-12M,9-18M.10-24M,11-36M,12-48M,13-54M", CON_PARM_OPTIONAL|CON_PARM_RANGE , 1, 13, 13 },
1107                     { "preamble (0-long, 1-short)", CON_PARM_OPTIONAL|CON_PARM_RANGE , 0, 1, 1 },
1108                     { "InterPacketDelay- Delay between packets (uSec)", CON_PARM_OPTIONAL|CON_PARM_RANGE , 0, 0xffffffff, 0 },
1109                     { "Number of TX frames (0 - endless)", CON_PARM_OPTIONAL|CON_PARM_RANGE , 0, 0xffffffff, 100 },
1110                     { "Test mode (5-Random data, 9-ZOZO(0,1,0,1,...))", CON_PARM_OPTIONAL|CON_PARM_RANGE , 5, 9, 9 },
1111                     { "Sequance number mode (0 - fixed, 1 - incremented)", CON_PARM_OPTIONAL|CON_PARM_RANGE , 0, 1, 0 },
1112                     { "packet data length [bytes] (0 - 2284)", CON_PARM_OPTIONAL|CON_PARM_RANGE , 0, 2284, 100 },
1113                     { "peer mac address (xx:xx:xx:xx:xx:xx)", CON_PARM_STRING, 0, 18, 0 },
1114 									CON_LAST_PARM };
1115 									consoleAddToken(h1, "coNtinues",  "Start TX continues test", (FuncToken_t) cmd_PLT_TxContinues, aaa );
1116 
1117 				}
1118 				{
1119 				ConParm_t aaa[] = {CON_LAST_PARM};
1120 				consoleAddToken(h1, "Stop",  "Stop TX tests", (FuncToken_t) cmd_PLT_TxStop, aaa );
1121 				}
1122 		CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Mib",  "Mibs" ) );
1123 			   consoleAddToken(h1, "Counter table",  "Read_MIB_CounterTable", (FuncToken_t) cmd_PLT_MIB_CounterTable, NULL);
1124 			   consoleAddToken(h1, "station Id",  "MIB_Station_id", (FuncToken_t) cmd_PLT_MIB_StationID, NULL );
1125 
1126                 /* -------------------------------------------- PLT Calibrations -------------------------------------------- */
1127                 CHK_NULL(h1 = (handle_t) consoleAddDirExt( (handle_t) h, "Calibration",  "RX/TX calibrations" ) );
1128                 {
1129                     ConParm_t aaa[]  = {
1130                     { "Expected Rssi (Input signal generated power [1/16 db])", CON_PARM_RANGE|CON_PARM_SIGN, -2000, 2000, 0 },
1131                     { "Channel", CON_PARM_RANGE|CON_PARM_DEFVAL , 1, 161, 1 },
1132                     { "Band (0- 2.4Ghz, 1- 5Ghz, 2- 4.9Ghz)", CON_PARM_RANGE|CON_PARM_DEFVAL , 0, 2, 0 },
1133                     { "Interval between Samples (uSec)", CON_PARM_OPTIONAL|CON_PARM_DEFVAL , 0, 0xffff, 100 },
1134                     { "Number of samples", CON_PARM_OPTIONAL|CON_PARM_RANGE|CON_PARM_DEFVAL , 1, 2000, 1000 },
1135                     CON_LAST_PARM };
1136                     consoleAddToken(h1, "RX",  "RX calibration", (FuncToken_t) cmd_PLT_RxCal, aaa );
1137                 }
1138 
1139                 CHK_NULL(h2 = (handle_t) consoleAddDirExt( (handle_t) h1, "TX",  "TX calibrations" ) );
1140 				{
1141 					ConParm_t aaa[]  = {{ "Ref Tx power dBM/10 ",CON_PARM_RANGE, MIN_TX_POWER, MAX_TX_POWER, 0 },
1142 										CON_LAST_PARM };
1143 					consoleAddToken(h2, "Start",  "Start TX calibration", (FuncToken_t) cmd_PLT_TxCalStart, aaa );
1144 				}
1145                 consoleAddToken(h2, "stoP",  "Stop TX calibration", (FuncToken_t) cmd_PLT_TxCalStop, NULL );
1146                 consoleAddToken(h2, "gain Get",  "Gain get", (FuncToken_t) cmd_PLT_TxCalGainGet, NULL );
1147                 {
1148                     ConParm_t aaa[]  = {{ "Gain adjust",CON_PARM_RANGE|CON_PARM_SIGN, 0, 124, 0 },
1149                         CON_LAST_PARM };
1150                     consoleAddToken(h2, "gain Adjust",  "Set gain", (FuncToken_t) cmd_PLT_TxCalGainAdjust, aaa );
1151                 }
1152 
1153                 consoleAddToken(h1, "Get_NVS_Buffer",  "Get the NVS buffers needed for update", (FuncToken_t) cmd_PLT_RxTxCalNVSUpdateBuffer, NULL );
1154 
1155                 /* -------------------------------------------- Root -------------------------------------------- */
1156 
1157 	consoleAddToken(NULL, "aboUt",  "About", (FuncToken_t) cmd_show_about, NULL );
1158     consoleAddToken(NULL, "Quit",  "quit", (FuncToken_t) quit_func, NULL );
1159 #ifdef _WINDOWS
1160 #endif /* ifdef _WINDOWS */
1161 
1162     return 0;
1163 }
1164 
1165 
1166     /*  Return '0' if success */
init_driver(char * adapter_name,char * eeprom_file_name,char * init_file_name,char * firmware_file_name)1167 int init_driver( char *adapter_name, char *eeprom_file_name, char *init_file_name, char *firmware_file_name )
1168 {
1169 #ifndef _WINDOWS
1170     FILE *f1=NULL, *f2=NULL, *f3 = NULL;
1171     UINT32 eeprom_image_length=0;
1172     UINT32 init_file_length=0;
1173     UINT32 firmware_image_length = 0;
1174     UINT32 req_size;
1175     tiwlan_dev_init_t *init_info=NULL;
1176 #endif
1177     int rc = -1;
1178 	ConParm_t param;
1179     tiUINT32 tmpData = 1;
1180 
1181 //TRS:MEB add ability to convert adapter_name to tiCHAR type
1182 #ifndef _WINDOWS
1183     if( !adapter_name || !*adapter_name )
1184         return rc;
1185 
1186     g_id_adapter = TI_AdapterInit( adapter_name );
1187 
1188 #else
1189 #endif
1190 //TRS end
1191 
1192 #ifdef _WINDOWS
1193 #endif
1194 
1195 #ifndef _WINDOWS
1196     /* Send init request to the driver */
1197     if (eeprom_file_name &&
1198         (f1 = fopen(eeprom_file_name, "r"))!=NULL)
1199     {
1200         if (fseek(f1, 0, SEEK_END))
1201         {
1202             fprintf(stderr, "Cannot seek eeprom image file <%s>\n", eeprom_file_name);
1203             goto init_driver_end;
1204         }
1205         eeprom_image_length = ftell(f1);
1206         printf("NVS size = %d\n", eeprom_image_length); /* Dm: */
1207         rewind(f1);
1208     }
1209 #ifdef FIRMWARE_DYNAMIC_LOAD
1210     if (firmware_file_name &&
1211         (f2 = fopen(firmware_file_name, "r"))!=NULL)
1212     {
1213         if (fseek(f2, 0, SEEK_END))
1214         {
1215             fprintf(stderr, "Cannot seek firmware file <%s>\n", firmware_file_name);
1216             goto init_driver_end;
1217         }
1218         firmware_image_length = ftell(f2);
1219         rewind(f2);
1220     }
1221 #endif
1222     if (init_file_name &&
1223         (f3 = fopen(init_file_name, "r"))!=NULL)
1224     {
1225         if (fseek(f3, 0, SEEK_END))
1226         {
1227             fprintf(stderr, "Cannot seek init file <%s>\n", init_file_name);
1228             goto init_driver_end;
1229         }
1230         init_file_length = ftell(f3);
1231         rewind(f3);
1232     }
1233 
1234     /* Now when we can calculate the request length. allocate it and read the files */
1235     req_size = offsetof(tiwlan_dev_init_t, data)+ eeprom_image_length + (init_file_length+1) + firmware_image_length;
1236     init_info = (tiwlan_dev_init_t *)malloc(req_size);
1237     if (!init_info)
1238     {
1239         fprintf(stderr, "No memory to allocate init request (%d bytes)\n", req_size);
1240         goto init_driver_end;
1241     }
1242     init_info->eeprom_image_length   = eeprom_image_length;
1243     init_info->firmware_image_length = firmware_image_length;
1244     init_info->init_file_length      = init_file_length;
1245     if (eeprom_image_length &&
1246         fread(&init_info->data[0], 1, eeprom_image_length, f1)<eeprom_image_length)
1247     {
1248         fprintf(stderr, "Error reading eeprom image %s, %s\n", eeprom_file_name, strerror(errno));
1249         goto init_driver_end;
1250     }
1251     if (firmware_image_length &&
1252         fread(&init_info->data[eeprom_image_length], 1, firmware_image_length, f2)<firmware_image_length)
1253     {
1254         fprintf(stderr, "Error reading firmware image %s, %s\n", firmware_file_name, strerror(errno));
1255         goto init_driver_end;
1256     }
1257     if (init_file_length &&
1258         fread(&init_info->data[eeprom_image_length+firmware_image_length], 1, init_file_length, f3)<init_file_length)
1259     {
1260         fprintf(stderr, "Error reading init_file %s, %s\n", init_file_name, strerror(errno));
1261         goto init_driver_end;
1262     }
1263 
1264     rc = IPC_DeviceIoControl(adapter_name, TIWLN_SET_INIT_INFO, init_info, req_size, NULL, 0, NULL);
1265 
1266     /*Send configMge start command as the cli is started*/
1267     IPC_DeviceIoControl(adapter_name, TIWLN_DRIVER_STATUS_SET, &tmpData, sizeof(tiUINT32), NULL, 0, NULL);
1268 
1269 init_driver_end:
1270     if (f1)
1271         fclose(f1);
1272     if (f2)
1273         fclose(f2);
1274     if (f3)
1275         fclose(f3);
1276     if (init_info)
1277         free(init_info);
1278 #endif
1279 
1280 	/*********************/
1281 	/* Reset CLI events */
1282 	/*******************/
1283 
1284 	for (param.value = 0; param.value < IPC_EVENT_MAX; param.value++)
1285 	{
1286 		cmd_events_unregister(&param, 1);
1287 	}
1288 
1289     return rc;
1290 }
1291 
1292 /* TRS:GAA separated Windows/Linux setup routines for readability */
1293 #ifndef _WINDOWS
init_extended_tools()1294 void init_extended_tools()
1295 {
1296 	/* Initialize IPC */
1297 	ipc_initialize();
1298 
1299 	/* Initialize ethernet utilities */
1300 	ethernet_utils_init();
1301 
1302 	/* Initialize wipp control */
1303 	wipp_control_init();
1304 
1305 	/* Initialize debug module task */
1306 	debug_module_init();
1307 }
1308 
deinit_extended_tools()1309 void deinit_extended_tools()
1310 {
1311 	ipc_deinitialize();
1312 
1313 	/* Deinitialize ethernet utilities */
1314 	ethernet_utils_deinit();
1315 
1316 	/* Deinitialize wipp control */
1317 	wipp_control_deinit();
1318 
1319 	/* Deinitializew debug module task */
1320 	debug_module_deinit();
1321 	}
1322 #endif
1323 
1324 #ifdef _WINDOWS
1325 #endif
1326 //TRS:GAA end of specific O/S init/deinit routines
1327 
1328 
1329 // TICON.EXE main module
main(int argc,char ** argv)1330 int main(int argc, char ** argv)
1331 {
1332     int i;
1333     char *script_file = NULL;
1334     char  *eeprom_file_name = "/NVS/nvs_map.bin";
1335     char  *init_file_name = "/voice/tiwlan.ini";
1336     char *firmware_file_name = "/apps/firmware.bin";
1337     int stop_UI = 0;
1338     int bypass_supplicant = 0;
1339     ConParm_t param;
1340 
1341     // TRS:PGK -- To ensure that the data structure above is actually initialized to
1342     //            a NULL string.
1343     g_drv_name[0] = '\0';
1344 
1345 #ifndef _WINDOWS
1346 	/* TRS:AS for WM extended tools have to be initialized after parsing of the command line arguments*/
1347 	init_extended_tools();
1348 #endif /* __LINUX__*/
1349     if( argc > 1 )
1350     {
1351         i=1;
1352         if( argv[i][0] != '-' )
1353         {
1354             strcpy( g_drv_name, argv[i++] );
1355         }
1356         for( ;i < argc; i++ )
1357         {
1358             if( !strcmp(argv[i], "-h" ) || !strcmp(argv[i], "--help") )
1359                 return print_usage(eeprom_file_name, init_file_name, firmware_file_name);
1360             else if(!strcmp(argv[i], "-f" ) )
1361             {
1362                 firmware_file_name = argv[++i];
1363             }
1364             else if(!strcmp(argv[i], "-e") && (i+1<argc))
1365             {
1366                 eeprom_file_name = argv[++i];
1367             }
1368             else if(!strcmp(argv[i], "-b"))
1369             {
1370                 bypass_supplicant = 1;
1371             }
1372             else if(!strcmp(argv[i], "-i") && (i+1<argc))
1373             {
1374                 init_file_name = argv[++i];
1375             }
1376             else if(!strcmp(argv[i], "-s" ) )
1377             {
1378                 script_file = argv[++i];
1379             }
1380 #ifdef _WINDOWS // TRS:AS for Windows only. -w switch allows to not disable WZC.
1381 #endif /* ifdef _WINDOWS */
1382             else
1383             {
1384                 fprintf(stderr, "ticon: unknown parameter '%s'\n", argv[i] );
1385 
1386 #ifndef _WINDOWS
1387 				deinit_extended_tools();
1388 #endif /* ifdef __LINUX__*/
1389 
1390                 return 0;
1391             }
1392         }
1393     }
1394 
1395 
1396     if( !g_drv_name[0] )
1397     {
1398 		#ifndef _WINDOWS
1399 			strcpy(g_drv_name, TIWLAN_DRV_NAME "0" );
1400 		#else
1401 		#endif
1402     }
1403 
1404     /* TRS:PGK -- before this function call, do not use console_printf_terminal() */
1405 	#ifdef _WINDOWS
1406 	#endif /* ifdef _WINDOWS */
1407     //console_printf_terminal("ticon: g_drv_name = %s\n", g_drv_name );
1408 
1409     // TRS:PGK -- From this point on, use console_printf_terminal()
1410 
1411     if (init_driver(g_drv_name, eeprom_file_name, init_file_name, firmware_file_name) != 0)
1412 	{
1413 		deinit_extended_tools();
1414         return -1;
1415 	}
1416 
1417 #ifndef _WINDOWS
1418 	/* Initialize g_tester module */
1419 	g_tester_init();
1420 #endif /* __LINUX__ */
1421 
1422     if (!bypass_supplicant)
1423     {
1424         console_printf_terminal("Starting up supplicant...\n" );
1425         TI_StartSM(g_id_adapter);
1426     }
1427 
1428     /* ----------------------------------------------------------- */
1429     init_console_menu();
1430 
1431     init_scan_params();
1432 
1433 #ifdef _WINDOWS
1434 #endif /* ifdef _WINDOWS */
1435 
1436     if( script_file )
1437     {
1438         stop_UI = consoleRunScript (script_file);
1439     }
1440 
1441     if( !stop_UI )
1442         consoleStart();
1443 
1444 #ifndef _WINDOWS
1445 	/* Deinitialize g_tester module */
1446 	g_tester_deinit();
1447 #endif /* __LINUX__ */
1448 
1449     // TRS:PGK -- NOW it is good to assume that the events might have been
1450     //  registered in the past.
1451     for (param.value = 0; param.value < IPC_EVENT_MAX; param.value++)
1452     {
1453         cmd_events_unregister(&param, 1);
1454     }
1455 
1456 
1457     if (!bypass_supplicant)
1458     {
1459         console_printf_terminal("Stop supplicant manager...\n" );
1460         TI_StopSM(g_id_adapter);
1461     }
1462 #ifdef _WINDOWS
1463 #endif /* ifdef _WINDOWS */
1464 
1465     console_printf_terminal("De-init the adapter...\n" );
1466     TI_AdapterDeinit(g_id_adapter);
1467 
1468 	deinit_extended_tools();
1469 
1470     printf("\nLeaving ticon\n");  //TRS:MEB added printf
1471 
1472     return 1;
1473 }
1474 
1475