PageRenderTime 52ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 1ms

/drivers/net/wireless/tiwlan1251/CUDK/CLI/g_tester.c

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