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
22 /****************************************************************************************************/
23 /* */
24 /* MODULE: wipp_ctrl.c */
25 /* PURPOSE: WIPP Control utilities */
26 /* Note: This module is for LINUX compilation only! */
27 /* */
28 /****************************************************************************************************/
29
30
31 #include "TI_AdapterApiC.h"
32 #include "osDot11.h"
33
34 #include <stdlib.h>
35 #include <fcntl.h>
36 #include <errno.h>
37 #include <sys/stat.h>
38 #include <unistd.h>
39
40
41 #include "g_tester.h"
42 #include "console.h"
43 #include "cu_cmd.h"
44 #include "ticon.h"
45 #include "ipc.h"
46
47 #include "paramOut.h"
48
49 /************/
50 /* Defines */
51 /**********/
52
53
54 #define G_TESTER_STATUS_OK (0)
55 #define G_TESTER_STATUS_ERROR (1)
56
57 #define G_TESTER_GWSI_INIT_NO_ERROR (0x00)
58 #define G_TESTER_GWSI_INIT_ERROR_READING_FW_FILE_LENGTH (0x01)
59 #define G_TESTER_GWSI_INIT_ERROR_OPENING_FW_FILE (0x02)
60 #define G_TESTER_GWSI_INIT_ERROR_READING_EP_FILE_LENGTH (0x03)
61 #define G_TESTER_GWSI_INIT_ERROR_OPENING_EP_FILE (0x04)
62 #define G_TESTER_GWSI_INIT_ERROR_READING_EP_FILE (0x05)
63 #define G_TESTER_GWSI_INIT_ERROR_READING_FW_FILE (0x06)
64 #define G_TESTER_GWSI_INIT_ERROR_ALLOCATION_MEMORY (0x07)
65
66 #define G_TESTER_GWSI_GET_INIT_TABLE_NO_ERROR (0x00)
67 #define G_TESTER_GWSI_GET_INIT_TABLE_ERROR_NO_FILE_NAME (0x01)
68 #define G_TESTER_GWSI_GET_INIT_TABLE_ERROR_WRITING_TO_FILE (0x02)
69 #define G_TESTER_GWSI_GET_INIT_TABLE_ERROR_CREATING_FILE (0x03)
70 #define G_TESTER_GWSI_GET_INIT_TABLE_ERROR_TABLE_NOT_AVAIL (0x04)
71
72 #define G_TESTER_GWSI_CONFIG_NO_ERROR (0x00)
73 #define G_TESTER_GWSI_CONFIG_ERROR_READING_FILE (0x01)
74 #define G_TESTER_GWSI_CONFIG_ERROR_ALLOCATING_MEMORY (0x02)
75 #define G_TESTER_GWSI_CONFIG_ERROR_GETIING_FILE_SIZE (0x03)
76 #define G_TESTER_GWSI_CONFIG_ERROR_OPENING_FILE (0x04)
77
78
79
80 extern void quit_func(void);
81 void g_tester_process_general_cmd_run_cmd(unsigned char *cmd_buffer);
82 void g_tester_process_get_init_table(unsigned char *cmd_buffer);
83
84 void g_tester_send_to_host(tiUINT8 *buffer, tiUINT32 length);
85 void g_tester_cmd_status(void);
86 void g_tester_bssid_list(void);
87 void g_tester_send_received_event(unsigned int cmd_op, tiUINT8 status);
88 void g_tester_process_gwsi_init_cmd(unsigned char *cmd_buffer);
89 void g_tester_process_gwsi_config_cmd(unsigned char *cmd_buffer);
90 void g_tester_process_gwsi_release_cmd(unsigned char *cmd_buffer);
91 void g_tester_process_gwsi_cmd(unsigned char *cmd_buffer);
92 void g_tester_register_event(tiUINT16 event_mask);
93 void g_tester_unregister_event(tiUINT16 event_mask);
94 void g_tester_cmd_debug_driver_print(unsigned char *cmd_buffer);
95 void g_tester_cmd_get_version(void);
96 void g_tester_set_rate(tiUINT8 rate_index);
97 void g_tester_wep_add_key(unsigned char *cmd_buffer);
98 int g_tester_gwsi_event_handler(IPC_EV_DATA* pData);
99 void g_tester_cmd_plt_register_read(UINT32 uiRegAddress);
100 void g_tester_cmd_plt_RxPer_GetResults(void);
101 void g_tester_cmd_plt_mib_read(unsigned char *cmd_buffer);
102 void g_tester_cmd_plt_mib_write(unsigned char *cmd_buffer);
103 void g_tester_cmd_get_defaultWEPKey(void);
104 void g_tester_Roaming_candidates_list(void);
105 void g_tester_scAn__configApp__Display(void);
106 void g_tester_plt_calibration_get_nvs_buffer(void);
107
108
109 TI_HANDLE gwsi_event_id;
110
111
112 /************************************************************************
113 * g_tester_send_to_host *
114 ************************************************************************
115 DESCRIPTION:
116
117 CONTEXT :
118 ************************************************************************/
g_tester_send_to_host(tiUINT8 * buffer,tiUINT32 length)119 void g_tester_send_to_host(tiUINT8 *buffer, tiUINT32 length)
120 {
121 /* console_printf_terminal("g_tester, g_tester_send_to_host (length = %d)!\n", length); */
122
123 /* Send the buffer to the host */
124 console_send_buffer_to_host(ETHERNET_UTILS_G_TESTER_MODULE_ID, buffer, length);
125 }
126
127 /************************************************************************
128 * g_tester_init *
129 ************************************************************************
130 DESCRIPTION:
131
132 CONTEXT :
133 ************************************************************************/
g_tester_init()134 void g_tester_init()
135 {
136 /************************************/
137 /* Register the GWSI event handler */
138 /**********************************/
139
140 IPC_EVENT_PARAMS pEvent;
141
142
143 pEvent.uEventType = IPC_EVENT_GWSI;
144 pEvent.uDeliveryType = DELIVERY_PUSH;
145 pEvent.pfEventCallback = g_tester_gwsi_event_handler;
146 pEvent.hUserParam = 0;
147
148 /* Register the event, set the pEvent.uEventID and the pEvent.uProcessID */
149 if(!TI_RegisterEvent(g_id_adapter, &pEvent))
150 {
151 gwsi_event_id = pEvent.uEventID;
152 }
153 else
154 {
155 console_printf_terminal("g_tester, g_tester_init. ERROR Registering GWSI event\n");
156 }
157
158 }
159
160 /************************************************************************
161 * g_tester_deinit *
162 ************************************************************************
163 DESCRIPTION:
164
165 CONTEXT :
166 ************************************************************************/
g_tester_deinit()167 void g_tester_deinit()
168 {
169 /**************************************/
170 /* Unregister the GWSI event handler */
171 /************************************/
172
173 IPC_EVENT_PARAMS pEvent;
174
175 pEvent.uEventType = IPC_EVENT_GWSI;
176 pEvent.uEventID = gwsi_event_id;
177 TI_UnRegisterEvent(g_id_adapter, &pEvent);
178 }
179
180 /************************************************************************
181 * wipp_control_check_command *
182 ************************************************************************
183 DESCRIPTION: Handle the wipp control specific commands
184
185 CONTEXT : main process only!
186 ************************************************************************/
g_tester_check_command(unsigned char * input_string)187 unsigned char g_tester_check_command(unsigned char *input_string)
188 {
189 unsigned char return_value = FALSE;
190 unsigned int cmd_op;
191 /*ConParm_t parm;*/
192 ConParm_t parms[12];
193 int parms_num;
194 unsigned char* data_string = input_string + 5;
195
196 if (input_string[0] == '-')
197 {
198 /* Get the command opcode */
199 cmd_op = (input_string[1] | (input_string[2] << 8));
200
201 console_printf_terminal("g_tester, g_tester_check_command (OpCode = 0x%x).\n", cmd_op);
202
203 /* Notify the host that we got the event */
204 g_tester_send_received_event(cmd_op, G_TESTER_STATUS_OK);
205
206 if (G_TESTER_IS_GENERAL_GROUP_CMD(cmd_op))
207 {
208 /************************************/
209 /* This command is GENERAL command */
210 /**********************************/
211
212 switch (cmd_op)
213 {
214 case G_TESTER_GENERAL_CMD_RUN_CMD:
215 g_tester_process_general_cmd_run_cmd(data_string);
216 break;
217
218 case G_TESTER_GENERAL_CMD_GET_INIT_T:
219 g_tester_process_get_init_table(data_string);
220 break;
221
222 default:
223 console_printf_terminal("g_tester (general switch) - unsupported command!\n");
224 break;
225 }
226 }
227 else if (G_TESTER_IS_GWSI_GROUP_CMD(cmd_op))
228 {
229 /*********************************/
230 /* This command is GWSI command */
231 /*******************************/
232
233 switch (cmd_op)
234 {
235 case G_TESTER_GWSI_CMD_INITIALIZE:
236 g_tester_process_gwsi_init_cmd(data_string);
237 break;
238
239 case G_TESTER_GWSI_CMD_CONFIG:
240 g_tester_process_gwsi_config_cmd(data_string);
241 break;
242
243 case G_TESTER_GWSI_CMD_RELEASE:
244 g_tester_process_gwsi_release_cmd(data_string);
245 break;
246
247 default:
248 g_tester_process_gwsi_cmd(&input_string[1]);
249 break;
250 }
251 }
252 else
253 {
254 /********************************/
255 /* This command is CLI command */
256 /******************************/
257 switch(cmd_op)
258 {
259 case G_TESTER_CLI_CMD_DRIVER__START:
260 P_BUFFER_GET_UINT32(data_string, parms[0].value);
261 cmd_start_driver(parms, 1);
262 break;
263
264 case G_TESTER_CLI_CMD_DRIVER__STOP:
265 cmd_stop_driver(NULL, 0);
266 break;
267
268 case G_TESTER_CLI_CMD_DRIVER__STATUS:
269 g_tester_cmd_status();
270 break;
271
272 case G_TESTER_CLI_CMD_CONNECTION__BSSID_LIST:
273 g_tester_bssid_list();
274 break;
275
276 case G_TESTER_CLI_CMD_CONNECTION__CONNECT:
277 parms[0].value = (U32)(data_string);
278 data_string += 32; /*Seek to the end of the string */
279 parms[1].value = (U32)(data_string);
280 /*Find the number of none empty strings */
281 for(parms_num = 2; (parms_num >= 1) && (strlen((char*)parms[parms_num-1].value) == 0); parms_num--)
282 {
283 }
284 cmd_connect(parms, parms_num);
285 break;
286
287 case G_TESTER_CLI_CMD_CONNECTION__DISASSOCIATE:
288 cmd_disassociate(NULL, 0);
289 break;
290
291 case G_TESTER_CLI_CMD_CONNECTION__STATUS:
292 g_tester_cmd_status();
293 break;
294
295 case G_TESTER_CLI_CMD_CONNECTION__FULL_BSSID_LIST:
296 cmd_Full_bssid_list(NULL, 0);
297 break;
298
299 case G_TESTER_CLI_CMD_MANAGEMENT__SSID:
300 parms[0].value = (U32)(data_string);
301 parms_num =(strlen((char*)parms[0].value) == 0)?0:1;
302 cmd_modify_ssid(parms, parms_num);
303 break;
304
305 case G_TESTER_CLI_CMD_MANAGEMENT__CHANNEL:
306 P_BUFFER_GET_UINT32(data_string, parms[0].value);
307 cmd_modify_channel(parms, 1);
308 break;
309
310 case G_TESTER_CLI_CMD_MANAGEMENT__RATE:
311 g_tester_set_rate(input_string[5]);
312 break;
313
314 case G_TESTER_CLI_CMD_MANAGEMENT__MODE:
315 P_BUFFER_GET_UINT32(data_string, parms[0].value);
316 cmd_modify_bss_type(parms, 1);
317 break;
318
319 case G_TESTER_CLI_CMD_MANAGEMENT__FRAG:
320 P_BUFFER_GET_UINT32(data_string, parms[0].value);
321 cmd_modify_frag_threshold(parms, 1);
322 break;
323
324 case G_TESTER_CLI_CMD_MANAGEMENT__RTS:
325 P_BUFFER_GET_UINT32(data_string, parms[0].value);
326 cmd_modify_rts_threshold(parms, 1);
327 break;
328
329 case G_TESTER_CLI_CMD_MANAGEMENT__PREAMBLE:
330 P_BUFFER_GET_UINT32(data_string, parms[0].value);
331 cmd_modify_preamble(parms, 1);
332 break;
333
334 case G_TESTER_CLI_CMD_MANAGEMENT__SLOT:
335 P_BUFFER_GET_UINT32(data_string, parms[0].value);
336 cmd_modify_short_slot(parms, 1);
337 break;
338
339 case G_TESTER_CLI_CMD_MANAGEMENT__INFO:
340 cmd_get_selected_bssid_info(NULL, 0);
341 break;
342
343 case G_TESTER_CLI_CMD_MANAGEMENT__DRIVERSTATE:
344 cmd_get_driver_state(NULL, 0);
345 break;
346
347 case G_TESTER_CLI_CMD_MANAGEMENT__SIGNAL:
348 cmd_get_rsii_level(NULL, 0);
349 break;
350
351 case G_TESTER_CLI_CMD_MANAGEMENT__TX_POWER_LEVEL:
352 P_BUFFER_GET_UINT32(data_string, parms[0].value);
353 cmd_show_tx_power_level_table(parms, 1);
354 break;
355
356 case G_TESTER_CLI_CMD_MANAGEMENT__TX_POWER_DBM:
357 P_BUFFER_GET_UINT32(data_string, parms[0].value);
358 cmd_tx_power_dbm(parms, 1);
359 break;
360
361 case G_TESTER_CLI_CMD_MANAGEMENT__802_11D_H__D_ENABLEDISABLE:
362 P_BUFFER_GET_UINT32(data_string, parms[0].value);
363 cmd_enableDisable_802_11d(parms, 1);
364 break;
365
366 case G_TESTER_CLI_CMD_MANAGEMENT__802_11D_H__H_ENABLEDISABLE:
367 P_BUFFER_GET_UINT32(data_string, parms[0].value);
368 cmd_enableDisable_802_11h(parms, 1);
369 break;
370
371 case G_TESTER_CLI_CMD_MANAGEMENT__802_11D_H__D_COUNTRY_2_4IE:
372 P_BUFFER_GET_UINT32(data_string, parms[0].value);
373 cmd_d_Country_2_4Ie(parms, 1);
374 break;
375
376 case G_TESTER_CLI_CMD_MANAGEMENT__802_11D_H__D_COUNTRY_5IE:
377 P_BUFFER_GET_UINT32(data_string, parms[0].value);
378 cmd_d_Country_5Ie(parms, 1);
379 break;
380
381 case G_TESTER_CLI_CMD_MANAGEMENT__ANTENNA__DIVERSITYPARAMS:
382 P_BUFFER_GET_UINT32(data_string, parms[0].value);
383 P_BUFFER_GET_UINT32(data_string, parms[1].value);
384 P_BUFFER_GET_UINT32(data_string, parms[2].value);
385 P_BUFFER_GET_UINT32(data_string, parms[3].value);
386 P_BUFFER_GET_UINT32(data_string, parms[4].value);
387 cmd_modify_antenna_diversity(parms, 5);
388 break;
389
390 case G_TESTER_CLI_CMD_MANAGEMENT__BEACON__SET_BEACON_FILTER_MODE:
391 P_BUFFER_GET_UINT32(data_string, parms[0].value);
392 cmd_Beacon_Filter_Set_Desired_State(parms, 1);
393 break;
394
395 case G_TESTER_CLI_CMD_MANAGEMENT__ADVANCED__DRAFT:
396 P_BUFFER_GET_UINT32(data_string, parms[0].value);
397 cmd_modify_ext_rates_ie(parms, 1);
398 break;
399
400 case G_TESTER_CLI_CMD_MANAGEMENT__ADVANCED__SUPPORTED_RATES:
401 parms[0].value = (U32)(data_string);
402 parms_num =(strlen((char*)parms[0].value) == 0)?0:1;
403 cmd_modify_supported_rates(parms, parms_num);
404 break;
405
406 case G_TESTER_CLI_CMD_SHOW__STATISTICS:
407 cmd_show_statistics(NULL, 0);
408 break;
409
410 case G_TESTER_CLI_CMD_SHOW__TX_STATISTICS:
411 P_BUFFER_GET_UINT32(data_string, parms[0].value);
412 cmd_show_tx_statistics(parms, 1);
413 break;
414
415 case G_TESTER_CLI_CMD_SHOW__ADVANCED:
416 cmd_show_advanced_params(NULL, 0);
417 break;
418
419 case G_TESTER_CLI_CMD_PRIVACY__AUTHENTICATION:
420 P_BUFFER_GET_UINT32(data_string, parms[0].value);
421 cmd_privacy_auth(parms, 1);
422 break;
423
424 case G_TESTER_CLI_CMD_PRIVACY__EAP:
425 P_BUFFER_GET_UINT32(data_string, parms[0].value);
426 cmd_privacy_eap(parms, 1);
427 break;
428
429 case G_TESTER_CLI_CMD_PRIVACY__ENCRYPTION:
430 P_BUFFER_GET_UINT32(data_string, parms[0].value);
431 cmd_privacy_encrypt(parms, 1);
432 break;
433
434 case G_TESTER_CLI_CMD_PRIVACY__KEYTYPE:
435 P_BUFFER_GET_UINT32(data_string, parms[0].value);
436 cmd_privacy_key_type(parms, 1);
437 break;
438
439 case G_TESTER_CLI_CMD_PRIVACY__MIXEDMODE:
440 P_BUFFER_GET_UINT32(data_string, parms[0].value);
441 cmd_privacy_mixed_mode(parms, 1);
442 break;
443
444 case G_TESTER_CLI_CMD_PRIVACY__CREDENTIALS:
445 parms[0].value = (U32)(data_string);
446 data_string += 32; /*Seek to the end of the string */
447 parms[1].value = (U32)(data_string);
448 /*Find the number of none empty strings */
449 for(parms_num = 2; (parms_num >= 1) && (strlen((char*)parms[parms_num-1].value) == 0); parms_num--)
450 {
451 }
452 cmd_privacy_credent(parms, parms_num);
453 break;
454
455 case G_TESTER_CLI_CMD_PRIVACY__PSKPASSPHRASE:
456 parms[0].value = (U32)(data_string);
457 parms_num =(strlen((char*)parms[0].value) == 0)?0:1;
458 cmd_privacy_PSKPassphrase(parms, parms_num);
459 break;
460
461 case G_TESTER_CLI_CMD_PRIVACY__CERTIFICATE:
462 parms[0].value = (U32)(data_string);
463 data_string += 32; /*Seek top the end of the string */
464 P_BUFFER_GET_UINT32(data_string, parms[1].value);
465 cmd_privacy_certificate(parms, 2);
466 break;
467
468 case G_TESTER_CLI_CMD_PRIVACY__WPA_OPTIONS:
469 P_BUFFER_GET_UINT32(data_string, parms[0].value);
470 cmd_privacy_wpa_options(parms, 1);
471 break;
472
473 case G_TESTER_CLI_CMD_PRIVACY__WEP__ADD:
474 g_tester_wep_add_key(data_string);
475 break;
476
477 case G_TESTER_CLI_CMD_PRIVACY__WEP__REMOVE:
478 P_BUFFER_GET_UINT32(data_string, parms[0].value);
479 cmd_privacy_removekey(parms, 1);
480 break;
481
482 #ifdef EXC_MODULE_INCLUDED
483 case G_TESTER_CLI_CMD_PRIVACY__EXC__CONFIGURE:
484 P_BUFFER_GET_UINT32(data_string, parms[0].value);
485 cmd_privacy_exc_config(parms, 1);
486 break;
487
488 case G_TESTER_CLI_CMD_PRIVACY__EXC__NETWORKEAP:
489 P_BUFFER_GET_UINT32(data_string, parms[0].value);
490 cmd_privacy_exc_netEap(parms, 1);
491 break;
492 #endif
493 case G_TESTER_CLI_CMD_SCAN__START:
494 cmd_Scan_Start(NULL, 0);
495 break;
496
497 case G_TESTER_CLI_CMD_SCAN__STOP:
498 cmd_Scan_Stop(NULL, 0);
499 break;
500
501 case G_TESTER_CLI_CMD_SCAN__CONFIGAPP__GLOBAL:
502 {
503 int numOfParam;
504 parms[0].value = (U32)(data_string); /*SSID*/
505 data_string+=33; /*seek the end of the string */
506 P_BUFFER_GET_UINT32(data_string, parms[1].value); /*Scan Type*/
507 P_BUFFER_GET_UINT32(data_string, parms[2].value); /*Band*/
508 P_BUFFER_GET_UINT32(data_string, parms[3].value); /*Probe Request Number*/
509 P_BUFFER_GET_UINT32(data_string, parms[4].value); /*Probe Request Rate*/
510 #ifdef TI_DBG
511 numOfParam = 7;
512 P_BUFFER_GET_UINT32(data_string, parms[5].value); /*Tid*/
513 P_BUFFER_GET_UINT32(data_string, parms[6].value); /*Number of Channels*/
514 #else
515 numOfParam = 6;
516 P_BUFFER_GET_UINT32(data_string, parms[5].value); /* skip XML Tid*/
517 P_BUFFER_GET_UINT32(data_string, parms[5].value); /*Number of Channels*/
518 #endif
519
520 cmd_Scan_app_global_config(parms, numOfParam);
521 }
522 cmd_Scan_app_global_config(parms, 6);
523 break;
524
525 case G_TESTER_CLI_CMD_SCAN__CONFIGAPP__CHANNEL:
526 P_BUFFER_GET_UINT32(data_string, parms[0].value);
527 parms[1].value = (U32)(data_string);
528 data_string += 18; /*seek the end of the string */
529 P_BUFFER_GET_UINT32(data_string, parms[2].value);
530 P_BUFFER_GET_UINT32(data_string, parms[3].value);
531 P_BUFFER_GET_UINT32(data_string, parms[4].value);
532 P_BUFFER_GET_UINT32(data_string, parms[5].value);
533 P_BUFFER_GET_UINT32(data_string, parms[6].value);
534 P_BUFFER_GET_UINT32(data_string, parms[7].value);
535 cmd_Scan_app_channel_config(parms, 8);
536 break;
537
538 case G_TESTER_CLI_CMD_SCAN__CONFIGAPP__CLEAR:
539 cmd_Scan_app_clear(NULL, 0);
540 break;
541
542 case G_TESTER_CLI_CMD_SCAN__CONFIGAPP__DISPLAY:
543 cmd_Scan_app_display(NULL, 0);
544 break;
545
546 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__GLOABAL:
547 P_BUFFER_GET_UINT32(data_string, parms[0].value);
548 P_BUFFER_GET_UINT32(data_string, parms[1].value);
549 P_BUFFER_GET_UINT32(data_string, parms[2].value);
550 P_BUFFER_GET_UINT32(data_string, parms[3].value);
551 P_BUFFER_GET_UINT32(data_string, parms[4].value);
552 P_BUFFER_GET_UINT32(data_string, parms[5].value);
553 cmd_Scan_policy_global_config(parms, 6);
554 break;
555
556 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__BAND__MISC:
557 P_BUFFER_GET_UINT32(data_string, parms[0].value);
558 P_BUFFER_GET_UINT32(data_string, parms[1].value);
559 P_BUFFER_GET_UINT32(data_string, parms[2].value);
560 P_BUFFER_GET_UINT32(data_string, parms[3].value);
561 P_BUFFER_GET_UINT32(data_string, parms[4].value);
562 cmd_Scan_band_global_config(parms, 5);
563 break;
564
565 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__BAND__CHANNEL:
566 P_BUFFER_GET_UINT32(data_string, parms[0].value);
567 P_BUFFER_GET_UINT32(data_string, parms[1].value);
568 P_BUFFER_GET_UINT32(data_string, parms[2].value);
569 cmd_Scan_band_channel_config(parms, 3);
570 break;
571
572 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__BAND__TRACK:
573 P_BUFFER_GET_UINT32(data_string, parms[0].value);
574 P_BUFFER_GET_UINT32(data_string, parms[1].value);
575 P_BUFFER_GET_UINT32(data_string, parms[2].value);
576 P_BUFFER_GET_UINT32(data_string, parms[3].value);
577 P_BUFFER_GET_UINT32(data_string, parms[4].value);
578 P_BUFFER_GET_UINT32(data_string, parms[5].value);
579 P_BUFFER_GET_UINT32(data_string, parms[6].value);
580 P_BUFFER_GET_UINT32(data_string, parms[7].value);
581 P_BUFFER_GET_UINT32(data_string, parms[8].value);
582 P_BUFFER_GET_UINT32(data_string, parms[9].value);
583 P_BUFFER_GET_UINT32(data_string, parms[10].value);
584 cmd_Scan_band_track_config(parms, 11);
585 break;
586
587 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__BAND__DISCOVERY:
588 P_BUFFER_GET_UINT32(data_string, parms[0].value);
589 P_BUFFER_GET_UINT32(data_string, parms[1].value);
590 P_BUFFER_GET_UINT32(data_string, parms[2].value);
591 P_BUFFER_GET_UINT32(data_string, parms[3].value);
592 P_BUFFER_GET_UINT32(data_string, parms[4].value);
593 P_BUFFER_GET_UINT32(data_string, parms[5].value);
594 P_BUFFER_GET_UINT32(data_string, parms[6].value);
595 P_BUFFER_GET_UINT32(data_string, parms[7].value);
596 P_BUFFER_GET_UINT32(data_string, parms[8].value);
597 P_BUFFER_GET_UINT32(data_string, parms[9].value);
598 P_BUFFER_GET_UINT32(data_string, parms[10].value);
599 cmd_Scan_band_discover_config(parms, 11);
600 break;
601
602 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__BAND__IMMEDIATE:
603 P_BUFFER_GET_UINT32(data_string, parms[0].value);
604 P_BUFFER_GET_UINT32(data_string, parms[1].value);
605 P_BUFFER_GET_UINT32(data_string, parms[2].value);
606 P_BUFFER_GET_UINT32(data_string, parms[3].value);
607 P_BUFFER_GET_UINT32(data_string, parms[4].value);
608 P_BUFFER_GET_UINT32(data_string, parms[5].value);
609 P_BUFFER_GET_UINT32(data_string, parms[6].value);
610 P_BUFFER_GET_UINT32(data_string, parms[7].value);
611 P_BUFFER_GET_UINT32(data_string, parms[8].value);
612 P_BUFFER_GET_UINT32(data_string, parms[9].value);
613 P_BUFFER_GET_UINT32(data_string, parms[10].value);
614 cmd_Scan_band_immed_config(parms, 11);
615 break;
616
617 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__DISPLAY:
618 cmd_Scan_policy_display(NULL, 0);
619 break;
620
621 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__CLEAR:
622 cmd_Scan_policy_clear(NULL, 0);
623 break;
624
625 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__STORE:
626 cmd_Scan_policy_store(NULL, 0);
627 break;
628
629 case G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__BSSLIST:
630 g_tester_Roaming_candidates_list();
631 break;
632
633 case G_TESTER_CLI_CMD_ROAMING__ENABLE:
634 if (input_string[5] == FALSE)
635 {
636 cmd_Roaming_disable(NULL, 0);
637 }
638 else
639 {
640 cmd_Roaming_enable(NULL, 0);
641 }
642 break;
643
644 case G_TESTER_CLI_CMD_ROAMING__LOW_PASS_FILTER:
645 P_BUFFER_GET_UINT32(data_string, parms[0].value);
646 cmd_Roaming_lowPassFilter(parms, 1);
647 break;
648
649 case G_TESTER_CLI_CMD_ROAMING__QUALITY_THRESHOLD:
650 P_BUFFER_GET_UINT32(data_string, parms[0].value);
651 cmd_Roaming_qualityIndicator(parms, 1);
652 break;
653
654 case G_TESTER_CLI_CMD_ROAMING__GET:
655 cmd_Roaming_getConfParams(NULL, 0);
656 break;
657
658 case G_TESTER_CLI_CMD_ROAMING__THRESHOLDS__TX_RETRY:
659 P_BUFFER_GET_UINT32(data_string, parms[0].value);
660 cmd_Roaming_dataRetryThreshold(parms, 1);
661 break;
662
663 case G_TESTER_CLI_CMD_ROAMING__THRESHOLDS__BSS_LOSS:
664 P_BUFFER_GET_UINT32(data_string, parms[0].value);
665 cmd_Roaming_numExpectedTbttForBSSLoss(parms, 1);
666 break;
667
668 case G_TESTER_CLI_CMD_ROAMING__THRESHOLDS__TX_RATE_THRESHOLD:
669 P_BUFFER_GET_UINT32(data_string, parms[0].value);
670 cmd_Roaming_txRateThreshold(parms, 1);
671 break;
672
673 case G_TESTER_CLI_CMD_ROAMING__THRESHOLDS__LOW_RSSI_THRESHOLD:
674 P_BUFFER_GET_UINT32(data_string, parms[0].value);
675 cmd_Roaming_lowRssiThreshold(parms, 1);
676 break;
677
678 case G_TESTER_CLI_CMD_ROAMING__THRESHOLDS__LOW_SNR_THRESHOLD:
679 P_BUFFER_GET_UINT32(data_string, parms[0].value);
680 cmd_Roaming_lowSnrThreshold(parms, 1);
681 break;
682
683 case G_TESTER_CLI_CMD_ROAMING__THRESHOLDS__LOW_QUALITY_FOR_SCAN:
684 P_BUFFER_GET_UINT32(data_string, parms[0].value);
685 cmd_Roaming_lowQualityForBackgroungScanCondition(parms, 1);
686 break;
687
688 case G_TESTER_CLI_CMD_ROAMING__THRESHOLDS__NORMAL_QUALITY_FOR_SCAN:
689 P_BUFFER_GET_UINT32(data_string, parms[0].value);
690 cmd_Roaming_normalQualityForBackgroungScanCondition(parms, 1);
691 break;
692
693 case G_TESTER_CLI_CMD_QOS__UPSD__ADD:
694 P_BUFFER_GET_UINT32(data_string, parms[0].value);
695 P_BUFFER_GET_UINT32(data_string, parms[1].value);
696 P_BUFFER_GET_UINT32(data_string, parms[2].value);
697 P_BUFFER_GET_UINT32(data_string, parms[3].value);
698 P_BUFFER_GET_UINT32(data_string, parms[4].value);
699 P_BUFFER_GET_UINT32(data_string, parms[5].value);
700 cmd_add_tspec(parms, 6);
701 break;
702
703 case G_TESTER_CLI_CMD_QOS__UPSD__GET:
704 P_BUFFER_GET_UINT32(data_string, parms[0].value);
705 cmd_get_tspec_params(parms, 1);
706 break;
707
708 case G_TESTER_CLI_CMD_QOS__UPSD__DELETE:
709 P_BUFFER_GET_UINT32(data_string, parms[0].value);
710 P_BUFFER_GET_UINT32(data_string, parms[1].value);
711 cmd_delete_tspec(parms, 2);
712 break;
713
714 case G_TESTER_CLI_CMD_QOS__UPSD__AP_PARAMS:
715 cmd_get_ap_qos_params(NULL, 0);
716 break;
717
718 case G_TESTER_CLI_CMD_QOS__UPSD__AP_CAPABILITIES:
719 cmd_get_ap_qos_capabilities(NULL, 0);
720 break;
721
722 case G_TESTER_CLI_CMD_QOS__UPSD__AC_STATUS:
723 P_BUFFER_GET_UINT32(data_string, parms[0].value);
724 cmd_get_ac_status(parms, 1);
725 break;
726
727 case G_TESTER_CLI_CMD_QOS__UPSD__MEDIUM_USAGE:
728 P_BUFFER_GET_UINT32(data_string, parms[0].value);
729 P_BUFFER_GET_UINT32(data_string, parms[1].value);
730 P_BUFFER_GET_UINT32(data_string, parms[2].value);
731 cmd_medium_usage_threshold(parms, 3);
732 break;
733
734 case G_TESTER_CLI_CMD_QOS__UPSD__PHY_RATE:
735 P_BUFFER_GET_UINT32(data_string, parms[0].value);
736 P_BUFFER_GET_UINT32(data_string, parms[1].value);
737 P_BUFFER_GET_UINT32(data_string, parms[2].value);
738 cmd_phy_rate_threshold(parms, 3);
739 break;
740
741 case G_TESTER_CLI_CMD_QOS__UPSD__DESIRED_PS_MODE:
742 cmd_get_desired_ps_mode(NULL, 0);
743 break;
744
745 case G_TESTER_CLI_CMD_QOS__CLASSIFIER__TXCLASSIFIER:
746 P_BUFFER_GET_UINT32(data_string, parms[0].value);
747 P_BUFFER_GET_UINT32(data_string, parms[1].value);
748 P_BUFFER_GET_UINT32(data_string, parms[2].value);
749 P_BUFFER_GET_UINT32(data_string, parms[3].value);
750 P_BUFFER_GET_UINT32(data_string, parms[4].value);
751 P_BUFFER_GET_UINT32(data_string, parms[5].value);
752 P_BUFFER_GET_UINT32(data_string, parms[6].value);
753 P_BUFFER_GET_UINT32(data_string, parms[7].value);
754 P_BUFFER_GET_UINT32(data_string, parms[8].value);
755 P_BUFFER_GET_UINT32(data_string, parms[9].value);
756 P_BUFFER_GET_UINT32(data_string, parms[10].value);
757 P_BUFFER_GET_UINT32(data_string, parms[11].value);
758 cmd_config_tx_classifier(parms, 12);
759 break;
760
761 case G_TESTER_CLI_CMD_QOS__CLASSIFIER__INSERT:
762 P_BUFFER_GET_UINT32(data_string, parms[0].value);
763 P_BUFFER_GET_UINT32(data_string, parms[1].value);
764 P_BUFFER_GET_UINT32(data_string, parms[2].value);
765 P_BUFFER_GET_UINT32(data_string, parms[3].value);
766 P_BUFFER_GET_UINT32(data_string, parms[4].value);
767 P_BUFFER_GET_UINT32(data_string, parms[5].value);
768 P_BUFFER_GET_UINT32(data_string, parms[6].value);
769 cmd_insert_clsfr_entry(parms, 7);
770 break;
771
772 case G_TESTER_CLI_CMD_QOS__CLASSIFIER__REMOVE:
773 P_BUFFER_GET_UINT32(data_string, parms[0].value);
774 P_BUFFER_GET_UINT32(data_string, parms[1].value);
775 P_BUFFER_GET_UINT32(data_string, parms[2].value);
776 P_BUFFER_GET_UINT32(data_string, parms[3].value);
777 P_BUFFER_GET_UINT32(data_string, parms[4].value);
778 P_BUFFER_GET_UINT32(data_string, parms[5].value);
779 P_BUFFER_GET_UINT32(data_string, parms[6].value);
780 cmd_remove_clsfr_entry(parms, 7);
781 break;
782
783 case G_TESTER_CLI_CMD_QOS__QOSPARAMS:
784 P_BUFFER_GET_UINT32(data_string, parms[0].value);
785 P_BUFFER_GET_UINT32(data_string, parms[1].value);
786 P_BUFFER_GET_UINT32(data_string, parms[2].value);
787 P_BUFFER_GET_UINT32(data_string, parms[3].value);
788 cmd_set_qos_params(parms, 4);
789 break;
790
791 case G_TESTER_CLI_CMD_QOS__POLL_AP_PACKETS:
792 P_BUFFER_GET_UINT32(data_string, parms[0].value);
793 cmd_poll_ap_packets(parms, 1);
794 break;
795
796 case G_TESTER_CLI_CMD_QOS__RX_TIMEOUT:
797 P_BUFFER_GET_UINT32(data_string, parms[0].value);
798 P_BUFFER_GET_UINT32(data_string, parms[1].value);
799 cmd_set_rxTimeOut_params(parms, 2);
800 break;
801
802 case G_TESTER_CLI_CMD_POWER__SET_POWER_MODE:
803 P_BUFFER_GET_UINT32(data_string, parms[0].value);
804 cmd_set_power_mode(parms, 1);
805 break;
806
807 case G_TESTER_CLI_CMD_POWER__SET_POWERSAVE_POWERLEVEL:
808 P_BUFFER_GET_UINT32(data_string, parms[0].value);
809 cmd_set_PowerSave_PowerLevel(parms, 1);
810 break;
811
812 case G_TESTER_CLI_CMD_POWER__TRAFFIC_THRESHOLDS:
813 P_BUFFER_GET_UINT32(data_string, parms[0].value);
814 P_BUFFER_GET_UINT32(data_string, parms[1].value);
815 P_BUFFER_GET_UINT32(data_string, parms[2].value);
816 cmd_traffic_intensity_threshold(parms, 3);
817 break;
818
819 case G_TESTER_CLI_CMD_POWER__ENABLE:
820 cmd_enable_traffic_events(NULL, 0);
821 break;
822
823 case G_TESTER_CLI_CMD_POWER__DISABLE:
824 cmd_disable_traffic_events(NULL, 0);
825 break;
826
827 case G_TESTER_CLI_CMD_EVENTS__REGISTER:
828 /* Register Event */
829 g_tester_register_event(input_string[5] | (input_string[6] << 8));
830 break;
831
832 case G_TESTER_CLI_CMD_EVENTS__UNREGISTER:
833 /* Unregister Event */
834 g_tester_unregister_event(input_string[5] | (input_string[6] << 8));
835 break;
836
837 #ifdef TI_DBG
838
839 case G_TESTER_CLI_CMD_FILE__LOAD:
840 parms[0].value = (U32)(data_string);
841 parms_num =(strlen((char*)parms[0].value) == 0)?0:1;
842 cmd_file_load(parms, parms_num);
843 break;
844
845 case G_TESTER_CLI_CMD_BT_COEXSISTANCE__ENABLE:
846 P_BUFFER_GET_UINT32(data_string, parms[0].value);
847 cmd_bt_coe_enable(parms, 1);
848 break;
849
850 case G_TESTER_CLI_CMD_BT_COEXSISTANCE__RATE:
851 P_BUFFER_GET_UINT32(data_string, parms[0].value);
852 P_BUFFER_GET_UINT32(data_string, parms[1].value);
853 P_BUFFER_GET_UINT32(data_string, parms[2].value);
854 P_BUFFER_GET_UINT32(data_string, parms[3].value);
855 P_BUFFER_GET_UINT32(data_string, parms[4].value);
856 P_BUFFER_GET_UINT32(data_string, parms[5].value);
857 P_BUFFER_GET_UINT32(data_string, parms[6].value);
858 P_BUFFER_GET_UINT32(data_string, parms[7].value);
859 cmd_bt_coe_rate(parms, 8);
860 break;
861
862 case G_TESTER_CLI_CMD_BT_COEXSISTANCE__CONFIG:
863 cmd_Scan_app_clear(NULL, 0);
864 g_tester_scAn__configApp__Display();
865 P_BUFFER_GET_UINT32(data_string, parms[0].value);
866 P_BUFFER_GET_UINT32(data_string, parms[1].value);
867 P_BUFFER_GET_UINT32(data_string, parms[2].value);
868 P_BUFFER_GET_UINT32(data_string, parms[3].value);
869 P_BUFFER_GET_UINT32(data_string, parms[4].value);
870 P_BUFFER_GET_UINT32(data_string, parms[5].value);
871 P_BUFFER_GET_UINT32(data_string, parms[6].value);
872 P_BUFFER_GET_UINT32(data_string, parms[7].value);
873 P_BUFFER_GET_UINT32(data_string, parms[8].value);
874 P_BUFFER_GET_UINT32(data_string, parms[9].value);
875 P_BUFFER_GET_UINT32(data_string, parms[10].value);
876 P_BUFFER_GET_UINT32(data_string, parms[11].value);
877 P_BUFFER_GET_UINT32(data_string, parms[12].value);
878 P_BUFFER_GET_UINT32(data_string, parms[13].value);
879 cmd_bt_coe_config(parms, 14);
880 break;
881
882 case G_TESTER_CLI_CMD_BT_COEXSISTANCE__STATUS:
883 P_BUFFER_GET_UINT32(data_string, parms[0].value);
884 cmd_bt_coe_get_status(parms, 1);
885 break;
886
887 #ifdef EXC_MODULE_INCLUDED
888 case G_TESTER_CLI_CMD_MEASUREMENT__ENABLE:
889 cmd_Measurement_enable(NULL, 0);
890 break;
891
892 case G_TESTER_CLI_CMD_MEASUREMENT__DISABLE:
893 cmd_Measurement_disable(NULL, 0);
894 break;
895
896 case G_TESTER_CLI_CMD_MEASUREMENT__MAX_DURATION:
897 P_BUFFER_GET_UINT32(data_string, parms[0].value);
898 cmd_Measurement_setMaxDuration(parms, 1);
899 break;
900 #endif
901 case G_TESTER_CLI_CMD_REPORT__SET:
902 parms[0].value = (U32)(data_string);
903 parms_num =(strlen((char*)parms[0].value) == 0)?0:1;
904 cmd_report_set(parms, parms_num);
905 break;
906
907 case G_TESTER_CLI_CMD_REPORT__ADD:
908 P_BUFFER_GET_UINT32(data_string, parms[0].value);
909 cmd_report_add(parms, 1);
910 break;
911
912 case G_TESTER_CLI_CMD_REPORT__CLEAR:
913 P_BUFFER_GET_UINT32(data_string, parms[0].value);
914 cmd_report_clear(parms, 1);
915 break;
916
917 case G_TESTER_CLI_CMD_REPORT__LEVEL:
918 P_BUFFER_GET_UINT32(data_string, parms[0].value);
919 cmd_report_severity_level(parms, 1);
920 break;
921
922 case G_TESTER_CLI_CMD_DEBUG__REGISTER:
923 P_BUFFER_GET_UINT32(data_string, parms[0].value);
924 P_BUFFER_GET_UINT32(data_string, parms[1].value);
925 cmd_hw_register(parms, 2);
926 break;
927
928 case G_TESTER_CLI_CMD_DEBUG__PRINT:
929 g_tester_cmd_debug_driver_print(data_string);
930 break;
931
932 case G_TESTER_CLI_CMD_DEBUG__BUFFER:
933 P_BUFFER_GET_UINT32(data_string, parms[0].value);
934 data_string += 9; /* seek to the end of the string */
935 parms[1].value = (U32)(data_string);
936 parms_num =(strlen((char*)parms[1].value) == 0)?1:2;
937 cmd_debug_buffer_put(parms, parms_num);
938 break;
939
940 case G_TESTER_CLI_CMD_ROOT__ABOUT:
941 /* Driver version */
942 g_tester_cmd_get_version();
943 break;
944
945 case G_TESTER_CLI_CMD_ROOT__QUIT:
946 quit_func();
947 break;
948 #endif
949
950 case G_TESTER_CLI_CMD_PLT__REGISTER__READ:
951 {
952 UINT32 RegAddress;
953 P_BUFFER_GET_UINT32(data_string, RegAddress);
954 g_tester_cmd_plt_register_read(RegAddress);
955 }
956 break;
957
958 case G_TESTER_CLI_CMD_PLT__REGISTER__WRITE:
959 {
960 tiUINT32 uiRegAddress;
961 tiUINT32 uiRegValue;
962 P_BUFFER_GET_UINT32(data_string, uiRegAddress);
963 P_BUFFER_GET_UINT32(data_string, uiRegValue);
964 TI_PLT_WriteRegister(g_id_adapter, uiRegAddress, uiRegValue);
965 }
966 break;
967
968 case G_TESTER_CLI_CMD_PLT_RADIO_TUNE:
969 {
970 UINT32 status;
971 TestCmdChannelBand_t ChannelBand;
972 tiUINT8 return_buffer[3];
973 tiUINT8 *p_return_buffer = return_buffer;
974
975 P_BUFFER_GET_UINT32(data_string, ChannelBand.band);
976 P_BUFFER_GET_UINT32(data_string, ChannelBand.channel);
977 status = TI_PLT_RadioTune(g_id_adapter, &ChannelBand);
978 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_PLT_RADIO_TUNE, (UINT8)status);
979 g_tester_send_to_host(return_buffer, 3);
980 }
981 break;
982
983 case G_TESTER_CLI_CMD_PLT__RX_PER__START:
984 cmd_PLT_RxPerStart(NULL, 0);
985 break;
986
987 case G_TESTER_CLI_CMD_PLT__RX_PER__STOP:
988 cmd_PLT_RxPerStop(NULL, 0);
989 break;
990
991 case G_TESTER_CLI_CMD_PLT__RX_PER__CLEAR:
992 cmd_PLT_RxPerClear(NULL, 0);
993 break;
994
995 case G_TESTER_CLI_CMD_PLT__RX_PER__GET_RESULTS:
996 g_tester_cmd_plt_RxPer_GetResults();
997 break;
998
999 case G_TESTER_CLI_CMD_PLT__TX__CW:
1000 {
1001 tiUINT8 return_buffer[3];
1002 tiUINT8 *p_return_buffer = return_buffer;
1003 tiUINT32 status;
1004 TestCmdChannelBand_t PltTxCW;
1005 P_BUFFER_GET_UINT32(data_string, PltTxCW.band);
1006 P_BUFFER_GET_UINT32(data_string, PltTxCW.channel);
1007 status = TI_PLT_TxCW(g_id_adapter, &PltTxCW);
1008 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_PLT__TX__CW, (UINT8)status);
1009 g_tester_send_to_host(return_buffer, 3);
1010 }
1011 break;
1012
1013 case G_TESTER_CLI_CMD_PLT__TX__CONTINUES:
1014 {
1015
1016 PltTxContinues_t PltTxContinues;
1017 P_BUFFER_GET_UINT8(data_string, PltTxContinues.band);
1018 P_BUFFER_GET_UINT8(data_string, PltTxContinues.chID);
1019 P_BUFFER_GET_UINT8(data_string, PltTxContinues.rate);
1020 P_BUFFER_GET_UINT8(data_string, PltTxContinues.preamble);
1021 P_BUFFER_GET_UINT8(data_string, PltTxContinues.InterPacketDelay);
1022 P_BUFFER_GET_UINT8(data_string, PltTxContinues.NumOfFrames);
1023 P_BUFFER_GET_UINT8(data_string, PltTxContinues.mode);
1024
1025 TI_PLT_TxContiues(g_id_adapter, &PltTxContinues);
1026
1027 if (OK == TI_PLT_TxContiues(g_id_adapter, &PltTxContinues))
1028 console_printf_terminal("PltTxContinues (band=%d, chID=%d, rate=%d, preamble=%d, InterPacketDelay=%d, NumOfFrames=%d, mode=0x%x)- OK\n",
1029 PltTxContinues.band,
1030 PltTxContinues.chID,
1031 PltTxContinues.rate,
1032 PltTxContinues.preamble,
1033 PltTxContinues.InterPacketDelay,
1034 PltTxContinues.NumOfFrames,
1035 PltTxContinues.mode);
1036 else
1037 console_printf_terminal("PltTxContinues - NOK\n");
1038 }
1039 break;
1040
1041 case G_TESTER_CLI_CMD_PLT__TX__STOP:
1042 cmd_PLT_TxStop(NULL, 0);
1043 break;
1044
1045 case G_TESTER_CLI_CMD_PLT__MIB__READ:
1046 g_tester_cmd_plt_mib_read(data_string);
1047 break;
1048
1049 case G_TESTER_CLI_CMD_PLT__MIB__WRITE:
1050 g_tester_cmd_plt_mib_write(data_string);
1051 break;
1052
1053 case G_TESTER_CLI_CMD_PRIVACY__WEP__GET:
1054 g_tester_cmd_get_defaultWEPKey();
1055 break;
1056
1057 case G_TESTER_CLI_CMD_PLT__CALIBRATION__RX:
1058 P_BUFFER_GET_UINT32(data_string, parms[0].value);
1059 P_BUFFER_GET_UINT32(data_string, parms[1].value);
1060 P_BUFFER_GET_UINT32(data_string, parms[2].value);
1061 P_BUFFER_GET_UINT32(data_string, parms[3].value);
1062 P_BUFFER_GET_UINT32(data_string, parms[4].value);
1063 cmd_PLT_RxCal(parms, 5);
1064 break;
1065
1066 case G_TESTER_CLI_CMD_PLT__CALIBRATION__TX__START:
1067 P_BUFFER_GET_UINT8(data_string, parms[0].value);
1068 cmd_PLT_TxCalStart(parms, 1);
1069 break;
1070
1071 case G_TESTER_CLI_CMD_PLT__CALIBRATION__TX__STOP:
1072 cmd_PLT_TxCalStop(NULL, 0);
1073 break;
1074
1075 case G_TESTER_CLI_CMD_PLT__CALIBRATION__TX__GAIN_GET:
1076 {
1077 tiUINT8 return_buffer[10];
1078 tiUINT8 *p_return_buffer = return_buffer;
1079
1080 UINT32 status;
1081 PltGainGet_t PLTGainGet;
1082 status = TI_PLT_TxCalGainGet(g_id_adapter, &PLTGainGet);
1083 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_PLT__CALIBRATION__TX__GAIN_GET, (UINT8)status);
1084 if (status == OK)
1085 {
1086 P_BUFFER_ADD_UINT8(p_return_buffer, PLTGainGet.TxGain);
1087 P_BUFFER_ADD_UINT8(p_return_buffer, PLTGainGet.TxUpperBound);
1088 P_BUFFER_ADD_UINT8(p_return_buffer, PLTGainGet.TxLowerBound);
1089 }
1090 g_tester_send_to_host(return_buffer, p_return_buffer-return_buffer);
1091 }
1092 break;
1093
1094 case G_TESTER_CLI_CMD_PLT__CALIBRATION__TX__GAIN_ADJUST:
1095 P_BUFFER_GET_UINT32(data_string, parms[0].value);
1096 cmd_PLT_TxCalGainAdjust(parms, 1);
1097 break;
1098
1099 case G_TESTER_CLI_CMD_PLT__CALIBRATION__GET_NVS_BUFFER:
1100 g_tester_plt_calibration_get_nvs_buffer();
1101 break;
1102
1103 default:
1104 console_printf_terminal("g_tester - unsupported command!\n");
1105 break;
1106 }
1107 }
1108
1109 return_value = TRUE;
1110 }
1111
1112 return return_value;
1113 }
1114
1115 /************************************************************************
1116 * g_tester_process_general_cmd_run_cmd *
1117 ************************************************************************
1118 DESCRIPTION:
1119
1120 CONTEXT : main process only!
1121 ************************************************************************/
g_tester_process_general_cmd_run_cmd(unsigned char * cmd_buffer)1122 void g_tester_process_general_cmd_run_cmd(unsigned char *cmd_buffer)
1123 {
1124 tiUINT8 return_buffer[5];
1125 tiUINT8 *p_return_buffer = return_buffer;
1126 tiUINT16 return_value;
1127
1128 console_printf_terminal("g_tester - Executing cmd line: %s\n", cmd_buffer);
1129
1130 return_value = (tiUINT16)system((const char*)cmd_buffer);
1131
1132 console_printf_terminal("g_tester - Execution result: 0x%x\n", return_value);
1133
1134 /* Set the header */
1135 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_GENERAL_CMD_RUN_CMD, (UINT8)0x00);
1136
1137 /* Add the result */
1138 P_BUFFER_ADD_UINT16(p_return_buffer, return_value);
1139
1140 g_tester_send_to_host(return_buffer, 5);
1141 }
1142
1143 /************************************************************************
1144 * g_tester_process_get_init_table *
1145 ************************************************************************
1146 DESCRIPTION:
1147
1148 CONTEXT : main process only!
1149 ************************************************************************/
g_tester_process_get_init_table(unsigned char * cmd_buffer)1150 void g_tester_process_get_init_table(unsigned char *cmd_buffer)
1151 {
1152 UINT8 buffer[(1024 * 5)];
1153 UINT8 *p_return_buffer = buffer;
1154 UINT32 length;
1155
1156 UINT8 init_table_file_name_length = *(cmd_buffer + 0);
1157 unsigned char *init_table_file_name = (cmd_buffer + 1);
1158
1159 UINT8 error_code = G_TESTER_GWSI_GET_INIT_TABLE_NO_ERROR;
1160
1161 int FileDescriptor;
1162
1163 if (init_table_file_name_length == 0)
1164 {
1165 console_printf_terminal("g_tester, g_tester_process_get_init_table, Error - no file name!\n");
1166
1167 error_code = G_TESTER_GWSI_GET_INIT_TABLE_ERROR_NO_FILE_NAME;
1168 }
1169 else
1170 {
1171 /* Get the Init buffer from the driver */
1172 TI_GWSIGetInitTable(g_id_adapter, (tiUINT32 *)&buffer[0]);
1173
1174 /* The first 4 bytes are the buffer length */
1175 length = *(UINT32 *)&buffer[0];
1176
1177 if (length > 0)
1178 {
1179 FileDescriptor = open((const char*)init_table_file_name, O_CREAT | O_WRONLY);
1180
1181 if (FileDescriptor != -1)
1182 {
1183 if (write(FileDescriptor, buffer, length + sizeof(UINT32) ) != length + sizeof(UINT32))
1184 {
1185 console_printf_terminal("g_tester, g_tester_process_get_init_table, Error writing to file (%d)\n", errno);
1186
1187 error_code = G_TESTER_GWSI_GET_INIT_TABLE_ERROR_WRITING_TO_FILE;
1188 }
1189 else
1190 {
1191 console_printf_terminal("g_tester, g_tester_process_get_init_table, Written 0x%x bytes to %s\n\n", (length - 4), init_table_file_name);
1192 }
1193
1194 close(FileDescriptor);
1195 }
1196 else
1197 {
1198 console_printf_terminal("g_tester, g_tester_process_get_init_table, Error creating %s (%d)\n", init_table_file_name, errno);
1199
1200 error_code = G_TESTER_GWSI_GET_INIT_TABLE_ERROR_CREATING_FILE;
1201 }
1202 }
1203 else
1204 {
1205 console_printf_terminal("g_tester, g_tester_process_get_init_table, Error - driver init table not availble!\n");
1206
1207 error_code = G_TESTER_GWSI_GET_INIT_TABLE_ERROR_TABLE_NOT_AVAIL;
1208 }
1209 }
1210
1211 /* Set the header */
1212 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_GENERAL_CMD_GET_INIT_T, error_code);
1213
1214 g_tester_send_to_host(buffer, 3);
1215 }
1216
1217 /************************************************************************
1218 * g_tester_cmd_status *
1219 ************************************************************************
1220 DESCRIPTION:
1221
1222 CONTEXT : main process only!
1223 ************************************************************************/
g_tester_cmd_status()1224 void g_tester_cmd_status()
1225 {
1226 /***************************
1227 Return buffer structure
1228
1229 Bytes 0-1 : OpCode (0x0003)
1230 Byte 2 : Command Status
1231 Byte 3 : Status (0/1/2)
1232 Bytes 4-9 : MAC Address
1233 Byte 10 : SSID length
1234 Bytes 11-42: SSID
1235 Bytes 43-48: BSSID
1236 Byte 49: : Channel
1237 ***************************/
1238
1239 tiUINT8 return_buffer[50];
1240 tiUINT8 *p_return_buffer = return_buffer;
1241
1242 tiINT32 res;
1243 tiUINT32 data;
1244 OS_802_11_BSSID_EX bssid_ex;
1245 OS_802_11_MAC_ADDRESS mac_address;
1246 OS_802_11_SSID ssid;
1247
1248 /* Set the header to dummy values */
1249 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_DRIVER__STATUS, 0x00);
1250
1251 /* Get the Driver status (Running / Stop) */
1252 res = TI_WLAN_IsDriverRun(g_id_adapter, (tiBOOL *)&data);
1253
1254 if (res == 0)
1255 {
1256 /* Insert the status to the return buffer */
1257 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)data);
1258
1259 /* Get the MAC address */
1260 res = TI_GetCurrentAddress(g_id_adapter, &mac_address);
1261
1262 if (res == 0)
1263 {
1264 P_BUFFER_ADD_DATA(p_return_buffer, &mac_address, sizeof(mac_address));
1265
1266 /* Get the SSID */
1267 res = TI_GetCurrentSSID(g_id_adapter, &ssid);
1268
1269 if (res == 0)
1270 {
1271 /* killme!!!*/
1272 /*if (isJunkSSID((void *)&ssid))*/
1273 /*{*/
1274 /* Put '0' at the length field */
1275 /* ssid.SsidLength = 0;*/
1276 /*}*/
1277
1278 /* Add ssid length */
1279 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)ssid.SsidLength);
1280
1281 /* Add ssid */
1282 P_BUFFER_ADD_DATA(p_return_buffer, ssid.Ssid, sizeof(ssid.Ssid));
1283
1284 /* Get the BSSID */
1285 res = TI_GetSelectedBSSIDInfo(g_id_adapter, &bssid_ex);
1286
1287 if (res == 0)
1288 {
1289 /* Add the BSSID */
1290 P_BUFFER_ADD_DATA(p_return_buffer, &bssid_ex.MacAddress, sizeof(bssid_ex.MacAddress));
1291
1292 /* Get the Channel */
1293 res = TI_GetCurrentChannel(g_id_adapter, &data);
1294
1295 if (res == 0)
1296 {
1297 /* Add channel */
1298 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)data);
1299 }
1300 }
1301 }
1302 }
1303 }
1304
1305 p_return_buffer = return_buffer;
1306
1307 /* Set the G_Tester result value */
1308 res = (res == 0) ? G_TESTER_STATUS_OK : G_TESTER_STATUS_ERROR;
1309
1310 /* Set the header */
1311 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_DRIVER__STATUS, (UINT8)res);
1312
1313 g_tester_send_to_host(return_buffer, 50);
1314 }
1315
1316 /************************************************************************
1317 * g_tester_cmd_status *
1318 ************************************************************************
1319 DESCRIPTION:
1320
1321 CONTEXT : main process only!
1322 ************************************************************************/
g_tester_bssid_list()1323 void g_tester_bssid_list()
1324 {
1325 /***************************
1326 Return buffer structure (for header):
1327
1328 Bytes 0-1 : OpCode (0x0004)
1329 Byte 2 : Command Status
1330 Byte 3 : Number of elements
1331 ***************************/
1332
1333 /***************************
1334 Return buffer structure (for each element):
1335
1336 Bytes 0-1 : OpCode (0x0005)
1337 Byte 2 : Command Status
1338 Bytes 3-8 : MAC Address
1339 Byte 9 : Privacy
1340 Bytes 10-13 : RSSI
1341 Byte 14 : Infra mode
1342 Byte 15 : Channel
1343 Bytes 16-19 : Qos
1344 Byte 20 : SSID length
1345 Bytes 21-52 : SSID
1346 ***************************/
1347
1348 tiUINT8 return_buffer[55];
1349 tiUINT8 *p_return_buffer = return_buffer;
1350
1351 OS_802_11_BSSID_LIST_EX *list;/* = (OS_802_11_BSSID_LIST_EX *) data; */
1352 OS_802_11_BSSID_EX *bssid;
1353 tiUINT32 number_items;
1354 tiINT32 res;
1355 tiUINT8 index;
1356 tiUINT32 Qos = 0;
1357
1358 console_printf_terminal("g_tester, g_tester_bssid_list()\n");
1359
1360 res = TI_GetBSSIDList(g_id_adapter, &list);
1361 if( res || !list )
1362 {
1363 /*************************/
1364 /* Error retrieving data */
1365 /***********************/
1366
1367 /* Set the header */
1368 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_CONNECTION__BSSID_LIST, G_TESTER_STATUS_ERROR);
1369
1370 /* Set dummy UINT8 */
1371 P_BUFFER_ADD_UINT8(p_return_buffer, 0x00);
1372
1373 g_tester_send_to_host(return_buffer, 4);
1374 }
1375 else
1376 {
1377 bssid = &list->Bssid[0];
1378 number_items = list->NumberOfItems;
1379
1380 /*********************/
1381 /* Header structure */
1382 /*******************/
1383
1384 /* Set the header */
1385 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_CONNECTION__BSSID_LIST, G_TESTER_STATUS_OK);
1386
1387 /* Set dummy UINT8 */
1388 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)number_items);
1389
1390 g_tester_send_to_host(return_buffer, 4);
1391
1392 /***********************/
1393 /* Elements structure */
1394 /*********************/
1395
1396 for (index = 0; index < number_items; index++)
1397 {
1398 p_return_buffer = return_buffer;
1399
1400 /* Set the header */
1401 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, (G_TESTER_CLI_CMD_CONNECTION__BSSID_LIST + 1), G_TESTER_STATUS_OK);
1402
1403 P_BUFFER_ADD_DATA(p_return_buffer, bssid->MacAddress, sizeof(bssid->MacAddress));
1404
1405 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)bssid->Privacy);
1406
1407 P_BUFFER_ADD_UINT32(p_return_buffer, bssid->Rssi);
1408
1409 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)bssid->InfrastructureMode);
1410
1411 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)Freq2Chan(bssid->Configuration.Union.channel));
1412
1413 Qos = parseBssidIe(bssid);
1414 P_BUFFER_ADD_UINT32(p_return_buffer, (tiUINT32)Qos);
1415
1416 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)bssid->Ssid.SsidLength);
1417
1418 P_BUFFER_ADD_DATA(p_return_buffer, bssid->Ssid.Ssid, sizeof(bssid->Ssid.Ssid));
1419
1420 g_tester_send_to_host(return_buffer, 53);
1421
1422 /* Move to the next bssid */
1423 bssid = (OS_802_11_BSSID_EX *) (((char *) bssid) + bssid->Length);
1424 }
1425
1426 free(list);
1427 }
1428 }
1429
1430 /************************************************************************
1431 * g_tester_register_event *
1432 ************************************************************************
1433 DESCRIPTION:
1434
1435 CONTEXT :
1436 ************************************************************************/
g_tester_register_event(tiUINT16 event_mask)1437 void g_tester_register_event(tiUINT16 event_mask)
1438 {
1439 int index;
1440 ConParm_t param;
1441
1442 console_printf_terminal("g_tester, g_tester_register_event (Mask = 0x%x)\n", event_mask);
1443
1444 /* Go over the mask bits */
1445 for (index = 0; index < 16; index++)
1446 {
1447 if ((event_mask & (1 << index)) != (tiUINT16)0x0000)
1448 {
1449 param.value = index;
1450 cmd_events_register(¶m, 1);
1451 }
1452 }
1453 }
1454
1455 /************************************************************************
1456 * g_tester_unregister_event *
1457 ************************************************************************
1458 DESCRIPTION:
1459
1460 CONTEXT :
1461 ************************************************************************/
g_tester_unregister_event(tiUINT16 event_mask)1462 void g_tester_unregister_event(tiUINT16 event_mask)
1463 {
1464 int index;
1465 ConParm_t param;
1466
1467 console_printf_terminal("g_tester, g_tester_unregister_event (Mask = 0x%x)\n", event_mask);
1468
1469 /* Go over the mask bits */
1470 for (index = 0; index < 16; index++)
1471 {
1472 if ((event_mask & (1 << index)) != (tiUINT16)0x0000)
1473 {
1474 param.value = index;
1475 cmd_events_unregister(¶m, 1);
1476 }
1477 }
1478 }
1479
1480 /************************************************************************
1481 * g_tester_cmd_debug_driver_print *
1482 ************************************************************************
1483 DESCRIPTION:
1484
1485 CONTEXT :
1486 ************************************************************************/
g_tester_cmd_debug_driver_print(unsigned char * cmd_buffer)1487 void g_tester_cmd_debug_driver_print(unsigned char *cmd_buffer)
1488 {
1489 #ifdef TI_DBG
1490
1491 tiUINT32 *buf = (tiUINT32 *)cmd_buffer;
1492
1493 ConParm_t param[2];
1494
1495 param[0].value = buf[0];
1496 param[1].value = buf[1];
1497
1498 console_printf_terminal("DEBUG: values: (0x%x, 0x%x)\n", param[0].value, param[1].value);
1499
1500 cmd_debug_driver_print((ConParm_t *)¶m, 2);
1501
1502 #endif
1503 }
1504
1505 /************************************************************************
1506 * g_tester_receive_event *
1507 ************************************************************************
1508 DESCRIPTION:
1509
1510 CONTEXT :
1511 ************************************************************************/
g_tester_receive_event(unsigned char event_index)1512 void g_tester_receive_event(unsigned char event_index)
1513 {
1514 /***************************
1515 Return buffer structure :
1516
1517 Bytes 0-1 : OpCode (0x1050)
1518 Byte 2 : Command Status
1519 Byte 3 : Event ID
1520 ***************************/
1521
1522 tiUINT8 return_buffer[55];
1523 tiUINT8 *p_return_buffer = return_buffer;
1524
1525 /* Set the header */
1526 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, 0x1050, G_TESTER_STATUS_OK);
1527
1528 /* Set event index */
1529 P_BUFFER_ADD_UINT8(p_return_buffer, event_index);
1530
1531 g_tester_send_to_host(return_buffer, 4);
1532 }
1533
1534 /************************************************************************
1535 * g_tester_send_received_event *
1536 ************************************************************************
1537 DESCRIPTION:
1538
1539 CONTEXT :
1540 ************************************************************************/
g_tester_send_received_event(unsigned int cmd_op,tiUINT8 status)1541 void g_tester_send_received_event(unsigned int cmd_op, tiUINT8 status)
1542 {
1543 /***************************
1544 Return buffer structure :
1545
1546 Bytes 0-1 : OpCode (0xFFFF)
1547 Byte 2-3 : Command Opcode
1548 ***************************/
1549
1550 tiUINT8 return_buffer[5];
1551 tiUINT8 *p_return_buffer = return_buffer;
1552
1553 /* Add the event opcode */
1554 P_BUFFER_ADD_UINT16(p_return_buffer, 0x1000);
1555
1556 /* Add the command opcode */
1557 P_BUFFER_ADD_UINT16(p_return_buffer, cmd_op);
1558
1559 /* Add the command opcode */
1560 P_BUFFER_ADD_UINT8(p_return_buffer, status);
1561
1562 g_tester_send_to_host(return_buffer, 5);
1563 }
1564
1565 /************************************************************************
1566 * g_tester_process_gwsi_init_cmd *
1567 ************************************************************************
1568 DESCRIPTION:
1569
1570 CONTEXT :
1571 ************************************************************************/
g_tester_process_gwsi_init_cmd(unsigned char * cmd_buffer)1572 void g_tester_process_gwsi_init_cmd(unsigned char *cmd_buffer)
1573 {
1574 char *firmware_file_name;
1575 unsigned char firmware_file_name_length;
1576 char *e2prom_file_name;
1577 unsigned char e2prom_file_name_length;
1578
1579 unsigned char *init_buffer = NULL;
1580 UINT32 init_buffer_size;
1581
1582 unsigned char host_event_buffer[3];
1583 unsigned char *p_host_event_buffer = host_event_buffer;
1584
1585 FILE *firmware_file = NULL;
1586 FILE *e2prom_file = NULL;
1587 UINT32 firmware_image_length = 0;
1588 UINT32 e2prom_image_length = 0;
1589
1590 unsigned char error_code = G_TESTER_GWSI_INIT_NO_ERROR;
1591
1592 /* Prepare the parameters */
1593 firmware_file_name_length = *(cmd_buffer + 0);
1594 firmware_file_name = (char*)(cmd_buffer + 1);
1595 e2prom_file_name_length = *(cmd_buffer + firmware_file_name_length + 2);
1596 e2prom_file_name = (char*)(cmd_buffer + firmware_file_name_length + 3);
1597
1598 console_printf_terminal("g_tester, DEBUG:0x%x, 0x%x!\n", firmware_image_length, e2prom_file_name_length);
1599
1600 /***************************/
1601 /* Open the firmware file */
1602 /*************************/
1603
1604 if ((firmware_file = fopen(firmware_file_name, "r")) != NULL)
1605 {
1606 /* Get firmware file length */
1607 if (fseek(firmware_file, 0, SEEK_END) == 0)
1608 {
1609 firmware_image_length = ftell(firmware_file);
1610 rewind(firmware_file);
1611
1612 console_printf_terminal("g_tester, GWSI Init, Firmeware image file is %s, size = 0x%x!\n", firmware_file_name, firmware_image_length);
1613 }
1614 else
1615 {
1616 console_printf_terminal("g_tester, Error retriving firmware file length!\n");
1617
1618 error_code = G_TESTER_GWSI_INIT_ERROR_READING_FW_FILE_LENGTH;
1619 }
1620 }
1621 else
1622 {
1623 console_printf_terminal("g_tester, Error opening firmware file!\n");
1624
1625 error_code = G_TESTER_GWSI_INIT_ERROR_OPENING_FW_FILE;
1626 }
1627
1628 /*************************/
1629 /* Open the e2prom file */
1630 /***********************/
1631
1632 console_printf_terminal("DEBUG The length is : %d\n", e2prom_file_name_length);
1633
1634 if ((error_code == G_TESTER_GWSI_INIT_NO_ERROR) && (e2prom_file_name_length > 0))
1635 {
1636 /* Open the e2prom file */
1637 if ((e2prom_file = fopen(e2prom_file_name, "r")) != NULL)
1638 {
1639 /* Get firmware file length */
1640 if (fseek(e2prom_file, 0, SEEK_END) == 0)
1641 {
1642 e2prom_image_length = ftell(e2prom_file);
1643 rewind(e2prom_file);
1644
1645 console_printf_terminal("g_tester, GWSI Init, E2prom image file is %s, size = 0x%x!\n", e2prom_file_name, e2prom_image_length);
1646 }
1647 else
1648 {
1649 console_printf_terminal("g_tester, Error retrieving e2prom file length!\n");
1650
1651 error_code = G_TESTER_GWSI_INIT_ERROR_READING_EP_FILE_LENGTH;
1652 }
1653 }
1654 else
1655 {
1656 console_printf_terminal("g_tester, Error opening e2prom file!\n");
1657
1658 error_code = G_TESTER_GWSI_INIT_ERROR_OPENING_EP_FILE;
1659 }
1660 }
1661
1662 /****************************/
1663 /* Prepare the init struct */
1664 /**************************/
1665
1666 if (error_code == G_TESTER_GWSI_INIT_NO_ERROR)
1667 {
1668 init_buffer_size = 16 + firmware_image_length + e2prom_image_length;
1669
1670 init_buffer = malloc(init_buffer_size);
1671
1672 if (init_buffer != NULL)
1673 {
1674 /* Set the GWSI tester command parameters */
1675 P_BUFFER_ADD_UINT16(init_buffer, G_TESTER_GWSI_CMD_INITIALIZE); /* Opcode */
1676 P_BUFFER_ADD_UINT32(init_buffer, init_buffer_size); /* Length */
1677 P_BUFFER_ADD_UINT16(init_buffer, 0x0000); /* Align bytes*/
1678 P_BUFFER_ADD_UINT32(init_buffer, firmware_image_length);
1679 P_BUFFER_ADD_UINT32(init_buffer, e2prom_image_length);
1680
1681 init_buffer -= (16);
1682
1683 /* Read the firmware image */
1684 if (fread(init_buffer + (16), 1, firmware_image_length, firmware_file) == firmware_image_length)
1685 {
1686 if (e2prom_image_length)
1687 {
1688 /* Read the e2prom image */
1689 if (fread(init_buffer + (16) + firmware_image_length, 1, e2prom_image_length, e2prom_file) != e2prom_image_length)
1690 {
1691 console_printf_terminal("g_tester, GWSI Init, Error reading e2prom image!\n");
1692
1693 error_code = G_TESTER_GWSI_INIT_ERROR_READING_EP_FILE;
1694 }
1695 }
1696
1697 if (error_code == G_TESTER_GWSI_INIT_NO_ERROR)
1698 {
1699 console_printf_terminal("g_tester, GWSI Init, Sending command to driver (size = 0x%x)!\n", init_buffer_size);
1700
1701 /* Send the command */
1702 TI_GWSIInitialize(g_id_adapter, (tiUINT32 *)init_buffer);
1703 }
1704 }
1705 else
1706 {
1707 console_printf_terminal("g_tester, GWSI Init, Error reading firmware image!\n");
1708
1709 error_code = G_TESTER_GWSI_INIT_ERROR_READING_FW_FILE;
1710 }
1711 }
1712 else
1713 {
1714 console_printf_terminal("g_tester, GWSI Init, Error allocating memory for init buffer!\n");
1715
1716 error_code = G_TESTER_GWSI_INIT_ERROR_ALLOCATION_MEMORY;
1717 }
1718 }
1719
1720 /************************************/
1721 /* Fall-back -> free all resources */
1722 /**********************************/
1723
1724 if (firmware_file)
1725 {
1726 fclose(firmware_file);
1727 }
1728
1729 if (e2prom_file)
1730 {
1731 fclose(e2prom_file);
1732 }
1733
1734 if (init_buffer)
1735 {
1736 free(init_buffer);
1737 }
1738
1739 /****************************/
1740 /* Send result to the host */
1741 /**************************/
1742
1743 if (error_code != G_TESTER_GWSI_INIT_NO_ERROR)
1744 {
1745 /*************************************************/
1746 /* Send event with error indication to the host */
1747 /***********************************************/
1748
1749 P_BUFFER_ADD_HDR_PARAMS(p_host_event_buffer, G_TESTER_GWSI_CMD_INITIALIZE, error_code);
1750
1751 g_tester_send_to_host(host_event_buffer, 3);
1752 }
1753 }
1754
1755 /************************************************************************
1756 * g_tester_process_gwsi_config_cmd *
1757 ************************************************************************
1758 DESCRIPTION:
1759
1760 CONTEXT :
1761 ************************************************************************/
g_tester_process_gwsi_config_cmd(unsigned char * cmd_buffer)1762 void g_tester_process_gwsi_config_cmd(unsigned char *cmd_buffer)
1763 {
1764 char *init_file_name;
1765 unsigned char init_file_name_length;
1766
1767 unsigned char host_event_buffer[3];
1768 unsigned char *p_host_event_buffer = host_event_buffer;
1769
1770 int init_file_descriptor;
1771 struct stat file_status_record;
1772
1773 UINT8 *buffer = NULL;
1774
1775 UINT8 error_code = G_TESTER_GWSI_CONFIG_NO_ERROR;
1776
1777 /* Prepare the parameters */
1778 init_file_name_length = *(cmd_buffer + 0);
1779 init_file_name = (char*)(cmd_buffer + 1);
1780
1781 init_file_descriptor = open(init_file_name, O_RDONLY);
1782
1783 if (init_file_descriptor != -1)
1784 {
1785 if (fstat(init_file_descriptor, &file_status_record) != -1)
1786 {
1787 buffer = malloc(file_status_record.st_size + (sizeof(UINT16) * 2));
1788
1789 if (buffer != NULL)
1790 {
1791 int temp;
1792 if ((temp = read(init_file_descriptor, buffer + (sizeof(UINT16) * 2), file_status_record.st_size)) == file_status_record.st_size)
1793 {
1794 console_printf_terminal("g_tester, GWSI_Config, Sending config request to driver (file = %s, buffer size = 0x%x)\n", init_file_name, file_status_record.st_size + (sizeof(UINT16) * 2));
1795
1796 P_BUFFER_ADD_UINT16(buffer, G_TESTER_GWSI_CMD_CONFIG);
1797 P_BUFFER_ADD_UINT16(buffer, file_status_record.st_size);
1798 buffer -= (sizeof(UINT16) * 2);
1799
1800 /* Send the command to the driver */
1801 TI_GWSIConfig(g_id_adapter, (tiUINT32 *)buffer);
1802 }
1803 else
1804 {
1805 console_printf_terminal("g_tester, GWSI_Config, Error reading from file (%d)\n", errno);
1806 error_code = G_TESTER_GWSI_CONFIG_ERROR_READING_FILE;
1807 }
1808 }
1809 else
1810 {
1811 console_printf_terminal("g_tester, GWSI_Config, Error allocating memory (%d)\n", errno);
1812 error_code = G_TESTER_GWSI_CONFIG_ERROR_ALLOCATING_MEMORY;
1813 }
1814 }
1815 else
1816 {
1817 console_printf_terminal("g_tester, GWSI_Config, Error retriving file size (%d)\n", errno);
1818 error_code = G_TESTER_GWSI_CONFIG_ERROR_GETIING_FILE_SIZE;
1819 }
1820 }
1821 else
1822 {
1823 console_printf_terminal("g_tester, GWSI_Config, Error opening file (%d)\n", errno);
1824 error_code = G_TESTER_GWSI_CONFIG_ERROR_OPENING_FILE;
1825 }
1826
1827 /*******************/
1828 /* Free resources */
1829 /*****************/
1830
1831 if (init_file_descriptor != -1)
1832 {
1833 close(init_file_descriptor);
1834 }
1835
1836 if (buffer != NULL)
1837 {
1838 free(buffer);
1839 }
1840
1841 /****************************/
1842 /* Send result to the host */
1843 /**************************/
1844
1845 if (error_code != G_TESTER_GWSI_CONFIG_NO_ERROR)
1846 {
1847 P_BUFFER_ADD_HDR_PARAMS(p_host_event_buffer, G_TESTER_GWSI_CMD_CONFIG, error_code);
1848
1849 g_tester_send_to_host(host_event_buffer, 3);
1850 }
1851 }
1852
1853 /************************************************************************
1854 * g_tester_process_gwsi_release_cmd *
1855 ************************************************************************
1856 DESCRIPTION:
1857
1858 CONTEXT :
1859 ************************************************************************/
g_tester_process_gwsi_release_cmd(unsigned char * cmd_buffer)1860 void g_tester_process_gwsi_release_cmd(unsigned char *cmd_buffer)
1861 {
1862
1863 tiUINT8 return_buffer[2];
1864 tiUINT8 *p_return_buffer = return_buffer;
1865
1866 /* Add the event opcode */
1867 P_BUFFER_ADD_UINT16(p_return_buffer, G_TESTER_GWSI_CMD_RELEASE);
1868
1869 console_printf_terminal("g_tester, GWSI_Release, Sending release to driver.\n");
1870
1871 /* Send the command to the driver */
1872 TI_GWSIRelease(g_id_adapter, (tiUINT32 *)return_buffer);
1873 }
1874
1875
1876 /************************************************************************
1877 * g_tester_process_gwsi_cmd *
1878 ************************************************************************
1879 DESCRIPTION:
1880
1881 CONTEXT :
1882 ************************************************************************/
g_tester_process_gwsi_cmd(unsigned char * cmd_buffer)1883 void g_tester_process_gwsi_cmd(unsigned char *cmd_buffer)
1884 {
1885 TI_GWSICommand(g_id_adapter, (tiUINT32 *)cmd_buffer);
1886 }
1887
1888 /************************************************************************
1889 * g_tester_process_gwsi_cmd *
1890 ************************************************************************
1891 DESCRIPTION:
1892
1893 CONTEXT :
1894 ************************************************************************/
g_tester_cmd_get_version()1895 void g_tester_cmd_get_version()
1896 {
1897 /***************************
1898 Return buffer structure :
1899
1900 Bytes 0-1 : OpCode (0x1050)
1901 Byte 2 : Command Status
1902 Byte 3-6 : Driver Version
1903 Byte 7-10 : FW Version
1904 Byte 11-14: HW Version
1905 Byte 15-18: NVM Version
1906 ***************************/
1907
1908 tiUINT32 ret;
1909 tiUINT8 return_buffer[19];
1910 tiUINT8 *p_return_buffer = return_buffer;
1911
1912 TIWLN_VERSION_EX data;
1913
1914 console_printf_terminal("g_tester, g_tester_cmd_get_version.\n");
1915
1916 ret = (tiUINT8)TI_GetDriverVersion(g_id_adapter, &data );
1917
1918 if (ret == 0)
1919 {
1920 /* Set the header */
1921 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_ROOT__ABOUT, G_TESTER_STATUS_OK);
1922
1923 /* ADD the versions */
1924 P_BUFFER_ADD_UINT32(p_return_buffer, (UINT32)(*(UINT32 *)&data.DrvVersion));
1925 P_BUFFER_ADD_UINT32(p_return_buffer, (UINT32)(*(UINT32 *)&data.FWVersion));
1926 P_BUFFER_ADD_UINT32(p_return_buffer, (UINT32)(*(UINT32 *)&data.HWVersion));
1927 P_BUFFER_ADD_UINT32(p_return_buffer, (UINT32)(*(UINT32 *)&data.NVVersion));
1928 }
1929 else
1930 {
1931 /* Set the header */
1932 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_ROOT__ABOUT, G_TESTER_STATUS_ERROR);
1933 }
1934
1935 g_tester_send_to_host(return_buffer, 19);
1936 }
1937
1938
1939 /************************************************************************
1940 * g_tester_get_advanced_statistics_report *
1941 ************************************************************************
1942 DESCRIPTION:
1943
1944 CONTEXT :
1945 ************************************************************************/
g_tester_set_rate(tiUINT8 rate_index)1946 void g_tester_set_rate(tiUINT8 rate_index)
1947 {
1948 ConParm_t param;
1949 char rate_1mbps_rate_str[5] = "1";
1950 char rate_2mbps_rate_str[5] = "2";
1951 char rate_5_5mbps_rate_str[5] = "5.5";
1952 char rate_11mbps_rate_str[5] = "11";
1953 char rate_22mbps_rate_str[5] = "22";
1954
1955 switch(rate_index)
1956 {
1957 case 0:
1958 param.value = (tiUINT32)rate_1mbps_rate_str;
1959 break;
1960
1961 case 1:
1962 param.value = (tiUINT32)rate_2mbps_rate_str;
1963 break;
1964
1965 case 2:
1966 param.value = (tiUINT32)rate_5_5mbps_rate_str;
1967 break;
1968
1969 case 3:
1970 param.value = (tiUINT32)rate_11mbps_rate_str;
1971 break;
1972
1973 case 4:
1974 param.value = (tiUINT32)rate_22mbps_rate_str;
1975 break;
1976
1977 default:
1978 param.value = (tiUINT32)rate_1mbps_rate_str;
1979 break;
1980 }
1981
1982 cmd_modify_rate(¶m, 1);
1983 }
1984
1985 /************************************************************************
1986 * g_tester_wep_add_key *
1987 ************************************************************************
1988 DESCRIPTION:
1989
1990 CONTEXT :
1991 ************************************************************************/
g_tester_wep_add_key(unsigned char * cmd_buffer)1992 void g_tester_wep_add_key(unsigned char *cmd_buffer)
1993 {
1994 UINT8 key_length;
1995 UINT8 key_type;
1996 ConParm_t key_params[4];
1997 UINT8 hex_str[] = "hex";
1998 UINT8 text_str[] = "text";
1999
2000 /* Zero the variables (because i use 8 bit in 32 bit variables) */
2001 key_params[1].value = 0;
2002 key_params[2].value = 0;
2003
2004 /* Read parameters */
2005 key_length = cmd_buffer[65]; /* Buffer length */
2006 key_type = cmd_buffer[68]; /* Key type (hex = 0, text = 1) */
2007
2008 /* Prepare parameters for the command */
2009 key_params[0].value = (tiUINT32)&cmd_buffer[0];
2010 cmd_buffer[key_length] = 0;
2011
2012 key_params[1].value = (tiUINT32)cmd_buffer[66];
2013
2014 key_params[2].value = (tiUINT32)cmd_buffer[67];
2015
2016 if (key_type == 0)
2017 {
2018 key_params[3].value = (tiUINT32)&hex_str[0];
2019 }
2020 else
2021 {
2022 key_params[3].value = (tiUINT32)&text_str[0];
2023 }
2024
2025 /* Call the addkey command */
2026 cmd_privacy_addkey(&key_params[0], 4);
2027 }
2028
2029 /************************************************************************
2030 * g_tester_gwsi_event_handler *
2031 ************************************************************************
2032 DESCRIPTION:
2033
2034 CONTEXT :
2035 ************************************************************************/
g_tester_gwsi_event_handler(IPC_EV_DATA * pData)2036 int g_tester_gwsi_event_handler(IPC_EV_DATA* pData)
2037 {
2038 console_printf_terminal("g_tester, g_tester_gwsi_event_handler. (Length = %d)\n", pData->uBufferSize);
2039
2040 g_tester_send_to_host(pData->uBuffer, pData->uBufferSize);
2041
2042 return 0;
2043 }
2044
2045 /************************************************************************
2046 * g_tester_gwsi_event_handler *
2047 ************************************************************************
2048 DESCRIPTION: Read the register value and send it back by event.
2049
2050 ************************************************************************/
g_tester_cmd_plt_register_read(UINT32 uiRegAddress)2051 void g_tester_cmd_plt_register_read(UINT32 uiRegAddress)
2052 {
2053 /***************************
2054 Return buffer structure :
2055
2056 Bytes 0-1 : OpCode (0x0173)
2057 Byte 2 : Command Status
2058 Byte 3-6 : Register value
2059 ***************************/
2060
2061 tiUINT8 return_buffer[19];
2062 tiUINT8 *p_return_buffer = return_buffer;
2063
2064 UINT32 uiRegisterValue;
2065 tiUINT32 status = TI_PLT_ReadRegister(g_id_adapter, uiRegAddress, &uiRegisterValue);
2066
2067 /* Set the header */
2068 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_PLT__REGISTER__READ, (UINT8)status);
2069
2070 /* Add the result */
2071 P_BUFFER_ADD_UINT32(p_return_buffer, uiRegisterValue);
2072
2073 g_tester_send_to_host(return_buffer, 7);
2074 }
2075
2076 /************************************************************************
2077 * g_tester_gwsi_event_handler *
2078 ****** ******************************************************************
2079 DESCRIPTION: Read the PLT RX PER .
2080
2081 ************************************************************************/
g_tester_cmd_plt_RxPer_GetResults()2082 void g_tester_cmd_plt_RxPer_GetResults()
2083 {
2084 /***************************
2085 Return buffer structure :
2086
2087 Bytes 0-1 : OpCode (0x0178)
2088 Byte 2 : Command Status
2089 Byte 3-6 : FCSErrorCount
2090 Byte 7-10 : TotalFrameCount
2091 Byte 11-14 : PLCPFrameCount
2092 Byte 15-18 : SeqNumMissCount
2093 ***************************/
2094
2095 tiUINT8 return_buffer[20];
2096 tiUINT8 *p_return_buffer = return_buffer;
2097
2098 PltRxPer_t PltRxPer;
2099 tiUINT32 status = TI_PLT_RxPerGetResults(g_id_adapter, &PltRxPer);
2100
2101 /* Set the header */
2102 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_PLT__RX_PER__GET_RESULTS, (UINT8)status);
2103
2104 /* Add the result */
2105 P_BUFFER_ADD_UINT32(p_return_buffer, PltRxPer.FCSErrorCount);
2106 P_BUFFER_ADD_UINT32(p_return_buffer, PltRxPer.TotalFrameCount);
2107 P_BUFFER_ADD_UINT32(p_return_buffer, PltRxPer.PLCPErrorCount);
2108 P_BUFFER_ADD_UINT32(p_return_buffer, PltRxPer.SeqNumMissCount);
2109
2110 g_tester_send_to_host(return_buffer, p_return_buffer - return_buffer);
2111 }
2112
2113 /************************************************************************
2114 * g_tester_cmd_plt_mib_read *
2115 ****** ******************************************************************
2116 DESCRIPTION: Handle the reading of PLT over CLI MIBs .
2117
2118 ************************************************************************/
g_tester_cmd_plt_mib_read(unsigned char * cmd_buffer)2119 void g_tester_cmd_plt_mib_read(unsigned char *cmd_buffer)
2120 {
2121 /***************************
2122 Return buffer structure :
2123
2124 Bytes 0-1 : OpCode (0x017C)
2125 Byte 2 : Command Status
2126 Byte 3-6 : aMib
2127 Byte 7-10 : Mib Length
2128 Bye 11- : MIb data
2129 ***************************/
2130
2131 PLT_MIB_t* pMib = (PLT_MIB_t*)cmd_buffer;
2132
2133 unsigned char return_buffer[3 + sizeof(PLT_MIB_t)];
2134 unsigned char* p_return_buffer = return_buffer;
2135 unsigned char* pReturnMibBuffer = return_buffer + 3;
2136 PLT_MIB_t* pReturnMib = (PLT_MIB_t*)pReturnMibBuffer;
2137 tiUINT32 status;
2138 int PacketLength;
2139
2140 pReturnMib->aMib = pMib->aMib;
2141 pReturnMib->Length = pMib->Length;
2142 memcpy(&pReturnMib->aData, &pMib->aData, pMib->Length);
2143
2144 status = TI_PLT_ReadMIB(g_id_adapter, pReturnMib);
2145
2146 /* Set the event header */
2147 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_PLT__MIB__READ, (UINT8)status);
2148
2149 /* Set the MIB data */
2150 PacketLength = 11 + pReturnMib->Length;
2151 g_tester_send_to_host(return_buffer, PacketLength);
2152 }
2153
2154 /************************************************************************
2155 * g_tester_cmd_plt_mib_write *
2156 ****** ******************************************************************
2157 DESCRIPTION: Handle the writing of PLT over CLI MIBs .
2158
2159 ************************************************************************/
g_tester_cmd_plt_mib_write(unsigned char * cmd_buffer)2160 void g_tester_cmd_plt_mib_write(unsigned char *cmd_buffer)
2161 {
2162 PLT_MIB_t* pMib = (PLT_MIB_t*)cmd_buffer;
2163 TI_PLT_WriteMIB(g_id_adapter, pMib);
2164 }
2165
2166
2167
2168
2169 /************************************************************************
2170 * g_tester_cmd_get_defaultWEPKey *
2171 ****** ******************************************************************
2172 DESCRIPTION: Get back the default WEP key .
2173
2174 ************************************************************************/
g_tester_cmd_get_defaultWEPKey(void)2175 void g_tester_cmd_get_defaultWEPKey(void)
2176 {
2177 /***************************
2178 Return buffer structure :
2179
2180 Bytes 0-1 : OpCode (0x117e)
2181 Byte 2 : Command Status
2182 Byte 3-6 : Default WEP key ID
2183 ***************************/
2184
2185 tiUINT8 return_buffer[6];
2186 tiUINT8 *p_return_buffer = return_buffer;
2187 tiUINT32 WepKeyId;
2188 tiUINT32 status = TI_GetDefaultWepKey(g_id_adapter, &WepKeyId);
2189
2190 /* Set the header */
2191 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_PRIVACY__WEP__GET, (UINT8)status);
2192
2193 /* Add the result */
2194 P_BUFFER_ADD_UINT32(p_return_buffer, WepKeyId);
2195
2196 g_tester_send_to_host(return_buffer, 5);
2197 }
2198
2199 /************************************************************************
2200 * g_tester_gwsi_event_handler *
2201 ************************************************************************
2202 DESCRIPTION: Send the roaming candidates table to the GTester
2203
2204 ************************************************************************/
g_tester_Roaming_candidates_list(void)2205 void g_tester_Roaming_candidates_list(void)
2206 {
2207 /***************************
2208 Return buffer structure (for header):
2209
2210 Bytes 0-1 : OpCode (0x0004)
2211 Byte 2 : Command Status
2212 Byte 3 : Number of elements
2213 ***************************/
2214
2215 /***************************
2216 Return buffer structure (for each element):
2217
2218 Bytes 0-1 : OpCode (0x113c)
2219 Byte 2 : Command Status
2220 Bytes 3-8 : MAC Address
2221 Byte 9 : Band
2222 Byte 10 : RSSI
2223 Byte 11 : Channel
2224 Byte 12 : Neighbor
2225 ***************************/
2226 tiUINT8 return_buffer[15];
2227 tiUINT8 *p_return_buffer = return_buffer;
2228 bssList_t bssList;
2229 tiINT32 res;
2230 tiUINT8 index;
2231
2232
2233 /* get list */
2234 res = TI_GetScanBssList( g_id_adapter, &bssList);
2235 if( res != TI_RESULT_OK)
2236 {
2237 /*************************/
2238 /* Error retrieving data */
2239 /***********************/
2240
2241 /* Set the header */
2242 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_CONNECTION__BSSID_LIST, res);
2243
2244 /* Set dummy UINT8 */
2245 P_BUFFER_ADD_UINT8(p_return_buffer, 0x00);
2246
2247 g_tester_send_to_host(return_buffer, 4);
2248 }
2249 else
2250 {
2251 /*********************/
2252 /* Header structure */
2253 /*******************/
2254
2255 /* Set the header */
2256 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_CONNECTION__BSSID_LIST, res);
2257
2258 /* Set dummy UINT8 */
2259 P_BUFFER_ADD_UINT8(p_return_buffer, bssList.numOfEntries);
2260
2261 g_tester_send_to_host(return_buffer, 4);
2262
2263 /***********************/
2264 /* Elements structure */
2265 /*********************/
2266
2267 for (index = 0; index < bssList.numOfEntries; index++)
2268 {
2269 p_return_buffer = return_buffer;
2270
2271 /* Set the header */
2272 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_SCAN__CONFIGPOLICY__BSSLIST, res);
2273
2274 P_BUFFER_ADD_DATA(p_return_buffer, bssList.BSSList[index].BSSID.addr , sizeof(bssList.BSSList[index].BSSID));
2275
2276 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)bssList.BSSList[index].band);
2277
2278 P_BUFFER_ADD_UINT8(p_return_buffer, bssList.BSSList[index].RSSI-256); /*convert to negative number*/
2279
2280 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)bssList.BSSList[index].channel);
2281
2282 P_BUFFER_ADD_UINT8(p_return_buffer, (tiUINT8)bssList.BSSList[index].bNeighborAP);
2283
2284 g_tester_send_to_host(return_buffer, 13);
2285
2286 }
2287 }
2288 }
2289
2290 /************************************************************************
2291 * g_tester_scAn__configApp__Display *
2292 ************************************************************************
2293 DESCRIPTION: Display the application scan configuration
2294
2295 ************************************************************************/
g_tester_scAn__configApp__Display(void)2296 void g_tester_scAn__configApp__Display(void)
2297 {
2298 /***************************
2299 Return buffer structure (for each element):
2300
2301 Bytes 0-1 : OpCode (0x113c)
2302 Byte 2 : Command Status
2303 Bytes 3-15 : SSID(if SSID is 12 characters)
2304 Byte 16 : Scan type
2305 Byte 10 : Band
2306 Byte 11 : Number of prob req
2307 Byte 12 : rate
2308 Byte 13 : AC
2309 Byte 14 : Number of channel
2310
2311 for every channel:
2312 Byte 15 : channel number
2313 Byte 16-21 : BSSID
2314 Byte 21-23 : max time
2315 Byte 23-27 : min time
2316 Byte 28 : ET event
2317 Byte 29 : ET frame num
2318 Byte 30 : Power
2319 Byte 31- : Same as 15-30 for every channel grater then 1
2320 ***************************/
2321 int i;
2322 scan_normalChannelEntry_t* pNormalChannel;
2323 tiUINT8 return_buffer[512];
2324 tiUINT8 sSSID[33];
2325 tiUINT8 *p_return_buffer = return_buffer;
2326
2327 /* Set the header */
2328 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_SCAN__CONFIGAPP__DISPLAY, 0);
2329
2330 /* Data */
2331 /* SSID*/
2332 memset(sSSID, 0, sizeof(sSSID));
2333 strcpy((char*)sSSID, (char*)appScanParams.desiredSsid.ssidString);
2334 memcpy((void*)p_return_buffer, sSSID, sizeof(sSSID));
2335 p_return_buffer += sizeof(sSSID);
2336
2337
2338 P_BUFFER_ADD_UINT8(p_return_buffer, appScanParams.scanType);
2339 P_BUFFER_ADD_UINT8(p_return_buffer, appScanParams.band);
2340 P_BUFFER_ADD_UINT8(p_return_buffer, appScanParams.probeReqNumber);
2341 P_BUFFER_ADD_UINT32(p_return_buffer, appScanParams.probeRequestRate);
2342 #ifdef TI_DBG
2343 P_BUFFER_ADD_UINT8(p_return_buffer, appScanParams.Tid);
2344 #else
2345 P_BUFFER_ADD_UINT8(p_return_buffer, 0);
2346 #endif
2347 P_BUFFER_ADD_UINT8(p_return_buffer, appScanParams.numOfChannels);
2348 for ( i = 0; i < appScanParams.numOfChannels; i++ )
2349 {
2350 pNormalChannel = &(appScanParams.channelEntry[ i ].normalChannelEntry);
2351 P_BUFFER_ADD_UINT8(p_return_buffer, pNormalChannel->channel);
2352 memcpy((void*)p_return_buffer, (void*)(pNormalChannel->bssId.addr), sizeof(pNormalChannel->bssId.addr));
2353 p_return_buffer += sizeof(pNormalChannel->bssId);
2354 P_BUFFER_ADD_UINT32(p_return_buffer, pNormalChannel->maxChannelDwellTime);
2355 P_BUFFER_ADD_UINT32(p_return_buffer, pNormalChannel->minChannelDwellTime);
2356 P_BUFFER_ADD_UINT8(p_return_buffer, pNormalChannel->earlyTerminationEvent);
2357 P_BUFFER_ADD_UINT8(p_return_buffer, pNormalChannel->ETMaxNumOfAPframes);
2358 P_BUFFER_ADD_UINT8(p_return_buffer, pNormalChannel->txPowerDbm);
2359 }
2360 g_tester_send_to_host(return_buffer, p_return_buffer-return_buffer);
2361 }
2362
2363 /*********************************************************************
2364 * g_tester_plt_calibration_get_nvs_buffer *
2365 ************************************************************************
2366 DESCRIPTION: Display the NVS update buffers
2367 ************************************************************************/
g_tester_plt_calibration_get_nvs_buffer()2368 void g_tester_plt_calibration_get_nvs_buffer()
2369 {
2370 tiUINT8 return_buffer[sizeof(PltNvsResultsBuffer_t) + 4];
2371 tiUINT8 *p_return_buffer = return_buffer;
2372 PltNvsResultsBuffer_t PltNvsResultsBuffer;
2373 int i;
2374 tiUINT32 status;
2375 tiUINT32 DataSize;
2376
2377 memset(&PltNvsResultsBuffer, 0, sizeof(PltNvsResultsBuffer));
2378 status = TI_PLT_RxTxCalNVSUpdateBuffer(g_id_adapter, &PltNvsResultsBuffer);
2379 P_BUFFER_ADD_HDR_PARAMS(p_return_buffer, G_TESTER_CLI_CMD_PLT__CALIBRATION__GET_NVS_BUFFER, (UINT8)status);
2380 if (status == OK)
2381 {
2382 P_BUFFER_ADD_UINT32(p_return_buffer, PltNvsResultsBuffer.numOfTables);
2383 if (PltNvsResultsBuffer.numOfTables > NVS_RESULTS_MAX_NUM_OF_TABLES)
2384 {
2385 printf("%s: aData.aLength (%d) > GWSI_PLT_NVS_RESULTS_MAX_NUM_OF_TABLES(%d) \n", __FUNCTION__,
2386 PltNvsResultsBuffer.numOfTables, NVS_RESULTS_MAX_NUM_OF_TABLES);
2387 }
2388 else
2389 {
2390 for (i=0; i<PltNvsResultsBuffer.numOfTables; i++)
2391 {
2392 DataSize = PltNvsResultsBuffer.tables[i].size;
2393 P_BUFFER_ADD_UINT16(p_return_buffer, DataSize);
2394 P_BUFFER_ADD_UINT16(p_return_buffer, PltNvsResultsBuffer.tables[i].offset);
2395
2396 if (DataSize>NVS_RESULTS_MAX_UPDATE_TABLE_SIZE)
2397 {
2398 printf("%s: DataSize (%d) > NVS_RESULTS_MAX_UPDATE_TABLE_SIZE(%d) \n", __FUNCTION__,
2399 DataSize, NVS_RESULTS_MAX_UPDATE_TABLE_SIZE);
2400 continue;
2401 }
2402
2403 memcpy((PVOID)p_return_buffer,
2404 (PVOID)PltNvsResultsBuffer.tables[i].data,
2405 DataSize);
2406 p_return_buffer += DataSize;
2407 }
2408 }
2409 }
2410 g_tester_send_to_host(return_buffer, p_return_buffer-return_buffer);
2411 }
2412