PageRenderTime 68ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 1ms

/drivers/net/wireless/tiwlan1251/CUDK/UtilityAdapter/CTI_Adapter.cpp

https://bitbucket.org/cyanogenmod/cm-kernel
C++ | 3336 lines | 2474 code | 602 blank | 260 comment | 196 complexity | 5a0dad3c6593b6b31ad99f8c9cc9d61f 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. // Module: CTI_Adapter.cpp
  22. //
  23. // Purpose: implementation of the CTI_WLAN_AdapterAPI class.
  24. //
  25. //--------------------------------------------------------------------------
  26. #include <string.h>
  27. #include "CommonAdapter.h"
  28. #ifdef _WINDOWS
  29. #endif
  30. #ifndef _WINDOWS
  31. #include "g_tester.h"
  32. #endif
  33. #include "paramOut.h"
  34. #ifdef _WINDOWS
  35. #endif
  36. TI_OSCriticalSection m_csInitAdapter;
  37. #define TI_WLAN_API_VER 0x00400002
  38. _AdapterItem* CTI_WLAN_AdapterAPI::m_pAdaptersList = NULL;
  39. //////////////////////////////////////////////////////////////////////
  40. // Construction/Destruction
  41. //////////////////////////////////////////////////////////////////////
  42. CTI_WLAN_AdapterAPI::CTI_WLAN_AdapterAPI(tiCHAR* lpszAdapterName)
  43. {
  44. #ifdef TI_EMBEDDED_SUPPLICANT
  45. m_pSupplicant = NULL;
  46. #endif /* ifdef TI_EMBEDDED_SUPPLICANT */
  47. m_pszAdapterName = NULL;
  48. m_pOSLib = TI_OAL::GetInstance();
  49. m_pRegistry = new TI_OSRegistry; // temporary solution
  50. #ifdef _WINDOWS
  51. #else
  52. m_pIPCmod = new TI_IPC(/*lpszAdapterName*/);
  53. #endif
  54. #ifdef TI_EMBEDDED_SUPPLICANT
  55. m_bSupplicantInUse = FALSE;
  56. #endif /* ifdef TI_EMBEDDED_SUPPLICANT */
  57. if (lpszAdapterName)
  58. {
  59. tiUINT32 uSize = 0;
  60. #ifndef _UNICODE
  61. uSize = strlen( lpszAdapterName );
  62. #else
  63. uSize = wcslen( lpszAdapterName );
  64. #endif
  65. tiUINT32 uBuffLength = sizeof(tiCHAR)*(uSize+1);
  66. m_pszAdapterName = new tiCHAR[uSize+1];
  67. if (!m_pszAdapterName)
  68. return ;
  69. memset(m_pszAdapterName, 0, uBuffLength);
  70. memcpy(m_pszAdapterName, lpszAdapterName, uBuffLength - sizeof(tiCHAR) );
  71. #ifndef _WINDOWS
  72. m_pIPCmod->IPC_DeviceOpen(m_pszAdapterName);
  73. #endif
  74. }
  75. }
  76. /********************************************************************/
  77. tiINT32
  78. CTI_WLAN_AdapterAPI::StartSM( )
  79. {
  80. #ifdef TI_EMBEDDED_SUPPLICANT
  81. #ifndef _WINDOWS
  82. m_bSupplicantInUse = TRUE;
  83. if ( m_pSupplicant == NULL )
  84. m_pSupplicant = new TI_IPC_Supplicant(m_pszAdapterName);
  85. else
  86. return TI_RESULT_FAILED;
  87. #else
  88. #endif
  89. #endif /* ifdef TI_EMBEDDED_SUPPLICANT */
  90. return TI_RESULT_OK;
  91. }
  92. /********************************************************************/
  93. tiINT32
  94. CTI_WLAN_AdapterAPI::StopSM( )
  95. {
  96. #ifdef TI_EMBEDDED_SUPPLICANT
  97. #ifndef _WINDOWS
  98. if (m_bSupplicantInUse && m_pSupplicant != NULL )
  99. {
  100. delete m_pSupplicant;
  101. m_pSupplicant = NULL;
  102. m_bSupplicantInUse = FALSE;
  103. }
  104. else
  105. return TI_RESULT_FAILED;
  106. #else
  107. #endif
  108. #endif
  109. return TI_RESULT_OK;
  110. }
  111. /********************************************************************/
  112. CTI_WLAN_AdapterAPI::~CTI_WLAN_AdapterAPI()
  113. {
  114. #ifndef _WINDOWS
  115. if ( m_pIPCmod )
  116. {
  117. m_pIPCmod->IPC_DeviceClose();
  118. delete m_pIPCmod;
  119. m_pIPCmod = NULL;
  120. }
  121. #else
  122. #endif
  123. if (m_pRegistry)
  124. {
  125. delete m_pRegistry;
  126. m_pRegistry = NULL;
  127. }
  128. if ( m_pOSLib )
  129. {
  130. m_pOSLib->FreeInstance();
  131. m_pOSLib = NULL;
  132. }
  133. if ( m_pszAdapterName )
  134. {
  135. delete [] m_pszAdapterName;
  136. m_pszAdapterName = NULL;
  137. }
  138. #ifdef TI_EMBEDDED_SUPPLICANT
  139. #ifndef _WINDOWS
  140. if (m_pSupplicant != NULL )
  141. {
  142. delete m_pSupplicant;
  143. m_pSupplicant = NULL;
  144. }
  145. #endif
  146. #endif
  147. }
  148. /********************************************************************/
  149. CTI_WLAN_AdapterAPI*
  150. CTI_WLAN_AdapterAPI::GetTIWLANAdapter(tiCHAR* lpszAdapterName, tiBOOL bForce)
  151. {
  152. m_csInitAdapter.Enter();
  153. if ( bForce )
  154. {
  155. CTI_WLAN_AdapterAPI* pAdapter = new CTI_WLAN_AdapterAPI(lpszAdapterName);
  156. m_csInitAdapter.Leave();
  157. return pAdapter;
  158. }
  159. _AdapterItem* pCurrentItem = m_pAdaptersList;
  160. BOOL bNULL = FALSE;
  161. if (!lpszAdapterName)
  162. {
  163. bNULL = TRUE;
  164. m_csInitAdapter.Leave();
  165. return NULL;
  166. }
  167. while( pCurrentItem )
  168. {
  169. tiINT32 iResult = -1;
  170. if ( !bNULL )
  171. #ifndef _UNICODE
  172. iResult = strcmp(pCurrentItem->m_pAdapterName, lpszAdapterName );
  173. #else
  174. iResult = wcscmp(pCurrentItem->m_pAdapterName, lpszAdapterName );
  175. #endif
  176. else
  177. {
  178. if ( !pCurrentItem->m_pAdapterName )
  179. iResult = 0;
  180. }
  181. if (!iResult)
  182. {
  183. pCurrentItem->AddRef();
  184. m_csInitAdapter.Leave();
  185. return pCurrentItem->m_dwAdapterID;
  186. }
  187. pCurrentItem = pCurrentItem->m_pNextItem;
  188. }
  189. pCurrentItem = new _AdapterItem;
  190. pCurrentItem->m_pNextItem = m_pAdaptersList;
  191. if ( m_pAdaptersList )
  192. m_pAdaptersList->m_pPrevItem = pCurrentItem;
  193. m_pAdaptersList = pCurrentItem;
  194. if (lpszAdapterName)
  195. {
  196. tiUINT32 uSize = 0;
  197. #ifndef _UNICODE
  198. uSize = strlen( lpszAdapterName );
  199. #else
  200. uSize = wcslen( lpszAdapterName );
  201. #endif
  202. tiUINT32 uBuffLenght = sizeof(tiCHAR)*(uSize+1);
  203. tiCHAR* pBuff = new tiCHAR[uSize+1];
  204. if (!pBuff)
  205. {
  206. m_csInitAdapter.Leave();
  207. return NULL;
  208. }
  209. memset(pBuff, 0, uBuffLenght);
  210. memcpy(pBuff, lpszAdapterName, uBuffLenght - sizeof(tiCHAR) );
  211. m_pAdaptersList->m_pAdapterName = pBuff;
  212. }
  213. pCurrentItem->m_dwAdapterID = new CTI_WLAN_AdapterAPI(lpszAdapterName);
  214. m_csInitAdapter.Leave();
  215. return m_pAdaptersList->m_dwAdapterID;
  216. }
  217. /********************************************************************/
  218. tiINT32
  219. CTI_WLAN_AdapterAPI::FreeTIWLANAdapter(CTI_WLAN_AdapterAPI* pAdapter, tiBOOL bForce )
  220. {
  221. m_csInitAdapter.Enter();
  222. #ifndef _WINDOWS
  223. if ( bForce && pAdapter)
  224. {
  225. delete pAdapter;
  226. pAdapter = NULL;
  227. m_csInitAdapter.Leave();
  228. return TI_RESULT_OK;
  229. }
  230. #else
  231. #endif
  232. if (
  233. #ifndef _WINDOWS
  234. !pAdapter ||
  235. #endif
  236. // TRS:PGK -- If there is no adapter list, exit. Nothing to free.
  237. !m_pAdaptersList)
  238. {
  239. m_csInitAdapter.Leave();
  240. return TI_RESULT_FAILED;
  241. }
  242. _AdapterItem* pCurrentItem = m_pAdaptersList;
  243. while( pCurrentItem )
  244. {
  245. if (pCurrentItem->m_dwAdapterID == pAdapter )
  246. {
  247. pCurrentItem->DecRef();
  248. if ( !pCurrentItem->m_uRef )
  249. {
  250. _AdapterItem* pPrev = pCurrentItem->m_pPrevItem;
  251. if ( pPrev )
  252. pPrev->m_pNextItem = pCurrentItem->m_pNextItem;
  253. _AdapterItem* pNext = pCurrentItem->m_pNextItem;
  254. if ( pNext )
  255. pNext->m_pPrevItem = pCurrentItem->m_pPrevItem;
  256. if ( !pNext && !pPrev )
  257. m_pAdaptersList = NULL;
  258. if ( pCurrentItem->m_pAdapterName )
  259. delete [] pCurrentItem->m_pAdapterName;
  260. delete pCurrentItem->m_dwAdapterID;
  261. delete pCurrentItem;
  262. }
  263. m_csInitAdapter.Leave();
  264. return TI_RESULT_OK;
  265. }
  266. pCurrentItem = pCurrentItem->m_pNextItem;
  267. }
  268. if ( pAdapter )
  269. delete pAdapter;
  270. m_csInitAdapter.Leave();
  271. return TI_RESULT_FAILED;
  272. }
  273. /********************************************************************/
  274. tiINT32
  275. CTI_WLAN_AdapterAPI::CheckObjectMemory(tiVOID *pObj, tiUINT32 uSizeObj)
  276. {
  277. if ( !pObj || !uSizeObj )
  278. return FALSE;
  279. return !(m_pOSLib->TIIsBadWritePtr(pObj, uSizeObj));
  280. }
  281. /***************************************************************************************/
  282. tiINT32
  283. CTI_WLAN_AdapterAPI::tiMiniportSetInformation(tiUINT32 dwInfoCode,tiVOID* lpInfoBuffer, tiUINT32* lpdwCbInfoBuffer)
  284. {
  285. tiUINT32 dwRet = 0;
  286. tiUINT32 dwLength = *lpdwCbInfoBuffer + sizeof(dwInfoCode);
  287. tiUINT8* lpBuffer = new tiUINT8[dwLength];
  288. tiUINT32 dwRetSize;
  289. if ( !lpBuffer )
  290. return TI_RESULT_NOT_ENOUGH_MEMORY;
  291. memcpy(lpBuffer, &dwInfoCode, sizeof(dwInfoCode));
  292. memcpy((tiUINT8*)lpBuffer + sizeof(dwInfoCode), lpInfoBuffer, *lpdwCbInfoBuffer);
  293. dwRet = tiIoCtrl(TIWLN_IOCTL_OID_SET_INFORMATION,lpBuffer, dwLength,NULL,0,&dwRetSize);
  294. delete [] lpBuffer;
  295. return dwRet;
  296. }
  297. /********************************************************************/
  298. tiINT32
  299. CTI_WLAN_AdapterAPI::tiIoCtrl(tiUINT32 dwIoCtrl, tiVOID* pInBuffer, tiUINT32 uInBufferSize,
  300. tiVOID* pOutBuffer, tiUINT32 dwOutBufferSize, tiUINT32* dwBytesReturned)
  301. {
  302. #ifdef TI_EMBEDDED_SUPPLICANT
  303. if ( m_bSupplicantInUse )
  304. {
  305. #ifdef _WINDOWS
  306. #endif
  307. switch (dwIoCtrl)
  308. {
  309. case TIWLN_802_11_SSID_SET:
  310. case TIWLN_802_11_INFRASTRUCTURE_MODE_SET:
  311. case TIWLN_802_11_AUTHENTICATION_MODE_SET:
  312. case TIWLN_802_11_WEP_STATUS_SET:
  313. case TIWLN_802_11_PSK_SET:
  314. case TIWLN_802_11_EAP_TYPE_SET:
  315. case TIWLN_802_11_USER_ID_SET:
  316. case TIWLN_802_11_USER_PASSWORD_SET:
  317. case TIWLN_802_11_CERT_PARAMS_SHA1_SET:
  318. case TIWLN_802_11_CERT_PARAMS_FILE_NAME_SET:
  319. case TIWLN_802_11_KEY_TYPE_SET:
  320. case TIWLN_802_11_EXC_NETWORK_EAP_SET:
  321. case TIWLN_802_11_EXC_CONFIGURATION_SET:
  322. case TIWLN_802_11_ADD_WEP:
  323. case TIWLN_802_11_WPA_OPTIONS_SET:
  324. #ifdef _WINDOWS
  325. #else
  326. return m_pSupplicant->SendDataProxy(dwIoCtrl, pInBuffer, uInBufferSize);
  327. #endif
  328. }
  329. #ifdef _WINDOWS
  330. #endif
  331. }
  332. #endif /* ifdef TI_EMBEDDED_SUPPLICANT */
  333. #ifdef _WINDOWS
  334. #else
  335. tiUINT32 bRet = m_pIPCmod->IPC_DeviceIoControl( dwIoCtrl, pInBuffer, uInBufferSize,
  336. pOutBuffer, dwOutBufferSize, dwBytesReturned);
  337. return bRet;
  338. #endif
  339. }
  340. /********************************************************************/
  341. tiINT32
  342. CTI_WLAN_AdapterAPI::GetStatistics(TIWLN_STATISTICS* ptiStatistics)
  343. {
  344. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  345. tiUINT32 dwRetSize;
  346. if (CheckObjectMemory(ptiStatistics, sizeof(TIWLN_STATISTICS)))
  347. {
  348. dwRetValue = tiIoCtrl(TIWLN_802_11_STATISTICS, NULL, 0, ptiStatistics, sizeof(TIWLN_STATISTICS),&dwRetSize);
  349. }
  350. return dwRetValue;
  351. }
  352. /********************************************************************/
  353. tiINT32
  354. CTI_WLAN_AdapterAPI::GetTxStatistics(TIWLN_TX_STATISTICS* ptiTxStatistics, UINT32 clearStatsFlag)
  355. {
  356. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  357. tiUINT32 dwRetSize;
  358. if ( ptiTxStatistics )
  359. {
  360. dwRetValue = tiIoCtrl(TIWLN_802_11_TX_STATISTICS,
  361. &clearStatsFlag, sizeof(UINT32),
  362. ptiTxStatistics, sizeof(TIWLN_TX_STATISTICS),&dwRetSize);
  363. }
  364. return dwRetValue;
  365. }
  366. /********************************************************************/
  367. tiINT32
  368. CTI_WLAN_AdapterAPI::GetBSSIDList(OS_802_11_BSSID_LIST_EX** ppBSSIDlist)
  369. {
  370. tiUINT32 nSize = 0;
  371. if ( ppBSSIDlist == NULL)
  372. return TI_RESULT_FAILED;
  373. tiINT32 bRet = GetVariableLengthOID(TIWLN_802_11_BSSID_LIST, (tiVOID**)ppBSSIDlist, &nSize, 10000);
  374. return bRet;
  375. }
  376. /********************************************************************/
  377. tiINT32
  378. CTI_WLAN_AdapterAPI::GetFullBSSIDList(OS_802_11_BSSID_LIST_EX** ppBSSIDlist)
  379. {
  380. tiUINT32 nSize = 0;
  381. if ( ppBSSIDlist == NULL)
  382. return TI_RESULT_FAILED;
  383. tiINT32 bRet = GetVariableLengthOID(TIWLN_802_11_FULL_BSSID_LIST, (tiVOID**)ppBSSIDlist, &nSize, 10000);
  384. return bRet;
  385. }
  386. /********************************************************************/
  387. tiINT32
  388. CTI_WLAN_AdapterAPI::GetCurrentAddress( OS_802_11_MAC_ADDRESS* pCurrentAddr)
  389. {
  390. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  391. tiUINT32 dwRetSize;
  392. if (CheckObjectMemory(pCurrentAddr, sizeof (OS_802_11_MAC_ADDRESS)) )
  393. {
  394. dwRetValue = tiIoCtrl(TIWLN_802_3_CURRENT_ADDRESS, NULL, 0, pCurrentAddr, sizeof( OS_802_11_MAC_ADDRESS ), &dwRetSize);
  395. }
  396. return dwRetValue;
  397. }
  398. /********************************************************************/
  399. tiINT32
  400. CTI_WLAN_AdapterAPI::GetDesiredSSID( OS_802_11_SSID* pDesiredSSID )
  401. {
  402. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  403. tiUINT32 dwRetSize;
  404. if (CheckObjectMemory(pDesiredSSID, sizeof(OS_802_11_SSID)) )
  405. {
  406. dwRetValue = tiIoCtrl(TIWLN_802_11_SSID_GET, NULL, 0, pDesiredSSID, sizeof(OS_802_11_SSID),&dwRetSize);
  407. }
  408. return dwRetValue;
  409. }
  410. /********************************************************************/
  411. tiINT32
  412. CTI_WLAN_AdapterAPI::GetCurrentSSID( OS_802_11_SSID* pCurrentSSID )
  413. {
  414. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  415. tiUINT32 dwRetSize;
  416. if (CheckObjectMemory(pCurrentSSID, sizeof(OS_802_11_SSID)) )
  417. {
  418. dwRetValue = tiIoCtrl(TIWLN_802_11_SSID_GET, NULL, 0, pCurrentSSID, sizeof(OS_802_11_SSID),&dwRetSize);
  419. }
  420. return dwRetValue;
  421. }
  422. /********************************************************************/
  423. tiINT32 CTI_WLAN_AdapterAPI::SetSSID( tiUINT8* pszSSIDname )
  424. {
  425. #ifdef _WINDOWS // TRS:WDK
  426. #endif
  427. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  428. tiUINT32 dwRetSize;
  429. if ( pszSSIDname && m_pRegistry )
  430. {
  431. tiUINT32 uSize = 0;
  432. #ifdef _WINDOWS
  433. #else // __LINUX__
  434. #ifdef _UNICODE
  435. uSize = wcslen( pszSSIDname );
  436. #else
  437. uSize = strlen((char *)pszSSIDname);
  438. #endif
  439. tiUINT32 dwNameSize = 0;
  440. if ( uSize <= MAX_SSID_LENGTH )
  441. dwNameSize = uSize * sizeof(tiUINT8);
  442. else
  443. dwNameSize = MAX_SSID_LENGTH * sizeof(tiUINT8);
  444. #endif
  445. if (pszSSIDname != NULL)
  446. {
  447. OS_802_11_SSID ssid;
  448. memset( &ssid, 0, sizeof(OS_802_11_SSID) );
  449. #ifdef _WINDOWS // TRS:WDK
  450. #else // __LINUX__
  451. #ifdef _UNICODE
  452. wcstombs((tiCHAR* )ssid.Ssid, pszSSIDname, MAX_SSID_LENGTH);
  453. ssid.SsidLength = MAX_SSID_LENGTH;
  454. #else
  455. memcpy((tiCHAR*)ssid.Ssid, pszSSIDname, dwNameSize );
  456. ssid.SsidLength = dwNameSize;
  457. #endif
  458. #endif
  459. dwRetValue = tiIoCtrl(TIWLN_802_11_SSID_SET, &ssid, sizeof(OS_802_11_SSID),NULL, 0,&dwRetSize);
  460. #ifdef _WINDOWS
  461. #endif
  462. }
  463. }
  464. return dwRetValue;
  465. }
  466. /********************************************************************/
  467. tiINT32
  468. CTI_WLAN_AdapterAPI::SetBSSType( OS_802_11_NETWORK_MODE uBSSType )
  469. {
  470. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  471. tiUINT32 dwRetSize;
  472. dwRetValue = tiIoCtrl(TIWLN_802_11_INFRASTRUCTURE_MODE_SET, &uBSSType, sizeof(OS_802_11_NETWORK_MODE),NULL, 0,&dwRetSize);
  473. #ifdef _WINDOWS
  474. #endif
  475. return dwRetValue;
  476. }
  477. /********************************************************************/
  478. tiINT32
  479. CTI_WLAN_AdapterAPI::GetBSSType( OS_802_11_NETWORK_MODE* puBSSType )
  480. {
  481. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  482. tiUINT32 dwRetSize;
  483. if (CheckObjectMemory( puBSSType, sizeof(OS_802_11_NETWORK_MODE)))
  484. {
  485. dwRetValue = tiIoCtrl(TIWLN_802_11_INFRASTRUCTURE_MODE_GET, NULL, 0, puBSSType, sizeof(OS_802_11_NETWORK_MODE),&dwRetSize);
  486. }
  487. return dwRetValue;
  488. }
  489. /********************************************************************/
  490. tiINT32
  491. CTI_WLAN_AdapterAPI::SetEAPType( OS_802_11_EAP_TYPES uEAPType )
  492. {
  493. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  494. tiUINT32 dwRetSize;
  495. if (uEAPType)
  496. {
  497. dwRetValue = tiIoCtrl(TIWLN_802_11_EAP_TYPE_SET, &uEAPType, sizeof(OS_802_11_EAP_TYPES),NULL, 0,&dwRetSize);
  498. }
  499. return dwRetValue;
  500. }
  501. /********************************************************************/
  502. tiINT32
  503. CTI_WLAN_AdapterAPI::SetEAPTypeDriver( OS_802_11_EAP_TYPES uEAPType )
  504. {
  505. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  506. tiUINT32 dwRetSize;
  507. dwRetValue = tiIoCtrl(TIWLN_802_11_EAP_TYPE_DRIVER_SET, &uEAPType, sizeof(OS_802_11_EAP_TYPES),NULL,0,&dwRetSize);
  508. return dwRetValue;
  509. }
  510. /********************************************************************/
  511. tiINT32
  512. CTI_WLAN_AdapterAPI::GetEAPType( OS_802_11_EAP_TYPES* puEAPType )
  513. {
  514. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  515. tiUINT32 dwRetSize;
  516. dwRetValue = tiIoCtrl(TIWLN_802_11_EAP_TYPE_GET, NULL, 0, puEAPType, sizeof(OS_802_11_ENCRYPTION_STATUS),&dwRetSize);
  517. return dwRetValue;
  518. }
  519. /********************************************************************/
  520. tiINT32
  521. CTI_WLAN_AdapterAPI::SetEncryptionType( OS_802_11_ENCRYPTION_TYPES uEncryptType )
  522. {
  523. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  524. tiUINT32 dwRetSize;
  525. OS_802_11_ENCRYPTION_STATUS uEncryptStatus = os802_11WEPDisabled;
  526. switch( uEncryptType )
  527. {
  528. case OS_ENCRYPTION_TYPE_NONE:
  529. uEncryptStatus = os802_11WEPDisabled;
  530. break;
  531. case OS_ENCRYPTION_TYPE_WEP:
  532. uEncryptStatus = os802_11Encryption1Enabled;
  533. break;
  534. case OS_ENCRYPTION_TYPE_TKIP:
  535. uEncryptStatus = os802_11Encryption2Enabled;
  536. break;
  537. case OS_ENCRYPTION_TYPE_AES:
  538. uEncryptStatus = os802_11Encryption3Enabled;
  539. break;
  540. default:
  541. uEncryptStatus = os802_11WEPDisabled;
  542. }
  543. dwRetValue = tiIoCtrl(TIWLN_802_11_WEP_STATUS_SET, &uEncryptStatus, sizeof(OS_802_11_ENCRYPTION_STATUS),NULL, 0,&dwRetSize);
  544. return dwRetValue;
  545. }
  546. /********************************************************************/
  547. tiINT32
  548. CTI_WLAN_AdapterAPI::GetEncryptionType( OS_802_11_ENCRYPTION_TYPES* puEncryptType )
  549. {
  550. tiUINT32 dwRetValue = TI_RESULT_INVALID_PARAMETER;
  551. tiUINT32 dwRetSize;
  552. if ( puEncryptType && CheckObjectMemory( puEncryptType, sizeof(OS_802_11_ENCRYPTION_TYPES)) )
  553. {
  554. OS_802_11_ENCRYPTION_STATUS uEncryptStatus;
  555. dwRetValue = tiIoCtrl(TIWLN_802_11_WEP_STATUS_GET, NULL, 0, &uEncryptStatus, sizeof(OS_802_11_ENCRYPTION_STATUS),&dwRetSize);
  556. if ( dwRetValue == TI_RESULT_OK )
  557. {
  558. switch( uEncryptStatus )
  559. {
  560. case os802_11WEPDisabled:
  561. *puEncryptType = OS_ENCRYPTION_TYPE_NONE;
  562. break;
  563. case os802_11Encryption1Enabled:
  564. *puEncryptType = OS_ENCRYPTION_TYPE_WEP;
  565. break;
  566. case os802_11Encryption2Enabled:
  567. *puEncryptType = OS_ENCRYPTION_TYPE_TKIP;
  568. break;
  569. case os802_11Encryption3Enabled:
  570. *puEncryptType = OS_ENCRYPTION_TYPE_AES;
  571. break;
  572. default:
  573. dwRetValue = TI_RESULT_FAILED;
  574. } // switch
  575. }
  576. } // end of memory check
  577. return dwRetValue;
  578. }
  579. /********************************************************************/
  580. tiINT32
  581. CTI_WLAN_AdapterAPI::SetCredentials( tiCHAR* pszUserName, tiCHAR* pszPassword )
  582. {
  583. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  584. tiUINT32 dwRetSize;
  585. if ( pszUserName != NULL )
  586. {
  587. tiUINT32 uSize = 0;
  588. #ifdef _UNICODE
  589. uSize = wcslen( pszUserName );
  590. #else
  591. uSize = strlen(pszUserName);
  592. #endif
  593. tiUINT32 dwNameSize = uSize * sizeof(tiCHAR);
  594. if ( CheckObjectMemory( pszUserName, dwNameSize ))
  595. dwRetValue = tiIoCtrl(TIWLN_802_11_USER_ID_SET, pszUserName, dwNameSize + sizeof(tiCHAR),NULL, 0,&dwRetSize);
  596. }
  597. else
  598. dwRetValue = tiIoCtrl(TIWLN_802_11_USER_ID_SET, NULL, 0l,NULL, 0,&dwRetSize);
  599. if ( pszPassword != NULL )
  600. {
  601. tiUINT32 uSize = 0;
  602. #ifdef _UNICODE
  603. uSize = wcslen( pszPassword );
  604. #else
  605. uSize = strlen(pszPassword);
  606. #endif
  607. tiUINT32 dwNameSize = uSize * sizeof(tiCHAR);
  608. if ( CheckObjectMemory( pszPassword, dwNameSize ))
  609. dwRetValue = tiIoCtrl(TIWLN_802_11_USER_PASSWORD_SET, pszPassword, dwNameSize + sizeof(tiCHAR),NULL, 0,&dwRetSize);
  610. }
  611. else
  612. dwRetValue = tiIoCtrl(TIWLN_802_11_USER_PASSWORD_SET, NULL, 0l,NULL, 0,&dwRetSize);
  613. return dwRetValue;
  614. }
  615. /********************************************************************/
  616. tiINT32
  617. CTI_WLAN_AdapterAPI::SetPSK( tiCHAR* pszPSK )
  618. {
  619. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  620. tiUINT32 dwRetSize;
  621. if ( pszPSK != NULL )
  622. {
  623. tiUINT32 uSize = 0;
  624. #ifdef _UNICODE
  625. uSize = wcslen( pszPSK );
  626. #else
  627. uSize = strlen(pszPSK);
  628. #endif
  629. tiUINT32 dwNameSize = uSize * sizeof(tiCHAR);
  630. if ( CheckObjectMemory( pszPSK, dwNameSize ))
  631. dwRetValue = tiIoCtrl(TIWLN_802_11_PSK_SET, pszPSK, dwNameSize + sizeof(tiCHAR),NULL, 0,&dwRetSize);
  632. }
  633. else
  634. dwRetValue = tiIoCtrl(TIWLN_802_11_PSK_SET, NULL, 0l,NULL, 0,&dwRetSize);
  635. return dwRetValue;
  636. }
  637. /********************************************************************/
  638. tiINT32
  639. CTI_WLAN_AdapterAPI::SetCertParamsSHA1( TI_SHA1_HASH* pSha1Hash, tiBOOL bValidateServerCert )
  640. {
  641. tiUINT32 dwRetValue = TI_RESULT_INVALID_PARAMETER;
  642. tiUINT32 dwRetSize;
  643. if ( pSha1Hash && CheckObjectMemory(pSha1Hash, sizeof(TI_SHA1_HASH)))
  644. {
  645. tiUINT32 uSize = sizeof(TI_SHA1_HASH) + sizeof(tiBOOL);
  646. tiUINT8* pByte = new tiUINT8[uSize];
  647. if ( pByte == NULL )
  648. return TI_RESULT_NOT_ENOUGH_MEMORY;
  649. tiUINT8* pBufferTmp = pByte;
  650. memset(pByte, 0, uSize);
  651. memcpy(pBufferTmp, &bValidateServerCert, sizeof(tiBOOL));
  652. pBufferTmp += sizeof(tiBOOL);
  653. memcpy(pBufferTmp, pSha1Hash, sizeof(TI_SHA1_HASH));
  654. dwRetValue = tiIoCtrl(TIWLN_802_11_CERT_PARAMS_SHA1_SET, pByte, uSize,NULL, 0,&dwRetSize);
  655. delete [] pByte;
  656. }
  657. return dwRetValue;
  658. }
  659. /********************************************************************/
  660. tiINT32
  661. CTI_WLAN_AdapterAPI::SetCertParamsFileName( tiCHAR* pszFileName, tiBOOL bValidateServerCert )
  662. {
  663. tiUINT32 dwRetValue = TI_RESULT_INVALID_PARAMETER;
  664. tiUINT32 dwRetSize;
  665. if ( pszFileName != NULL )
  666. {
  667. tiUINT32 uSize = 0;
  668. #ifdef _UNICODE
  669. uSize = wcslen( pszFileName );
  670. #else
  671. uSize = strlen(pszFileName);
  672. #endif
  673. tiUINT32 dwSize = (uSize + 1) * sizeof(tiCHAR) + sizeof(tiBOOL);
  674. tiUINT8* pByte = new tiUINT8[dwSize];
  675. if ( pByte == NULL )
  676. return TI_RESULT_NOT_ENOUGH_MEMORY;
  677. tiUINT8* pBufferTmp = pByte;
  678. memset(pByte, 0, dwSize);
  679. memcpy(pBufferTmp, &bValidateServerCert, sizeof(tiBOOL));
  680. pBufferTmp += sizeof(tiBOOL);
  681. memcpy(pBufferTmp, pszFileName, uSize);
  682. dwRetValue = tiIoCtrl(TIWLN_802_11_CERT_PARAMS_FILE_NAME_SET, pByte, dwSize,NULL, 0,&dwRetSize);
  683. delete [] pByte;
  684. }
  685. return dwRetValue;
  686. }
  687. /********************************************************************/
  688. tiINT32
  689. CTI_WLAN_AdapterAPI::AddWEPKey( OS_802_11_WEP* pWEP )
  690. {
  691. tiUINT32 dwRetValue = TI_RESULT_INVALID_PARAMETER;
  692. tiUINT32 dwRetSize;
  693. if (CheckObjectMemory(pWEP, sizeof(OS_802_11_WEP)))
  694. {
  695. dwRetValue = tiIoCtrl(TIWLN_802_11_ADD_WEP, pWEP, sizeof(OS_802_11_WEP),NULL, 0,&dwRetSize);
  696. }
  697. return dwRetValue;
  698. }
  699. /********************************************************************/
  700. tiINT32
  701. CTI_WLAN_AdapterAPI::RemoveWEPKey( tiUINT32 uKeyIndex )
  702. {
  703. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  704. tiUINT32 dwRetSize;
  705. dwRetValue = tiIoCtrl(TIWLN_802_11_REMOVE_WEP, &uKeyIndex, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  706. return dwRetValue;
  707. }
  708. /********************************************************************/
  709. tiINT32
  710. CTI_WLAN_AdapterAPI::SetWPAOptions( tiUINT32 fWPA_options)
  711. {
  712. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  713. tiUINT32 dwRetSize;
  714. dwRetValue = tiIoCtrl(TIWLN_802_11_WPA_OPTIONS_SET, &fWPA_options, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  715. return dwRetValue;
  716. }
  717. /********************************************************************/
  718. tiINT32 CTI_WLAN_AdapterAPI::GetWPAOptions( tiUINT32 * fWPA_options)
  719. {
  720. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  721. tiUINT32 dwRetSize;
  722. if (CheckObjectMemory(fWPA_options, sizeof(tiUINT32)))
  723. {
  724. dwRetValue = tiIoCtrl(TIWLN_802_11_WPA_OPTIONS_GET, NULL, 0, fWPA_options, sizeof(tiUINT32),&dwRetSize);
  725. }
  726. return dwRetValue;
  727. }
  728. /********************************************************************/
  729. tiINT32
  730. CTI_WLAN_AdapterAPI::SetPMKIDmap(OS_802_11_PMKID* pPMKIDMap)
  731. {
  732. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  733. tiUINT32 dwRetSize;
  734. if (CheckObjectMemory(pPMKIDMap, pPMKIDMap->Length))
  735. {
  736. dwRetValue = tiIoCtrl(TIWLN_802_11_PMKID_SET, pPMKIDMap, pPMKIDMap->Length,NULL, 0,&dwRetSize);
  737. }
  738. return dwRetValue;
  739. }
  740. /********************************************************************/
  741. tiINT32
  742. CTI_WLAN_AdapterAPI::AddKey( OS_802_11_KEY* pKey )
  743. {
  744. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  745. tiUINT32 dwRetSize;
  746. if (CheckObjectMemory(pKey, pKey->Length))
  747. {
  748. dwRetValue = tiIoCtrl(TIWLN_802_11_ADD_KEY, pKey, pKey->Length,NULL, 0,&dwRetSize);
  749. }
  750. return dwRetValue;
  751. }
  752. /********************************************************************/
  753. tiINT32
  754. CTI_WLAN_AdapterAPI::RemoveKey( OS_802_11_REMOVE_KEY* pRemoveKey )
  755. {
  756. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  757. tiUINT32 dwRetSize;
  758. if (CheckObjectMemory(pRemoveKey, sizeof(OS_802_11_REMOVE_KEY)))
  759. {
  760. dwRetValue = tiIoCtrl(TIWLN_802_11_REMOVE_KEY, pRemoveKey, sizeof(OS_802_11_REMOVE_KEY),NULL, 0,&dwRetSize);
  761. }
  762. return dwRetValue;
  763. }
  764. /********************************************************************/
  765. tiINT32
  766. CTI_WLAN_AdapterAPI::RegisterEvent( IPC_EVENT_PARAMS* pEventParams )
  767. {
  768. #ifdef _WINDOWS // TRS:WDK
  769. #else
  770. return m_pIPCmod->IPC_RegisterEvent(pEventParams);
  771. #endif
  772. }
  773. /********************************************************************/
  774. tiINT32
  775. CTI_WLAN_AdapterAPI::UnRegisterEvent( IPC_EVENT_PARAMS* pEventParams/*tiINT32 iRegisterID*/ )
  776. {
  777. #ifdef _WINDOWS // TRS:WDK
  778. #else
  779. return m_pIPCmod->IPC_UnRegisterEvent(pEventParams);
  780. #endif
  781. }
  782. /********************************************************************/
  783. tiINT32
  784. CTI_WLAN_AdapterAPI::ConfigPowerManagement( OS_802_11_POWER_PROFILE thePowerMgrProfile )
  785. {
  786. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  787. tiUINT32 dwRetSize;
  788. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_MGR_PROFILE, &thePowerMgrProfile, sizeof(OS_802_11_POWER_PROFILE),NULL,0,&dwRetSize);
  789. return dwRetValue;
  790. }
  791. /********************************************************************/
  792. tiINT32
  793. CTI_WLAN_AdapterAPI::GetAssociationInfo( OS_802_11_ASSOCIATION_INFORMATION** ppInfo )
  794. {
  795. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  796. tiUINT32 nSize = 0;
  797. if ( ppInfo == NULL)
  798. return TI_RESULT_FAILED;
  799. dwRetValue = GetVariableLengthOID(TIWLN_802_11_ASSOCIATION_INFORMATION, (tiVOID**)ppInfo, &nSize, 10000);
  800. if ( TI_SUCCEEDED (dwRetValue) )
  801. {
  802. if (nSize == 0 || nSize < sizeof(OS_802_11_ASSOCIATION_INFORMATION) || *ppInfo == NULL )
  803. dwRetValue = TI_RESULT_FAILED;
  804. }
  805. return dwRetValue;
  806. }
  807. /********************************************************************/
  808. ///////////////////////////////////////////////////////////////////////
  809. // Assorted utility functions
  810. // This function queries for a variable length OID. Starting from a
  811. // suggested size (nNextAllocation), it keeps querying until the size
  812. // requirement is met. It does this repeatedly rather than once because
  813. // the size requirement for an OID can vary from one call to the next, and
  814. // also because some adapters don't report the correct required size value.
  815. tiINT32
  816. CTI_WLAN_AdapterAPI::GetVariableLengthOID(tiUINT32 oid, tiVOID** pp, tiUINT32* pnSize, tiUINT32 nNextAllocation)
  817. {
  818. tiVOID* p = NULL;
  819. tiUINT32 nSize;
  820. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  821. tiUINT32 dwRetSize;
  822. // reset return values
  823. *pp = NULL;
  824. *pnSize = 0;
  825. // query until we have a big enough buffer or get an error
  826. for( ; ; )
  827. {
  828. // try next allocation
  829. nSize = nNextAllocation;
  830. if ( nSize )
  831. {
  832. p = malloc(nSize);
  833. if (!p)
  834. return TI_RESULT_FAILED;
  835. memset(p,0,nSize);
  836. }
  837. // get OID
  838. dwRetValue = tiIoCtrl(oid, p, nSize, p, nSize, &dwRetSize);
  839. if( dwRetSize && nNextAllocation <= nSize && nSize != 0 )
  840. break;
  841. else
  842. nNextAllocation = dwRetSize;
  843. // failed: free buffer
  844. if ( p )
  845. {
  846. free(p);
  847. p = NULL;
  848. }
  849. // if buffer overflow but new size is less than we used, return error
  850. // NOTE: this would be a NIC bug and we have to avoid an infinite loop
  851. if( nNextAllocation <= nSize )
  852. return TI_RESULT_FAILED;
  853. }
  854. // return pointer, size
  855. *pp = p;
  856. *pnSize = nNextAllocation;
  857. // success
  858. return TI_RESULT_OK;
  859. }
  860. /********************************************************************/
  861. tiINT32
  862. CTI_WLAN_AdapterAPI::StartScan( scan_Params_t *pScanParams )
  863. {
  864. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  865. tiUINT32 dwRetSize;
  866. dwRetValue = tiIoCtrl(TIWLN_802_11_START_APP_SCAN_SET, pScanParams, sizeof(scan_Params_t),NULL,0,&dwRetSize);
  867. return dwRetValue;
  868. }
  869. /********************************************************************/
  870. tiINT32
  871. CTI_WLAN_AdapterAPI::StopScan( )
  872. {
  873. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  874. tiUINT32 dwRetSize;
  875. dwRetValue = tiIoCtrl(TIWLN_802_11_STOP_APP_SCAN_SET, NULL, 0,NULL,0,&dwRetSize);
  876. return dwRetValue;
  877. }
  878. /********************************************************************/
  879. tiINT32
  880. CTI_WLAN_AdapterAPI::SetScanPolicy( UINT8* buffer, UINT16 bufferLength )
  881. {
  882. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  883. tiUINT32 dwRetSize;
  884. dwRetValue = tiIoCtrl(TIWLN_802_11_SCAN_POLICY_PARAM_SET, buffer, bufferLength,NULL,0,&dwRetSize);
  885. return dwRetValue;
  886. }
  887. /********************************************************************/
  888. tiINT32
  889. CTI_WLAN_AdapterAPI::GetScanBssList( bssList_t* bssList )
  890. {
  891. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  892. tiUINT32 dwRetSize;
  893. dwRetValue = tiIoCtrl(TIWLN_802_11_SCAN_BSS_LIST_GET, NULL, 0, bssList, sizeof(bssList_t),&dwRetSize);
  894. return dwRetValue;
  895. }
  896. /********************************************************************/
  897. tiINT32
  898. CTI_WLAN_AdapterAPI::PollApPackets( )
  899. {
  900. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  901. tiUINT32 dwRetSize;
  902. dwRetValue = tiIoCtrl(TIWLN_802_11_POLL_AP_PACKETS, NULL, 0, NULL, 0,&dwRetSize);
  903. return dwRetValue;
  904. }
  905. /********************************************************************/
  906. tiINT32
  907. CTI_WLAN_AdapterAPI::PollApPacketsFromAC( tiUINT32 AC )
  908. {
  909. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  910. tiUINT32 dwRetSize;
  911. dwRetValue = tiIoCtrl(TIWLN_802_11_POLL_AP_PACKETS_FROM_AC, &AC, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  912. return dwRetValue;
  913. }
  914. /********************************************************************/
  915. tiINT32
  916. CTI_WLAN_AdapterAPI::SetTrafficIntensityThresholds ( OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS* pTrafficThresholds )
  917. {
  918. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  919. tiUINT32 dwRetSize;
  920. if (CheckObjectMemory(pTrafficThresholds, sizeof(OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS)))
  921. {
  922. dwRetValue = tiIoCtrl(TIWLN_802_11_SET_TRAFFIC_INTENSITY_THRESHOLDS, pTrafficThresholds , sizeof(OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS),NULL, 0,&dwRetSize);
  923. }
  924. return dwRetValue;
  925. }
  926. /********************************************************************/
  927. tiINT32
  928. CTI_WLAN_AdapterAPI::GetTrafficIntensityThresholds ( OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS* pTrafficThresholds )
  929. {
  930. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  931. tiUINT32 dwRetSize;
  932. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_TRAFFIC_INTENSITY_THRESHOLDS, pTrafficThresholds , sizeof(OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS), pTrafficThresholds , sizeof(OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS),&dwRetSize);
  933. return dwRetValue;
  934. }
  935. /********************************************************************/
  936. tiINT32
  937. CTI_WLAN_AdapterAPI::ToggleTrafficIntensityEvents ( tiUINT32 NewStatus )
  938. {
  939. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  940. tiUINT32 dwRetSize;
  941. tiUINT32 localVal = NewStatus;
  942. dwRetValue = tiIoCtrl(TIWLN_802_11_TOGGLE_TRAFFIC_INTENSITY_EVENTS, &localVal , sizeof(tiUINT32),NULL, 0,&dwRetSize);
  943. return dwRetValue;
  944. }
  945. /********************************************************************/
  946. tiINT32
  947. CTI_WLAN_AdapterAPI::SetDTagToAcMappingTable( acTrfcType_e* pDtagToAcTable )
  948. {
  949. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  950. tiUINT32 dwRetSize;
  951. txDataQosParams_t txDataQosParams;
  952. if (CheckObjectMemory(pDtagToAcTable, sizeof(acTrfcType_e)))
  953. {
  954. for (int i=0; i<MAX_NUM_OF_802_1d_TAGS; i++)
  955. {
  956. if (pDtagToAcTable[i] < MAX_NUM_OF_AC)
  957. {
  958. txDataQosParams.qosParams.tag_ToAcClsfrTable[i] = pDtagToAcTable[i];
  959. }
  960. else
  961. {
  962. return dwRetValue;
  963. }
  964. }
  965. dwRetValue = tiIoCtrl(TIWLN_802_11_SET_DTAG_TO_AC_MAPPING_TABLE, &txDataQosParams, sizeof(txDataQosParams_t), NULL, 0,&dwRetSize);
  966. }
  967. return dwRetValue;
  968. }
  969. /********************************************************************/
  970. tiINT32
  971. CTI_WLAN_AdapterAPI::SetVAD( txDataVadTimerParams_t* pVadTimer )
  972. {
  973. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  974. tiUINT32 dwRetSize;
  975. if (CheckObjectMemory(pVadTimer, sizeof(txDataVadTimerParams_t)))
  976. {
  977. dwRetValue = tiIoCtrl(TIWLN_802_11_SET_VAD, pVadTimer, sizeof(txDataVadTimerParams_t), NULL, 0,&dwRetSize);
  978. }
  979. return dwRetValue;
  980. }
  981. /********************************************************************/
  982. tiINT32
  983. CTI_WLAN_AdapterAPI::GetVAD( txDataVadTimerParams_t* pVadTimer )
  984. {
  985. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  986. tiUINT32 dwRetSize;
  987. if (CheckObjectMemory(pVadTimer, sizeof(txDataVadTimerParams_t)))
  988. {
  989. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_VAD, pVadTimer, sizeof(txDataVadTimerParams_t), pVadTimer, sizeof(txDataVadTimerParams_t),&dwRetSize);
  990. }
  991. return dwRetValue;
  992. }
  993. /********************************************************************/
  994. tiINT32
  995. CTI_WLAN_AdapterAPI::SetQosParameters( OS_802_11_QOS_PARAMS* pQosParams )
  996. {
  997. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  998. tiUINT32 dwRetSize;
  999. if (CheckObjectMemory(pQosParams, sizeof(OS_802_11_QOS_PARAMS)))
  1000. {
  1001. dwRetValue = tiIoCtrl(TIWLN_802_11_SET_QOS_PARAMS, pQosParams, sizeof(OS_802_11_QOS_PARAMS),NULL, 0,&dwRetSize);
  1002. }
  1003. return dwRetValue;
  1004. }
  1005. /********************************************************************/
  1006. tiINT32
  1007. CTI_WLAN_AdapterAPI::SetRxTimeOut( OS_802_11_QOS_RX_TIMEOUT_PARAMS* pRxTimeOut )
  1008. {
  1009. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1010. tiUINT32 dwRetSize;
  1011. if (CheckObjectMemory(pRxTimeOut, sizeof(OS_802_11_QOS_PARAMS)))
  1012. {
  1013. dwRetValue = tiIoCtrl(TIWLN_802_11_SET_RX_TIMEOUT, pRxTimeOut, sizeof(OS_802_11_QOS_RX_TIMEOUT_PARAMS),NULL, 0,&dwRetSize);
  1014. }
  1015. return dwRetValue;
  1016. }
  1017. /********************************************************************/
  1018. tiINT32
  1019. CTI_WLAN_AdapterAPI::GetAPQosParameters( OS_802_11_AC_QOS_PARAMS* pACQosParams)
  1020. {
  1021. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1022. tiUINT32 dwRetSize;
  1023. if (CheckObjectMemory(pACQosParams, sizeof(OS_802_11_AC_QOS_PARAMS)))
  1024. {
  1025. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_AP_QOS_PARAMS, pACQosParams, sizeof(OS_802_11_AC_QOS_PARAMS), pACQosParams, sizeof(OS_802_11_AC_QOS_PARAMS),&dwRetSize);
  1026. }
  1027. return dwRetValue;
  1028. }
  1029. /********************************************************************/
  1030. tiINT32
  1031. CTI_WLAN_AdapterAPI::GetUserPriorityOfStream( STREAM_TRAFFIC_PROPERTIES* streamProperties)
  1032. {
  1033. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1034. tiUINT32 dwRetSize;
  1035. if (CheckObjectMemory(streamProperties, sizeof(STREAM_TRAFFIC_PROPERTIES)))
  1036. {
  1037. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_USER_PRIORITY_OF_STREAM, streamProperties, sizeof(STREAM_TRAFFIC_PROPERTIES), streamProperties, sizeof(STREAM_TRAFFIC_PROPERTIES),&dwRetSize);
  1038. }
  1039. return dwRetValue;
  1040. }
  1041. /********************************************************************/
  1042. tiINT32
  1043. CTI_WLAN_AdapterAPI::GetAPQosCapabilitesParameters( OS_802_11_AP_QOS_CAPABILITIES_PARAMS* pAPQosCapabiltiesParams )
  1044. {
  1045. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1046. tiUINT32 dwRetSize;
  1047. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_AP_QOS_CAPABILITIES, NULL, 0, pAPQosCapabiltiesParams, sizeof(OS_802_11_AP_QOS_CAPABILITIES_PARAMS),&dwRetSize);
  1048. return dwRetValue;
  1049. }
  1050. /********************************************************************/
  1051. tiINT32
  1052. CTI_WLAN_AdapterAPI::AddTspec ( OS_802_11_QOS_TSPEC_PARAMS* pTspecParams)
  1053. {
  1054. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1055. tiUINT32 dwRetSize;
  1056. dwRetValue = tiIoCtrl(TIWLN_802_11_ADD_TSPEC, pTspecParams, sizeof(OS_802_11_QOS_TSPEC_PARAMS),NULL, 0,&dwRetSize);
  1057. return dwRetValue;
  1058. }
  1059. /********************************************************************/
  1060. tiINT32
  1061. CTI_WLAN_AdapterAPI::GetTspecParameters( OS_802_11_QOS_TSPEC_PARAMS* pTspecParams)
  1062. {
  1063. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1064. tiUINT32 dwRetSize;
  1065. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_TSPEC_PARAMS, pTspecParams, sizeof(OS_802_11_QOS_TSPEC_PARAMS), pTspecParams, sizeof(OS_802_11_QOS_TSPEC_PARAMS),&dwRetSize);
  1066. return dwRetValue;
  1067. }/********************************************************************/
  1068. tiINT32
  1069. CTI_WLAN_AdapterAPI::DeleteTspec( OS_802_11_QOS_DELETE_TSPEC_PARAMS* pDelTspecParams)
  1070. {
  1071. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1072. tiUINT32 dwRetSize;
  1073. dwRetValue = tiIoCtrl(TIWLN_802_11_DELETE_TSPEC, pDelTspecParams, sizeof(OS_802_11_QOS_DELETE_TSPEC_PARAMS),NULL, 0,&dwRetSize);
  1074. return dwRetValue;
  1075. }/********************************************************************/
  1076. tiINT32
  1077. CTI_WLAN_AdapterAPI:: GetCurrentACStatus( OS_802_11_AC_UPSD_STATUS_PARAMS *pAcStatusParams)
  1078. {
  1079. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1080. tiUINT32 dwRetSize;
  1081. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_CURRENT_AC_STATUS, pAcStatusParams, sizeof(OS_802_11_AC_UPSD_STATUS_PARAMS), pAcStatusParams, sizeof(OS_802_11_AC_UPSD_STATUS_PARAMS),&dwRetSize);
  1082. return dwRetValue;
  1083. }/********************************************************************/
  1084. tiINT32
  1085. CTI_WLAN_AdapterAPI:: SetMediumUsageThreshold(OS_802_11_THRESHOLD_CROSS_PARAMS* pThresholdCrossParams)
  1086. {
  1087. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1088. tiUINT32 dwRetSize;
  1089. dwRetValue = tiIoCtrl(TIWLN_802_11_SET_MEDIUM_USAGE_THRESHOLD, pThresholdCrossParams, sizeof(OS_802_11_THRESHOLD_CROSS_PARAMS),NULL, 0,&dwRetSize);
  1090. return dwRetValue;
  1091. }/********************************************************************/
  1092. tiINT32
  1093. CTI_WLAN_AdapterAPI:: SetPhyRateThreshold(OS_802_11_THRESHOLD_CROSS_PARAMS* pThresholdCrossParams)
  1094. {
  1095. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1096. tiUINT32 dwRetSize;
  1097. dwRetValue = tiIoCtrl(TIWLN_802_11_SET_PHY_RATE_THRESHOLD, pThresholdCrossParams, sizeof(OS_802_11_THRESHOLD_CROSS_PARAMS),NULL, 0,&dwRetSize);
  1098. return dwRetValue;
  1099. }
  1100. /********************************************************************/
  1101. tiINT32
  1102. CTI_WLAN_AdapterAPI:: GetMediumUsageThreshold(OS_802_11_THRESHOLD_CROSS_PARAMS* pThresholdCrossParams)
  1103. {
  1104. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1105. tiUINT32 dwRetSize;
  1106. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_MEDIUM_USAGE_THRESHOLD, pThresholdCrossParams, sizeof(OS_802_11_THRESHOLD_CROSS_PARAMS), pThresholdCrossParams, sizeof(OS_802_11_THRESHOLD_CROSS_PARAMS),&dwRetSize);
  1107. return dwRetValue;
  1108. }
  1109. /********************************************************************/
  1110. tiINT32
  1111. CTI_WLAN_AdapterAPI:: GetPhyRateThreshold(OS_802_11_THRESHOLD_CROSS_PARAMS* pThresholdCrossParams)
  1112. {
  1113. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1114. tiUINT32 dwRetSize;
  1115. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_PHY_RATE_THRESHOLD, pThresholdCrossParams, sizeof(OS_802_11_THRESHOLD_CROSS_PARAMS), pThresholdCrossParams, sizeof(OS_802_11_THRESHOLD_CROSS_PARAMS),&dwRetSize);
  1116. return dwRetValue;
  1117. }
  1118. /********************************************************************/
  1119. tiINT32
  1120. CTI_WLAN_AdapterAPI:: GetDesiredPsMode(OS_802_11_QOS_DESIRED_PS_MODE* pDesiredPsMode)
  1121. {
  1122. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1123. tiUINT32 dwRetSize;
  1124. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_DESIRED_PS_MODE, NULL, 0, pDesiredPsMode, sizeof(OS_802_11_QOS_DESIRED_PS_MODE),&dwRetSize);
  1125. return dwRetValue;
  1126. }
  1127. /********************************************************************/
  1128. tiINT32
  1129. CTI_WLAN_AdapterAPI::ConfigTxClassifier(tiUINT32 inParamsBuffLen, tiUINT8 *pInParamsBuff)
  1130. {
  1131. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1132. tiUINT32 dwRetSize;
  1133. if ( pInParamsBuff && CheckObjectMemory(pInParamsBuff, inParamsBuffLen) )
  1134. {
  1135. dwRetValue = tiIoCtrl(TIWLN_802_11_CONFIG_TX_CLASS, pInParamsBuff, inParamsBuffLen,NULL, 0,&dwRetSize);
  1136. }
  1137. return dwRetValue;
  1138. }
  1139. /********************************************************************/
  1140. tiINT32
  1141. CTI_WLAN_AdapterAPI::RemoveClassifierEntry(clsfr_tableEntry_t *pClsfrEntry)
  1142. {
  1143. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1144. tiUINT32 dwRetSize;
  1145. if (pClsfrEntry)
  1146. {
  1147. dwRetValue = tiIoCtrl(TIWLN_802_11_REMOVE_CLSFR_ENTRY, pClsfrEntry, sizeof(clsfr_tableEntry_t),NULL, 0,&dwRetSize);
  1148. }
  1149. return dwRetValue;
  1150. }
  1151. /**********************************************************************/
  1152. tiINT32
  1153. CTI_WLAN_AdapterAPI::GetClsfrType (clsfrTypeAndSupport *currClsfrType)
  1154. {
  1155. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1156. tiUINT32 dwRetSize;
  1157. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_CLSFR_TYPE, NULL, 0, currClsfrType, sizeof(clsfrTypeAndSupport),&dwRetSize);
  1158. return dwRetValue;
  1159. }
  1160. /********************************************************************/
  1161. tiINT32
  1162. CTI_WLAN_AdapterAPI::GetDriverCapabilities (OS_802_11_DRIVER_CAPABILITIES* pDriverCapabilities )
  1163. {
  1164. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1165. tiUINT32 dwRetSize;
  1166. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_DRIVERS_CAPABILITIES, pDriverCapabilities, sizeof(OS_802_11_DRIVER_CAPABILITIES), pDriverCapabilities, sizeof(OS_802_11_DRIVER_CAPABILITIES),&dwRetSize);
  1167. return dwRetValue;
  1168. }
  1169. /********************************************************************/
  1170. tiINT32
  1171. CTI_WLAN_AdapterAPI::GetSelectedBSSIDInfo(OS_802_11_BSSID_EX *pSelectedBSSIDInfo)
  1172. {
  1173. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1174. tiUINT32 dwRetSize;
  1175. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_SELECTED_BSSID_INFO, pSelectedBSSIDInfo, sizeof(OS_802_11_BSSID_EX), pSelectedBSSIDInfo, sizeof(OS_802_11_BSSID_EX),&dwRetSize);
  1176. return dwRetValue;
  1177. }
  1178. /********************************************************************/
  1179. tiINT32
  1180. CTI_WLAN_AdapterAPI::GetPrimaryBSSIDInfo(OS_802_11_BSSID_EX *pSelectedBSSIDInfo)
  1181. {
  1182. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1183. tiUINT32 dwRetSize;
  1184. tiUINT32 outBufLen;
  1185. outBufLen = pSelectedBSSIDInfo->Length; //sizeof(OS_802_11_BSSID_EX) + sizeof(OS_802_11_FIXED_IEs) + 300;
  1186. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_PRIMARY_BSSID_INFO, pSelectedBSSIDInfo, outBufLen, pSelectedBSSIDInfo, outBufLen, &dwRetSize);
  1187. return dwRetValue;
  1188. }
  1189. /********************************************************************/
  1190. tiINT32
  1191. CTI_WLAN_AdapterAPI::EnableDisableRxDataFilters(tiBOOL enabled)
  1192. {
  1193. tiUINT32 dwRetSize;
  1194. return tiIoCtrl(TIWLN_ENABLE_DISABLE_RX_DATA_FILTERS, &enabled, sizeof(enabled), NULL, 0, &dwRetSize);
  1195. }
  1196. /********************************************************************/
  1197. tiINT32
  1198. CTI_WLAN_AdapterAPI::GetRxDataFiltersStatistics(TIWLAN_DATA_FILTER_STATISTICS * pStatistics)
  1199. {
  1200. tiUINT32 dwRetSize;
  1201. return tiIoCtrl(TIWLN_GET_RX_DATA_FILTERS_STATISTICS, NULL, 0, pStatistics, sizeof(TIWLAN_DATA_FILTER_STATISTICS), &dwRetSize);
  1202. }
  1203. /********************************************************************/
  1204. tiINT32
  1205. CTI_WLAN_AdapterAPI::GetPowerConsumptionStatistics(PowerConsumptionTimeStat_t * pStatistics)
  1206. {
  1207. tiUINT32 dwRetSize;
  1208. return tiIoCtrl(TIWLN_GET_POWER_CONSUMPTION_STATISTICS, NULL, 0, pStatistics, sizeof(PowerConsumptionTimeStat_t), &dwRetSize);
  1209. }
  1210. /********************************************************************/
  1211. tiINT32
  1212. CTI_WLAN_AdapterAPI::AddRxDataFilter(TIWLAN_DATA_FILTER_REQUEST * pRequest)
  1213. {
  1214. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1215. tiUINT32 dwRetSize;
  1216. if ( pRequest )
  1217. {
  1218. dwRetValue = tiIoCtrl(TIWLN_ADD_RX_DATA_FILTER, pRequest, sizeof(TIWLAN_DATA_FILTER_REQUEST), NULL, 0, &dwRetSize);
  1219. }
  1220. return dwRetValue;
  1221. }
  1222. /********************************************************************/
  1223. tiINT32
  1224. CTI_WLAN_AdapterAPI::RemoveRxDataFilter(TIWLAN_DATA_FILTER_REQUEST * pRequest)
  1225. {
  1226. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1227. tiUINT32 dwRetSize;
  1228. if ( pRequest )
  1229. {
  1230. dwRetValue = tiIoCtrl(TIWLN_REMOVE_RX_DATA_FILTER, pRequest, sizeof(TIWLAN_DATA_FILTER_REQUEST), NULL, 0, &dwRetSize);
  1231. }
  1232. return dwRetValue;
  1233. }
  1234. /********************************************************************/
  1235. tiINT32
  1236. CTI_WLAN_AdapterAPI::SetTxPowerDbm(tiUINT8 uTxPower)
  1237. {
  1238. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1239. tiUINT32 dwRetSize;
  1240. dwRetValue = tiIoCtrl(TIWLN_802_11_TX_POWER_DBM_SET, &uTxPower, sizeof(UINT8),NULL, 0,&dwRetSize);
  1241. return dwRetValue;
  1242. }
  1243. /********************************************************************/
  1244. tiINT32
  1245. CTI_WLAN_AdapterAPI::SetPowerMode(OS_802_11_POWER_PROFILE uPower )
  1246. {
  1247. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1248. tiUINT32 dwRetSize;
  1249. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_MODE_SET, &uPower, sizeof(OS_802_11_POWER_PROFILE),NULL, 0,&dwRetSize);
  1250. return dwRetValue;
  1251. }
  1252. /********************************************************************/
  1253. tiINT32
  1254. CTI_WLAN_AdapterAPI::GetPowerMode(OS_802_11_POWER_PROFILE* puPower)
  1255. {
  1256. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1257. tiUINT32 dwRetSize;
  1258. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_MODE_GET, NULL, 0, puPower, sizeof(OS_802_11_POWER_PROFILE),&dwRetSize);
  1259. return dwRetValue;
  1260. }
  1261. /********************************************************************/
  1262. tiINT32
  1263. CTI_WLAN_AdapterAPI::SetPowerLevelPS(OS_802_11_POWER_LEVELS uPower )
  1264. {
  1265. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1266. tiUINT32 dwRetSize;
  1267. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_LEVEL_PS_SET, &uPower, sizeof(OS_802_11_POWER_LEVELS),NULL, 0,&dwRetSize);
  1268. return dwRetValue;
  1269. }
  1270. /********************************************************************/
  1271. tiINT32
  1272. CTI_WLAN_AdapterAPI::GetPowerLevelPS( OS_802_11_POWER_LEVELS* puPower)
  1273. {
  1274. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1275. tiUINT32 dwRetSize;
  1276. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_LEVEL_PS_GET, NULL, 0, puPower, sizeof(OS_802_11_POWER_LEVELS),&dwRetSize);
  1277. return dwRetValue;
  1278. }
  1279. /********************************************************************/
  1280. tiINT32
  1281. CTI_WLAN_AdapterAPI::SetPowerLevelDefault(OS_802_11_POWER_LEVELS uPower )
  1282. {
  1283. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1284. tiUINT32 dwRetSize;
  1285. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_LEVEL_DEFAULT_SET, &uPower, sizeof(OS_802_11_POWER_LEVELS),NULL, 0,&dwRetSize);
  1286. return dwRetValue;
  1287. }
  1288. /********************************************************************/
  1289. tiINT32
  1290. CTI_WLAN_AdapterAPI::GetPowerLevelDefault( OS_802_11_POWER_LEVELS* puPower)
  1291. {
  1292. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1293. tiUINT32 dwRetSize;
  1294. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_LEVEL_DEFAULT_GET, NULL, 0, puPower, sizeof(OS_802_11_POWER_LEVELS),&dwRetSize);
  1295. return dwRetValue;
  1296. }
  1297. /********************************************************************/
  1298. tiINT32
  1299. CTI_WLAN_AdapterAPI::SetPowerLevelDozeMode(OS_802_11_POWER_PROFILE uPower )
  1300. {
  1301. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1302. tiUINT32 dwRetSize;
  1303. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_LEVEL_DOZE_MODE_SET, &uPower, sizeof(OS_802_11_POWER_PROFILE),NULL, 0,&dwRetSize);
  1304. return dwRetValue;
  1305. }
  1306. /********************************************************************/
  1307. tiINT32
  1308. CTI_WLAN_AdapterAPI::GetPowerLevelDozeMode( OS_802_11_POWER_PROFILE* puPower)
  1309. {
  1310. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1311. tiUINT32 dwRetSize;
  1312. dwRetValue = tiIoCtrl(TIWLN_802_11_POWER_LEVEL_DOZE_MODE_GET, NULL, 0, puPower, sizeof(OS_802_11_POWER_PROFILE),&dwRetSize);
  1313. return dwRetValue;
  1314. }
  1315. /********************************************************************/
  1316. tiINT32
  1317. CTI_WLAN_AdapterAPI::SetBeaconFilterDesiredState( OS_802_11_BEACON_FILTER_MODE uBeaconFilterMode)
  1318. {
  1319. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1320. tiUINT32 dwRetSize;
  1321. dwRetValue = tiIoCtrl(TIWLN_802_11_BEACON_FILTER_DESIRED_STATE_SET, &uBeaconFilterMode, sizeof(OS_802_11_BEACON_FILTER_MODE),NULL, 0,&dwRetSize);
  1322. return dwRetValue;
  1323. }
  1324. /********************************************************************/
  1325. tiINT32
  1326. CTI_WLAN_AdapterAPI::GetBeaconFilterDesiredState( tiUINT8* pDesiredState)
  1327. {
  1328. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1329. tiUINT32 dwRetSize;
  1330. dwRetValue = tiIoCtrl(TIWLN_802_11_BEACON_FILTER_DESIRED_STATE_GET, NULL, 0, pDesiredState, sizeof(UINT8),&dwRetSize);
  1331. return dwRetValue;
  1332. }
  1333. /********************************************************************/
  1334. tiINT32
  1335. CTI_WLAN_AdapterAPI::GetTxPowerLevel(tiCHAR* puTxPower )
  1336. {
  1337. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1338. tiUINT32 dwRetSize;
  1339. if ( puTxPower )
  1340. {
  1341. dwRetValue = tiIoCtrl(TIWLN_802_11_TX_POWER_LEVEL_GET, NULL, 0, puTxPower, sizeof(TIWLAN_POWER_LEVEL_TABLE),&dwRetSize);
  1342. }
  1343. return dwRetValue;
  1344. }
  1345. /********************************************************************/
  1346. tiINT32
  1347. CTI_WLAN_AdapterAPI::GetTxPowerDbm(tiCHAR* puTxPower )
  1348. {
  1349. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1350. tiUINT32 dwRetSize;
  1351. if ( puTxPower )
  1352. {
  1353. dwRetValue = tiIoCtrl(TIWLN_802_11_TX_POWER_DBM_GET, NULL, 0, puTxPower, sizeof(UINT8),&dwRetSize);
  1354. }
  1355. return dwRetValue;
  1356. }
  1357. /********************************************************************/
  1358. tiINT32
  1359. CTI_WLAN_AdapterAPI::Set4XState(tiBOOL bStatus)
  1360. {
  1361. tiUINT32 bRet = TI_RESULT_FAILED;
  1362. bRet = m_pRegistry->PutDW(_T("Mode4x"), bStatus);
  1363. return bRet;
  1364. }
  1365. /********************************************************************/
  1366. tiINT32
  1367. CTI_WLAN_AdapterAPI::Get4XState(tiBOOL* lpbStatus)
  1368. {
  1369. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1370. tiUINT32 dwRetSize;
  1371. dwRetValue = tiIoCtrl(TIWLN_4XACTIVESTATE_GET, NULL, 0, lpbStatus, sizeof(tiBOOL),&dwRetSize);
  1372. return dwRetValue;
  1373. }
  1374. /********************************************************************/
  1375. tiINT32
  1376. CTI_WLAN_AdapterAPI::GetDesiredRate(tiUINT32* puDesiredRates)
  1377. {
  1378. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1379. tiUINT32 dwRetSize;
  1380. if ( puDesiredRates )
  1381. {
  1382. dwRetValue = tiIoCtrl(TIWLN_802_11_DESIRED_RATES_GET, NULL, 0, puDesiredRates, sizeof(tiUINT32),&dwRetSize);
  1383. }
  1384. return dwRetValue;
  1385. }
  1386. /********************************************************************/
  1387. tiINT32
  1388. CTI_WLAN_AdapterAPI::GetCurrentRate(tiUINT32* puCurrentRates)
  1389. {
  1390. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1391. tiUINT32 dwRetSize;
  1392. if ( puCurrentRates )
  1393. {
  1394. dwRetValue = tiIoCtrl(TIWLN_802_11_CURRENT_RATES_GET, NULL, 0, puCurrentRates, sizeof(tiUINT32),&dwRetSize);
  1395. }
  1396. return dwRetValue;
  1397. }
  1398. /********************************************************************/
  1399. tiINT32
  1400. CTI_WLAN_AdapterAPI::SetFragmentThreshold(tiUINT32 dwFragmentThreshold)
  1401. {
  1402. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1403. tiUINT32 dwRetSize;
  1404. dwRetValue = tiIoCtrl(TIWLN_802_11_FRAGMENTATION_THRESHOLD_SET, &dwFragmentThreshold, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  1405. return dwRetValue;
  1406. }
  1407. /********************************************************************/
  1408. tiINT32
  1409. CTI_WLAN_AdapterAPI::GetFragmentThreshold(tiUINT32* lpdwFragmentThreshold)
  1410. {
  1411. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1412. tiUINT32 dwRetSize;
  1413. if ( lpdwFragmentThreshold )
  1414. {
  1415. dwRetValue = tiIoCtrl( TIWLN_802_11_FRAGMENTATION_THRESHOLD_GET, NULL, 0,
  1416. lpdwFragmentThreshold, sizeof(tiUINT32),&dwRetSize);
  1417. }
  1418. return dwRetValue;
  1419. }
  1420. /********************************************************************/
  1421. tiINT32
  1422. CTI_WLAN_AdapterAPI::SetRTSThreshold(tiUINT32 uRTSThreshold)
  1423. {
  1424. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1425. tiUINT32 dwRetSize;
  1426. dwRetValue = tiIoCtrl(TIWLN_802_11_RTS_THRESHOLD_SET, &uRTSThreshold, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  1427. return dwRetValue;
  1428. }
  1429. /********************************************************************/
  1430. tiINT32
  1431. CTI_WLAN_AdapterAPI::GetRTSThreshold(tiUINT32* puRTSThreshold )
  1432. {
  1433. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1434. tiUINT32 dwRetSize;
  1435. if ( puRTSThreshold )
  1436. {
  1437. dwRetValue = tiIoCtrl(TIWLN_802_11_RTS_THRESHOLD_GET, NULL, 0, puRTSThreshold, sizeof(tiUINT32),&dwRetSize);
  1438. }
  1439. return dwRetValue;
  1440. }
  1441. /********************************************************************/
  1442. tiINT32
  1443. CTI_WLAN_AdapterAPI::SetShortPreamble(tiUINT32 uShortPreamble)
  1444. {
  1445. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1446. tiUINT32 dwRetSize;
  1447. dwRetValue = tiIoCtrl(TIWLN_802_11_SHORT_PREAMBLE_SET, &uShortPreamble, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  1448. return dwRetValue;
  1449. }
  1450. /********************************************************************/
  1451. tiINT32
  1452. CTI_WLAN_AdapterAPI::GetShortPreamble(tiUINT32* puShortPreamble)
  1453. {
  1454. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1455. tiUINT32 dwRetSize;
  1456. if ( puShortPreamble )
  1457. {
  1458. dwRetValue = tiIoCtrl(TIWLN_802_11_SHORT_PREAMBLE_GET, NULL, 0, puShortPreamble, sizeof(tiUINT32),&dwRetSize);
  1459. }
  1460. return dwRetValue;
  1461. }
  1462. /********************************************************************/
  1463. tiINT32
  1464. CTI_WLAN_AdapterAPI::SetShortRetry(tiUINT32 uShortRetry)
  1465. {
  1466. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1467. tiUINT32 dwRetSize;
  1468. dwRetValue = tiIoCtrl(TIWLN_802_11_SHORT_RETRY_SET, &uShortRetry, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  1469. return dwRetValue;
  1470. }
  1471. /********************************************************************/
  1472. tiINT32
  1473. CTI_WLAN_AdapterAPI::GetShortRetry(tiUINT32* puShortRetry)
  1474. {
  1475. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1476. tiUINT32 dwRetSize;
  1477. if ( puShortRetry )
  1478. {
  1479. dwRetValue = tiIoCtrl(TIWLN_802_11_SHORT_RETRY_GET, NULL, 0, puShortRetry, sizeof(tiUINT32),&dwRetSize);
  1480. }
  1481. return dwRetValue;
  1482. }
  1483. /********************************************************************/
  1484. tiINT32
  1485. CTI_WLAN_AdapterAPI::SetLongRetry(tiUINT32 uLongRetry)
  1486. {
  1487. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1488. tiUINT32 dwRetSize;
  1489. dwRetValue = tiIoCtrl(TIWLN_802_11_LONG_RETRY_SET, &uLongRetry, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  1490. return dwRetValue;
  1491. }
  1492. /********************************************************************/
  1493. tiINT32
  1494. CTI_WLAN_AdapterAPI::GetLongRetry(tiUINT32* puLongRetry)
  1495. {
  1496. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1497. tiUINT32 dwRetSize;
  1498. if ( puLongRetry )
  1499. {
  1500. dwRetValue = tiIoCtrl(TIWLN_802_11_LONG_RETRY_GET, NULL, 0, puLongRetry, sizeof(tiUINT32),&dwRetSize);
  1501. }
  1502. return dwRetValue;
  1503. }
  1504. /********************************************************************/
  1505. tiINT32
  1506. CTI_WLAN_AdapterAPI::GetSupportedNetworkTypes(OS_802_11_NETWORK_TYPE* pNetTypeLst, tiUINT32 uMaxNetTypes )
  1507. {
  1508. tiUINT32 dwRetValue = TI_RESULT_INVALID_PARAMETER;
  1509. tiUINT32 dwRetSize;
  1510. tiUINT32 uSizeList = sizeof(OS_802_11_NETWORK_TYPE)*uMaxNetTypes;
  1511. if ( pNetTypeLst && CheckObjectMemory(pNetTypeLst, uSizeList) )
  1512. {
  1513. tiUINT32 dwNetTypesSize = sizeof(OS_802_11_NETWORK_TYPE_LIST) + (uMaxNetTypes - 1) * sizeof(OS_802_11_NETWORK_TYPE);
  1514. OS_802_11_NETWORK_TYPE_LIST* pNetworkTypeList = NULL;
  1515. pNetworkTypeList = (OS_802_11_NETWORK_TYPE_LIST*) new tiUINT8[dwNetTypesSize];
  1516. if( !pNetworkTypeList )
  1517. return TI_RESULT_NOT_ENOUGH_MEMORY;
  1518. memset(pNetworkTypeList, 0, dwNetTypesSize );
  1519. pNetworkTypeList->NumberOfItems = uMaxNetTypes;
  1520. dwRetValue = tiIoCtrl(TIWLN_802_11_NETWORK_TYPES_SUPPORTED, NULL, 0, pNetTypeLst, dwNetTypesSize,&dwRetSize);
  1521. if ( dwRetSize )
  1522. {
  1523. dwRetValue = TI_RESULT_OK;
  1524. memcpy(pNetTypeLst, pNetworkTypeList, uSizeList);
  1525. }
  1526. delete [] pNetworkTypeList;
  1527. }
  1528. return dwRetValue;
  1529. }
  1530. /********************************************************************/
  1531. tiINT32
  1532. CTI_WLAN_AdapterAPI::SetNetworkTypeInUse( OS_802_11_NETWORK_TYPE uNetType )
  1533. {
  1534. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1535. tiUINT32 dwRetSize;
  1536. dwRetValue = tiIoCtrl(TIWLN_802_11_NETWORK_TYPE_IN_USE_SET, &uNetType, sizeof(OS_802_11_NETWORK_TYPE),NULL, 0,&dwRetSize);
  1537. return dwRetValue;
  1538. }
  1539. /********************************************************************/
  1540. tiINT32
  1541. CTI_WLAN_AdapterAPI::GetNetworkTypeInUse( OS_802_11_NETWORK_TYPE* puNetType )
  1542. {
  1543. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1544. tiUINT32 dwRetSize;
  1545. if ( puNetType )
  1546. {
  1547. dwRetValue = tiIoCtrl(TIWLN_802_11_NETWORK_TYPE_IN_USE_GET, NULL, 0, puNetType, sizeof(OS_802_11_NETWORK_TYPE),&dwRetSize);
  1548. }
  1549. return dwRetValue;
  1550. }
  1551. /********************************************************************/
  1552. tiINT32
  1553. CTI_WLAN_AdapterAPI::GetBSSID( OS_802_11_MAC_ADDRESS* pAddrBSSID )
  1554. {
  1555. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1556. tiUINT32 dwRetSize;
  1557. if ( pAddrBSSID && CheckObjectMemory(pAddrBSSID, sizeof(OS_802_11_MAC_ADDRESS)) )
  1558. {
  1559. dwRetValue = tiIoCtrl(TIWLN_802_11_BSSID_GET, NULL, 0, pAddrBSSID, sizeof( OS_802_11_MAC_ADDRESS ),&dwRetSize);
  1560. }
  1561. return dwRetValue;
  1562. }
  1563. /********************************************************************/
  1564. tiINT32
  1565. CTI_WLAN_AdapterAPI::SetBSSID( OS_802_11_MAC_ADDRESS* lpAddrBSSID )
  1566. {
  1567. tiUINT32 dwRetValue;
  1568. tiUINT32 dwRetSize;
  1569. dwRetValue = tiIoCtrl(TIWLN_802_11_BSSID_SET, lpAddrBSSID, sizeof( OS_802_11_MAC_ADDRESS ),NULL, 0,&dwRetSize);
  1570. return dwRetValue;
  1571. }
  1572. /********************************************************************/
  1573. tiINT32
  1574. CTI_WLAN_AdapterAPI::SetRSSITrigger( tiBOOL bRSSItr )
  1575. {
  1576. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1577. tiUINT32 dwRetSize;
  1578. dwRetValue = tiIoCtrl(TIWLN_802_11_RSSI_TRIGGER_SET, &bRSSItr, sizeof(tiBOOL),NULL, 0,&dwRetSize);
  1579. return dwRetValue;
  1580. }
  1581. /********************************************************************/
  1582. tiINT32
  1583. CTI_WLAN_AdapterAPI::GetRSSITrigger( tiBOOL* pbRSSItr )
  1584. {
  1585. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1586. tiUINT32 dwRetSize;
  1587. dwRetValue = tiIoCtrl(TIWLN_802_11_RSSI_TRIGGER_GET, NULL, 0, pbRSSItr, sizeof( tiBOOL ),&dwRetSize);
  1588. return dwRetValue;
  1589. }
  1590. /********************************************************************/
  1591. tiINT32
  1592. CTI_WLAN_AdapterAPI::SetAntennaDiversityParams( PTIWLAN_ANT_DIVERSITY pAntennaDiversityOptions )
  1593. {
  1594. tiINT32 bRet = TI_RESULT_FAILED;
  1595. tiUINT32 dwRetSize;
  1596. bRet = tiIoCtrl(TIWLAN_802_11_ANTENNA_DIVERSITY_PARAM_SET, pAntennaDiversityOptions, sizeof(TIWLAN_ANT_DIVERSITY), NULL, 0, &dwRetSize);
  1597. return bRet;
  1598. }
  1599. /********************************************************************/
  1600. tiINT32
  1601. CTI_WLAN_AdapterAPI::SetWEPStatus(tiUINT32 dwWEPStatus)
  1602. {
  1603. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1604. tiUINT32 dwRetSize;
  1605. dwRetValue = tiIoCtrl(TIWLN_802_11_WEP_STATUS_SET, &dwWEPStatus, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  1606. return dwRetValue;
  1607. }
  1608. /********************************************************************/
  1609. tiINT32
  1610. CTI_WLAN_AdapterAPI::GetWEPStatus(tiUINT32* lpdwWEPStatus)
  1611. {
  1612. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1613. tiUINT32 dwRetSize;
  1614. if ( lpdwWEPStatus )
  1615. {
  1616. dwRetValue = tiIoCtrl(TIWLN_802_11_WEP_STATUS_GET, NULL, 0, lpdwWEPStatus, sizeof(tiUINT32),&dwRetSize);
  1617. }
  1618. return dwRetValue;
  1619. }
  1620. /********************************************************************/
  1621. tiINT32
  1622. CTI_WLAN_AdapterAPI::SetDesiredChannel( tiUINT32 dwDesiredChannel )
  1623. {
  1624. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1625. tiUINT32 dwRetSize;
  1626. dwRetValue = tiIoCtrl(TIWLN_802_11_DESIRED_CHANNEL_SET, &dwDesiredChannel, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  1627. return dwRetValue;
  1628. }
  1629. /********************************************************************/
  1630. tiINT32
  1631. CTI_WLAN_AdapterAPI::GetDesiredChannel( tiUINT32* lpdwDesiredChannel )
  1632. {
  1633. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1634. tiUINT32 dwRetSize;
  1635. if ( lpdwDesiredChannel )
  1636. {
  1637. dwRetValue = tiIoCtrl(TIWLN_802_11_DESIRED_CHANNEL_GET, NULL, 0, lpdwDesiredChannel, sizeof(tiUINT32),&dwRetSize);
  1638. }
  1639. return dwRetValue;
  1640. }
  1641. /********************************************************************/
  1642. tiINT32
  1643. CTI_WLAN_AdapterAPI::GetCurrentChannel( tiUINT32* puCurrentChannel )
  1644. {
  1645. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1646. tiUINT32 dwRetSize;
  1647. if ( puCurrentChannel )
  1648. {
  1649. dwRetValue = tiIoCtrl(TIWLN_802_11_CHANNEL_GET, NULL, 0, puCurrentChannel, sizeof(tiUINT32),&dwRetSize);
  1650. }
  1651. return dwRetValue;
  1652. }
  1653. /********************************************************************/
  1654. tiINT32
  1655. CTI_WLAN_AdapterAPI::SetBtCoeEnable( tiUINT32 uModeEnable)
  1656. {
  1657. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1658. tiUINT32 dwRetSize;
  1659. dwRetValue = tiIoCtrl(BT_COEXSISTANCE_SET_ENABLE, &uModeEnable, sizeof(tiUINT32),NULL,0,&dwRetSize);
  1660. return dwRetValue;
  1661. }
  1662. /********************************************************************/
  1663. tiINT32
  1664. CTI_WLAN_AdapterAPI::SetBtCoeRate( tiUINT8 *pRate )
  1665. {
  1666. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1667. tiUINT32 dwRetSize;
  1668. dwRetValue = tiIoCtrl(BT_COEXSISTANCE_SET_RATE, pRate, sizeof(tiUINT8)*NUM_OF_RATES_IN_SG,NULL,0,&dwRetSize);
  1669. return dwRetValue;
  1670. }
  1671. /********************************************************************/
  1672. tiINT32
  1673. CTI_WLAN_AdapterAPI::SetBtCoeConfig( tiUINT32 *pConfig )
  1674. {
  1675. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1676. dwRetValue = tiIoCtrl(BT_COEXSISTANCE_SET_CONFIG, pConfig, sizeof(tiUINT32) * NUM_OF_CONFIG_PARAMS_IN_SG,NULL,0,NULL);
  1677. return dwRetValue;
  1678. }
  1679. tiINT32
  1680. CTI_WLAN_AdapterAPI::SetBtCoeGetStatus( tiUINT32 *pStatus )
  1681. {
  1682. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1683. tiUINT32 dwRetSize;
  1684. dwRetValue = tiIoCtrl(BT_COEXSISTANCE_GET_STATUS, NULL, 0, pStatus, sizeof(tiUINT32) * NUM_OF_STATUS_PARAMS_IN_SG,&dwRetSize);
  1685. return dwRetValue;
  1686. }
  1687. #ifdef TI_DBG
  1688. /********************************************************************/
  1689. tiINT32
  1690. CTI_WLAN_AdapterAPI::DisplayStats( tiUINT8* puDbgBuffer, tiUINT32 uBuffSize)
  1691. {
  1692. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1693. tiUINT32 dwRetSize;
  1694. if ( puDbgBuffer && CheckObjectMemory(puDbgBuffer, uBuffSize) )
  1695. {
  1696. dwRetValue = tiIoCtrl( TIWLN_DISPLAY_STATS, puDbgBuffer, uBuffSize,NULL, 0,&dwRetSize);
  1697. }
  1698. return dwRetValue;
  1699. }
  1700. /********************************************************************/
  1701. tiINT32
  1702. CTI_WLAN_AdapterAPI::SetReportModule( tiUINT8 *pData )
  1703. {
  1704. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1705. tiUINT32 dwRetSize = 0;
  1706. if ( pData && CheckObjectMemory(pData, WLAN_MAX_LOG_MODULES) )
  1707. {
  1708. dwRetValue = tiIoCtrl( TIWLN_REPORT_MODULE_SET, pData, WLAN_MAX_LOG_MODULES, NULL, 0, &dwRetSize);
  1709. }
  1710. return dwRetValue;
  1711. }
  1712. /********************************************************************/
  1713. tiINT32
  1714. CTI_WLAN_AdapterAPI::GetReportModule( tiUINT8* pData )
  1715. {
  1716. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1717. tiUINT32 dwRetSize;
  1718. if ( pData )
  1719. {
  1720. dwRetValue = tiIoCtrl(TIWLN_REPORT_MODULE_GET, NULL, 0, pData, WLAN_MAX_LOG_MODULES, &dwRetSize);
  1721. }
  1722. return dwRetValue;
  1723. }
  1724. /********************************************************************/
  1725. tiINT32
  1726. CTI_WLAN_AdapterAPI::SetReportSeverity( tiUINT8 *pData )
  1727. {
  1728. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1729. tiUINT32 dwRetSize;
  1730. if ( pData && CheckObjectMemory(pData, WLAN_MAX_SEVERITIES) )
  1731. {
  1732. dwRetValue = tiIoCtrl(TIWLN_REPORT_SEVERITY_SET, pData, WLAN_MAX_SEVERITIES, NULL, 0, &dwRetSize);
  1733. }
  1734. return dwRetValue;
  1735. }
  1736. /********************************************************************/
  1737. tiINT32
  1738. CTI_WLAN_AdapterAPI::GetReportSeverity( tiUINT8* pData )
  1739. {
  1740. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1741. tiUINT32 dwRetSize;
  1742. if ( pData )
  1743. {
  1744. dwRetValue = tiIoCtrl(TIWLN_REPORT_SEVERITY_GET, NULL, 0, pData, WLAN_MAX_SEVERITIES, &dwRetSize);
  1745. }
  1746. return dwRetValue;
  1747. }
  1748. /********************************************************************/
  1749. tiINT32
  1750. CTI_WLAN_AdapterAPI::SetOsDbgState( tiUINT32 uData )
  1751. {
  1752. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1753. tiUINT32 dwRetSize;
  1754. dwRetValue = tiIoCtrl(TIWLN_OS_DBG_STATE_SET, &uData, sizeof(tiUINT32), NULL, 0, &dwRetSize);
  1755. return dwRetValue;
  1756. }
  1757. /********************************************************************/
  1758. tiINT32
  1759. CTI_WLAN_AdapterAPI::GetOsDbgState( tiUINT32* puData )
  1760. {
  1761. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1762. tiUINT32 dwRetSize;
  1763. if ( puData )
  1764. {
  1765. dwRetValue = tiIoCtrl(TIWLN_OS_DBG_STATE_GET, NULL, 0, puData, sizeof(tiUINT32), &dwRetSize);
  1766. }
  1767. return dwRetValue;
  1768. }
  1769. /********************************************************************/
  1770. tiINT32
  1771. CTI_WLAN_AdapterAPI::SetReportPPMode( tiUINT32 uData )
  1772. {
  1773. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1774. tiUINT32 dwRetSize;
  1775. dwRetValue = tiIoCtrl(TIWLN_REPORT_PPMODE_SET, &uData, sizeof(tiUINT32), NULL, 0, &dwRetSize);
  1776. return dwRetValue;
  1777. }
  1778. /********************************************************************/
  1779. tiINT32
  1780. CTI_WLAN_AdapterAPI::GetDebugBuffer( tiUINT8* pBuffer, tiUINT32 dwLenght)
  1781. {
  1782. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1783. tiUINT32 dwRetSize;
  1784. if ( pBuffer && CheckObjectMemory(pBuffer, sizeof(tiUINT8)*dwLenght) )
  1785. {
  1786. dwRetValue = tiIoCtrl(TIWLN_GET_DBG_BUFFER, NULL, 0, pBuffer, sizeof(tiUINT8)*dwLenght,&dwRetSize);
  1787. }
  1788. return dwRetValue;
  1789. }
  1790. #ifdef DRIVER_PROFILING
  1791. tiINT32
  1792. CTI_WLAN_AdapterAPI::ProfileReport()
  1793. {
  1794. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1795. tiUINT32 dwRetSize;
  1796. dwRetValue = tiIoCtrl(TIWLAN_PROFILING_REPORT,NULL, 0,NULL,0,&dwRetSize);
  1797. return dwRetValue;
  1798. }
  1799. tiINT32
  1800. CTI_WLAN_AdapterAPI::CpuEstimatorCommand(tiUINT8 uType, tiUINT32 uData)
  1801. {
  1802. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1803. tiUINT32 dwRetSize;
  1804. tiUINT32 dwCommandParam;
  1805. /* set command param: type | (24 LSB) data */
  1806. dwCommandParam = (uData & 0xFFFFFF) | (((tiUINT32)uType) << 24);
  1807. //printf("CpuEstimatorCommand: type=%d, data =%d, dwCommandParam = %x\n", uType, uData, dwCommandParam);
  1808. dwRetValue = tiIoCtrl(TIWLAN_PROFILING_CPU_ESTIMATOR_CMD,&dwCommandParam, sizeof(dwCommandParam),NULL, 0,&dwRetSize);
  1809. return dwRetValue;
  1810. }
  1811. #endif
  1812. #endif //TI_DBG
  1813. /********************************************************************/
  1814. tiINT32
  1815. CTI_WLAN_AdapterAPI::SetSupportedRates( tiUINT8* pSupportedRatesLst, tiUINT32 uBufLength)
  1816. {
  1817. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1818. tiUINT32 dwRetSize;
  1819. if ( pSupportedRatesLst && CheckObjectMemory(pSupportedRatesLst, uBufLength) )
  1820. {
  1821. dwRetValue = tiIoCtrl(TIWLN_802_11_SUPPORTED_RATES_SET, pSupportedRatesLst, uBufLength,NULL, 0,&dwRetSize);
  1822. }
  1823. return dwRetValue;
  1824. }
  1825. /********************************************************************/
  1826. tiINT32
  1827. CTI_WLAN_AdapterAPI::GetSupportedRates( tiUINT8* pSupportedRatesLst, tiUINT32 uBufLength)
  1828. {
  1829. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1830. tiUINT32 dwRetSize;
  1831. if ( pSupportedRatesLst && CheckObjectMemory(pSupportedRatesLst, uBufLength) )
  1832. {
  1833. dwRetValue = tiIoCtrl(TIWLN_802_11_SUPPORTED_RATES, NULL, 0, pSupportedRatesLst, uBufLength,&dwRetSize);
  1834. }
  1835. return dwRetValue;
  1836. }
  1837. /********************************************************************/
  1838. tiINT32
  1839. CTI_WLAN_AdapterAPI::SetConfiguration( OS_802_11_CONFIGURATION* pConfiguration )
  1840. {
  1841. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1842. tiUINT32 dwRetSize;
  1843. if ( pConfiguration && CheckObjectMemory(pConfiguration, sizeof(OS_802_11_CONFIGURATION)) )
  1844. {
  1845. dwRetValue = tiIoCtrl(TIWLN_802_11_CONFIGURATION_SET, pConfiguration, sizeof(OS_802_11_CONFIGURATION),NULL, 0,&dwRetSize);
  1846. }
  1847. return dwRetValue;
  1848. }
  1849. /********************************************************************/
  1850. tiINT32
  1851. CTI_WLAN_AdapterAPI::GetConfiguration( OS_802_11_CONFIGURATION* pConfiguration )
  1852. {
  1853. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1854. tiUINT32 dwRetSize;
  1855. if ( pConfiguration && CheckObjectMemory(pConfiguration, sizeof(OS_802_11_CONFIGURATION)) )
  1856. {
  1857. dwRetValue = tiIoCtrl(TIWLN_802_11_CONFIGURATION_GET, NULL, 0, pConfiguration, sizeof(OS_802_11_CONFIGURATION),&dwRetSize);
  1858. }
  1859. return dwRetValue;
  1860. }
  1861. /********************************************************************/
  1862. tiINT32
  1863. CTI_WLAN_AdapterAPI::SetAuthenticationMode( OS_802_11_AUTHENTICATION_MODE uAuthenticationMode )
  1864. {
  1865. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1866. tiUINT32 dwRetSize;
  1867. dwRetValue = tiIoCtrl(TIWLN_802_11_AUTHENTICATION_MODE_SET, &uAuthenticationMode, sizeof(OS_802_11_AUTHENTICATION_MODE),NULL, 0,&dwRetSize);
  1868. return dwRetValue;
  1869. }
  1870. /********************************************************************/
  1871. tiINT32
  1872. CTI_WLAN_AdapterAPI::GetAuthenticationMode( OS_802_11_AUTHENTICATION_MODE* puAuthenticationMode )
  1873. {
  1874. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1875. tiUINT32 dwRetSize;
  1876. if ( puAuthenticationMode )
  1877. {
  1878. dwRetValue = tiIoCtrl(TIWLN_802_11_AUTHENTICATION_MODE_GET, NULL, 0, puAuthenticationMode, sizeof(OS_802_11_AUTHENTICATION_MODE),&dwRetSize);
  1879. }
  1880. return dwRetValue;
  1881. }
  1882. /********************************************************************/
  1883. tiINT32
  1884. CTI_WLAN_AdapterAPI::SetPrivacyFilter( tiUINT32 dwPrivacyFilter )
  1885. {
  1886. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1887. tiUINT32 dwRetSize;
  1888. dwRetValue = tiIoCtrl(TIWLN_802_11_PRIVACY_FILTER_SET, &dwPrivacyFilter, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  1889. return dwRetValue;
  1890. }
  1891. /********************************************************************/
  1892. tiINT32
  1893. CTI_WLAN_AdapterAPI::GetPrivacyFilter( tiUINT32* pdwPrivacyFilter )
  1894. {
  1895. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1896. tiUINT32 dwRetSize;
  1897. if ( pdwPrivacyFilter )
  1898. {
  1899. dwRetValue = tiIoCtrl(TIWLN_802_11_PRIVACY_FILTER_GET, NULL, 0, pdwPrivacyFilter, sizeof(tiUINT32),&dwRetSize);
  1900. }
  1901. return dwRetValue;
  1902. }
  1903. /********************************************************************/
  1904. tiINT32
  1905. CTI_WLAN_AdapterAPI::SetKeyType( OS_802_11_KEY_TYPES uKeyType )
  1906. {
  1907. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1908. tiUINT32 dwRetSize;
  1909. dwRetValue = tiIoCtrl(TIWLN_802_11_KEY_TYPE_SET, &uKeyType, sizeof(OS_802_11_KEY_TYPES),NULL, 0,&dwRetSize);
  1910. return dwRetValue;
  1911. }
  1912. /********************************************************************/
  1913. tiINT32
  1914. CTI_WLAN_AdapterAPI::SetMixedMode( tiBOOL bStatus )
  1915. {
  1916. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1917. tiUINT32 dwRetSize;
  1918. dwRetValue = tiIoCtrl(TIWLN_802_11_MIXED_MODE_SET, &bStatus, sizeof(tiBOOL),NULL, 0,&dwRetSize);
  1919. return dwRetValue;
  1920. }
  1921. /********************************************************************/
  1922. tiINT32
  1923. CTI_WLAN_AdapterAPI::GetMixedMode( tiBOOL* pbStatus )
  1924. {
  1925. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1926. tiUINT32 dwRetSize;
  1927. if ( pbStatus )
  1928. {
  1929. dwRetValue = tiIoCtrl(TIWLN_802_11_MIXED_MODE_GET, NULL, 0, pbStatus, sizeof( tiBOOL ),&dwRetSize);
  1930. }
  1931. return dwRetValue;
  1932. }
  1933. /********************************************************************/
  1934. tiINT32
  1935. CTI_WLAN_AdapterAPI::EnableDisable_802_11d( tiUINT8 enableDisable_802_11d)
  1936. {
  1937. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1938. tiUINT32 dwRetSize;
  1939. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_ENABLE_DISABLE_802_11D, &enableDisable_802_11d, sizeof(tiUINT8), NULL, 0, &dwRetSize);
  1940. return dwRetValue;
  1941. }
  1942. /********************************************************************/
  1943. tiINT32
  1944. CTI_WLAN_AdapterAPI::Get_802_11d( tiUINT8 *enableDisable_802_11d)
  1945. {
  1946. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1947. tiUINT32 dwRetSize;
  1948. if ( enableDisable_802_11d )
  1949. {
  1950. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_GET_802_11D, NULL, 0, enableDisable_802_11d, sizeof(tiUINT8),&dwRetSize);
  1951. }
  1952. return dwRetValue;
  1953. }
  1954. /********************************************************************/
  1955. tiINT32
  1956. CTI_WLAN_AdapterAPI::EnableDisable_802_11h( tiUINT8 enableDisable_802_11h)
  1957. {
  1958. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1959. tiUINT32 dwRetSize;
  1960. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_ENABLE_DISABLE_802_11H, &enableDisable_802_11h, sizeof(tiUINT8), NULL, 0, &dwRetSize);
  1961. return dwRetValue;
  1962. }
  1963. /********************************************************************/
  1964. tiINT32
  1965. CTI_WLAN_AdapterAPI::Get_802_11h( tiUINT8 *enableDisable_802_11h)
  1966. {
  1967. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1968. tiUINT32 dwRetSize;
  1969. if ( enableDisable_802_11h )
  1970. {
  1971. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_GET_802_11H, NULL, 0, enableDisable_802_11h, sizeof(tiUINT8),&dwRetSize);
  1972. }
  1973. return dwRetValue;
  1974. }
  1975. /********************************************************************/
  1976. tiINT32
  1977. CTI_WLAN_AdapterAPI::Set_countryIeFor2_4_Ghz( country_t countryIe)
  1978. {
  1979. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1980. tiUINT32 dwRetSize;
  1981. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_SET_COUNTRY_2_4, &countryIe, sizeof(country_t), NULL, 0, &dwRetSize);
  1982. return dwRetValue;
  1983. }
  1984. /********************************************************************/
  1985. tiINT32
  1986. CTI_WLAN_AdapterAPI::Get_countryIeFor2_4_Ghz( tiUINT8 **countryString)
  1987. {
  1988. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  1989. tiUINT32 dwRetSize;
  1990. if ( countryString )
  1991. {
  1992. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_GET_COUNTRY_2_4, NULL, 0, countryString, COUNTRY_STRING_LEN,&dwRetSize);
  1993. }
  1994. return dwRetValue;
  1995. }
  1996. /********************************************************************/
  1997. tiINT32
  1998. CTI_WLAN_AdapterAPI::Set_countryIeFor5_Ghz( country_t countryIe)
  1999. {
  2000. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2001. tiUINT32 dwRetSize;
  2002. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_SET_COUNTRY_5, &countryIe, sizeof(country_t), NULL, 0, &dwRetSize);
  2003. return dwRetValue;
  2004. }
  2005. /********************************************************************/
  2006. tiINT32
  2007. CTI_WLAN_AdapterAPI::Get_countryIeFor5_Ghz( tiUINT8 **countryString)
  2008. {
  2009. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2010. tiUINT32 dwRetSize;
  2011. if ( countryString )
  2012. {
  2013. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_GET_COUNTRY_5, NULL, 0, countryString, COUNTRY_STRING_LEN,&dwRetSize);
  2014. }
  2015. return dwRetValue;
  2016. }
  2017. /********************************************************************/
  2018. tiINT32
  2019. CTI_WLAN_AdapterAPI::Set_minMaxDfsChannels( DFS_ChannelRange_t DFS_ChannelRange)
  2020. {
  2021. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2022. tiUINT32 dwRetSize;
  2023. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_SET_DFS_RANGE, &DFS_ChannelRange, sizeof(DFS_ChannelRange_t), NULL, 0, &dwRetSize);
  2024. return dwRetValue;
  2025. }
  2026. /********************************************************************/
  2027. tiINT32
  2028. CTI_WLAN_AdapterAPI::Get_minMaxDfsChannels( DFS_ChannelRange_t *DFS_ChannelRange)
  2029. {
  2030. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2031. tiUINT32 dwRetSize;
  2032. if ( DFS_ChannelRange )
  2033. {
  2034. dwRetValue = tiIoCtrl(TIWLN_REG_DOMAIN_GET_DFS_RANGE, NULL, 0, DFS_ChannelRange, sizeof(DFS_ChannelRange_t), &dwRetSize);
  2035. }
  2036. return dwRetValue;
  2037. }
  2038. /********************************************************************/
  2039. tiINT32
  2040. CTI_WLAN_AdapterAPI::SetIBSSProtection( tiUINT32 uProtection )
  2041. {
  2042. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2043. tiUINT32 dwRetSize;
  2044. dwRetValue = tiIoCtrl(TIWLN_IBSS_PROTECTION_SET, &uProtection, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  2045. return dwRetValue;
  2046. }
  2047. /********************************************************************/
  2048. tiINT32
  2049. CTI_WLAN_AdapterAPI::GetIBSSProtection ( tiUINT32* puProtection )
  2050. {
  2051. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2052. tiUINT32 dwRetSize;
  2053. if ( puProtection )
  2054. {
  2055. dwRetValue = tiIoCtrl(TIWLN_IBSS_PROTECTION_GET, NULL, 0, puProtection, sizeof(tiUINT32),&dwRetSize);
  2056. }
  2057. return dwRetValue;
  2058. }
  2059. /********************************************************************/
  2060. tiINT32
  2061. CTI_WLAN_AdapterAPI::SetShortSlot( tiUINT32 dwShortSlot )
  2062. {
  2063. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2064. tiUINT32 dwRetSize;
  2065. dwRetValue = tiIoCtrl(TIWLN_SHORT_SLOT_SET, &dwShortSlot, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  2066. return dwRetValue;
  2067. }
  2068. /********************************************************************/
  2069. tiINT32
  2070. CTI_WLAN_AdapterAPI::GetShortSlot( tiUINT32* pdwShortSlot)
  2071. {
  2072. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2073. tiUINT32 dwRetSize;
  2074. if ( pdwShortSlot )
  2075. {
  2076. dwRetValue = tiIoCtrl(TIWLN_SHORT_SLOT_GET, NULL, 0, pdwShortSlot, sizeof(tiUINT32),&dwRetSize);
  2077. }
  2078. return dwRetValue;
  2079. }
  2080. /********************************************************************/
  2081. tiINT32
  2082. CTI_WLAN_AdapterAPI::SetExtRatesIE( tiUINT32 dwExtRatesIE)
  2083. {
  2084. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2085. tiUINT32 dwRetSize;
  2086. dwRetValue = tiIoCtrl(TIWLN_EXT_RATES_IE_SET, &dwExtRatesIE, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  2087. return dwRetValue;
  2088. }
  2089. /********************************************************************/
  2090. tiINT32
  2091. CTI_WLAN_AdapterAPI::GetExtRatesIE( tiUINT32* pdwExtRatesIE)
  2092. {
  2093. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2094. tiUINT32 dwRetSize;
  2095. if ( pdwExtRatesIE )
  2096. {
  2097. dwRetValue = tiIoCtrl(TIWLN_EXT_RATES_IE_GET, NULL, 0, pdwExtRatesIE, sizeof(tiUINT32),&dwRetSize);
  2098. }
  2099. return dwRetValue;
  2100. }
  2101. /********************************************************************/
  2102. tiINT32
  2103. CTI_WLAN_AdapterAPI::SetEarlyWakeupMode( tiUINT8 dwEarlyWakeup)
  2104. {
  2105. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2106. tiUINT32 dwRetSize;
  2107. dwRetValue = tiIoCtrl(TIWLN_EARLY_WAKEUP_IE_SET, &dwEarlyWakeup, sizeof(tiUINT8),NULL, 0,&dwRetSize);
  2108. return dwRetValue;
  2109. }
  2110. /********************************************************************/
  2111. tiINT32
  2112. CTI_WLAN_AdapterAPI::GetEarlyWakeupMode( tiUINT8* pdwEarlyWakeup)
  2113. {
  2114. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2115. tiUINT32 dwRetSize;
  2116. if ( pdwEarlyWakeup )
  2117. {
  2118. dwRetValue = tiIoCtrl(TIWLN_EARLY_WAKEUP_IE_GET, NULL, 0, pdwEarlyWakeup, sizeof(tiUINT8),&dwRetSize);
  2119. }
  2120. return dwRetValue;
  2121. }
  2122. /********************************************************************/
  2123. tiINT32
  2124. CTI_WLAN_AdapterAPI::Open_EAPOL_Interface( )
  2125. {
  2126. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2127. tiUINT32 dwRetSize;
  2128. dwRetValue = tiIoCtrl(TIWLN_OPEN_EAPOL_INTERFACE, NULL, 0, NULL, 0,&dwRetSize);
  2129. return dwRetValue;
  2130. }
  2131. /********************************************************************/
  2132. tiINT32
  2133. CTI_WLAN_AdapterAPI::Close_EAPOL_Interface( )
  2134. {
  2135. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2136. tiUINT32 dwRetSize;
  2137. dwRetValue = tiIoCtrl(TIWLN_CLOSE_EAPOL_INTERFACE, NULL, 0, NULL, 0,&dwRetSize);
  2138. return dwRetValue;
  2139. }
  2140. /********************************************************************/
  2141. tiINT32
  2142. CTI_WLAN_AdapterAPI::Send_EAPOL_Packet( tiVOID* pData, tiUINT32 uSize )
  2143. {
  2144. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2145. tiUINT32 dwRetSize;
  2146. if ( pData && CheckObjectMemory(pData, uSize) )
  2147. {
  2148. dwRetValue = tiIoCtrl(TIWLN_SEND_EAPOL_PACKET, pData, uSize,NULL, 0,&dwRetSize);
  2149. }
  2150. return dwRetValue;
  2151. }
  2152. /********************************************************************/
  2153. tiINT32
  2154. CTI_WLAN_AdapterAPI::hwReadRegister( tiUINT32 dwRegisterAddr, tiUINT32* pdwValue )
  2155. {
  2156. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2157. tiUINT32 dwRetSize;
  2158. TIWLN_REG_RW sRegRead;
  2159. if (!pdwValue )
  2160. return TI_RESULT_FAILED;
  2161. sRegRead.regSize = 4;
  2162. sRegRead.regAddr = dwRegisterAddr;
  2163. sRegRead.regValue = 0;
  2164. dwRetValue = tiIoCtrl(TIWLN_HW_READ_REGISTER, &sRegRead, sizeof(TIWLN_REG_RW), &sRegRead, sizeof(TIWLN_REG_RW),&dwRetSize);
  2165. *pdwValue = sRegRead.regValue;
  2166. return dwRetValue;
  2167. }
  2168. /********************************************************************/
  2169. tiINT32
  2170. CTI_WLAN_AdapterAPI::hwWriteRegister( tiUINT32 dwRegisterAddr, tiUINT32 dwValue )
  2171. {
  2172. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2173. tiUINT32 dwRetSize;
  2174. TIWLN_REG_RW sRegRead;
  2175. sRegRead.regSize = 4;
  2176. sRegRead.regAddr = dwRegisterAddr;
  2177. sRegRead.regValue = dwValue;
  2178. dwRetValue = tiIoCtrl(TIWLN_HW_WRITE_REGISTER, &sRegRead, sizeof(TIWLN_REG_RW),NULL, 0,&dwRetSize);
  2179. return dwRetValue;
  2180. }
  2181. /********************************************************************/
  2182. tiINT32
  2183. CTI_WLAN_AdapterAPI::Disassociate( )
  2184. {
  2185. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2186. tiUINT32 dwRetSize;
  2187. dwRetValue = tiIoCtrl(TIWLN_802_11_DISASSOCIATE, NULL, 0,NULL, 0,&dwRetSize);
  2188. return dwRetValue;
  2189. }
  2190. /********************************************************************/
  2191. tiINT32
  2192. CTI_WLAN_AdapterAPI::ReloadDefaults( )
  2193. {
  2194. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2195. tiUINT32 dwRetSize;
  2196. dwRetValue = tiIoCtrl(TIWLN_802_11_RELOAD_DEFAULTS, NULL, 0,NULL, 0,&dwRetSize);
  2197. return dwRetValue;
  2198. }
  2199. /********************************************************************/
  2200. tiINT32
  2201. CTI_WLAN_AdapterAPI::IsDriverLoaded( )
  2202. {
  2203. tiUINT32 bRet = TI_RESULT_FAILED;
  2204. #ifndef _WINDOWS
  2205. TI_HANDLE hDevice = m_pIPCmod->IPC_DeviceOpen(m_pszAdapterName);
  2206. if (hDevice)
  2207. bRet = TI_RESULT_OK;
  2208. m_pIPCmod->IPC_DeviceClose();
  2209. #endif
  2210. return bRet;
  2211. }
  2212. /********************************************************************/
  2213. tiINT32
  2214. CTI_WLAN_AdapterAPI::GetRSSI( tiINT32* pRssi )
  2215. {
  2216. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2217. tiUINT32 dwRetSize;
  2218. if (CheckObjectMemory(pRssi, sizeof(tiUINT32)))
  2219. {
  2220. dwRetValue = tiIoCtrl(TIWLN_802_11_RSSI,NULL,0,pRssi, sizeof(tiUINT32),&dwRetSize);
  2221. }
  2222. return dwRetValue;
  2223. }
  2224. /********************************************************************/
  2225. tiINT32
  2226. CTI_WLAN_AdapterAPI::GetSNR( tiUINT32* pSnr )
  2227. {
  2228. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2229. tiUINT32 dwRetSize;
  2230. if (CheckObjectMemory(pSnr, sizeof(tiUINT32)))
  2231. {
  2232. dwRetValue = tiIoCtrl(TIWLN_802_11_SNR,NULL,0,pSnr, sizeof(tiUINT32),&dwRetSize);
  2233. }
  2234. return dwRetValue;
  2235. }
  2236. /********************************************************************/
  2237. tiINT32
  2238. CTI_WLAN_AdapterAPI::GetNumberOfAntennas(tiUINT32* puNumberOfAntennas)
  2239. {
  2240. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2241. tiUINT32 dwRetSize;
  2242. if ( puNumberOfAntennas )
  2243. {
  2244. dwRetValue = tiIoCtrl(TIWLN_802_11_NUMBER_OF_ANTENNAS, NULL, 0, puNumberOfAntennas, sizeof(tiUINT32),&dwRetSize);
  2245. }
  2246. return dwRetValue;
  2247. }
  2248. /********************************************************************/
  2249. tiINT32
  2250. CTI_WLAN_AdapterAPI::GetDriverVersion( TIWLN_VERSION_EX* pdrvVersion )
  2251. {
  2252. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2253. tiUINT32 dwRetSize;
  2254. if ( pdrvVersion && CheckObjectMemory(pdrvVersion, sizeof(TIWLN_VERSION_EX)) )
  2255. {
  2256. dwRetValue = tiIoCtrl(TIWLN_GET_SW_VERSION, NULL, 0, pdrvVersion, sizeof(TIWLN_VERSION_EX),&dwRetSize);
  2257. }
  2258. return dwRetValue;
  2259. }
  2260. /********************************************************************/
  2261. tiINT32
  2262. CTI_WLAN_AdapterAPI::GetRegDomainTable( TIWLN_REGDOMAINS* pRegDomainTable )
  2263. {
  2264. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2265. tiUINT32 dwRetSize;
  2266. if ( pRegDomainTable && CheckObjectMemory(pRegDomainTable, sizeof(TIWLN_REGDOMAINS)) )
  2267. {
  2268. dwRetValue = tiIoCtrl(TIWLN_REGDOMAIN_TABLE, NULL, 0, pRegDomainTable, sizeof(TIWLN_REGDOMAINS),&dwRetSize);
  2269. }
  2270. return dwRetValue;
  2271. }
  2272. /********************************************************************/
  2273. tiINT32
  2274. CTI_WLAN_AdapterAPI::GetMediumUsage( TIWLN_MEDIUM_USAGE* pMediumUsage )
  2275. {
  2276. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2277. tiUINT32 dwRetSize;
  2278. if ( pMediumUsage && CheckObjectMemory(pMediumUsage, sizeof(TIWLN_MEDIUM_USAGE)) )
  2279. {
  2280. dwRetValue = tiIoCtrl(TIWLN_MEDIUMUSAGE, NULL, 0, pMediumUsage, sizeof(TIWLN_MEDIUM_USAGE),&dwRetSize);
  2281. }
  2282. return dwRetValue;
  2283. }
  2284. /********************************************************************/
  2285. tiINT32
  2286. CTI_WLAN_AdapterAPI::GetApiVersion( tiUINT32* pdwApiVersion )
  2287. {
  2288. *pdwApiVersion = TI_WLAN_API_VER;
  2289. return TI_RESULT_OK;
  2290. }
  2291. /********************************************************************/
  2292. tiINT32
  2293. CTI_WLAN_AdapterAPI::GetDriverState( driverState_e* puDriverState )
  2294. {
  2295. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2296. tiUINT32 dwRetSize;
  2297. *puDriverState = (driverState_e)0;
  2298. dwRetValue = tiIoCtrl(TIWLN_802_11_GET_DRIVER_STATE, NULL, 0, puDriverState, sizeof(tiUINT32),&dwRetSize);
  2299. switch (((driverState_e)*puDriverState) & 0xff)
  2300. {
  2301. case SM_STATE_IDLE:
  2302. *puDriverState = DRIVER_STATE_IDLE;
  2303. break;
  2304. case SM_STATE_SCANNING:
  2305. *puDriverState = DRIVER_STATE_SCANNING;
  2306. break;
  2307. case SM_STATE_SELECTING:
  2308. *puDriverState = DRIVER_STATE_SELECTING;
  2309. break;
  2310. case SM_STATE_CONNECTING:
  2311. *puDriverState = DRIVER_STATE_CONNECTING;
  2312. break;
  2313. case SM_STATE_CONNECTED:
  2314. case SM_STATE_QUIET_SCAN:
  2315. case SM_STATE_ROAMING_QUIET_SCAN:
  2316. case SM_STATE_MEASUREMENT:
  2317. case SM_STATE_POWER_MNGR_PENDS_QUIET_SCAN:
  2318. *puDriverState = DRIVER_STATE_CONNECTED;
  2319. break;
  2320. case SM_STATE_INTER_SCAN_TIMEOUT:
  2321. *puDriverState = DRIVER_STATE_DISCONNECTED;
  2322. break;
  2323. case SM_STATE_RADIO_STAND_BY:
  2324. *puDriverState = DRIVER_STATE_IDLE;
  2325. break;
  2326. default:
  2327. break;
  2328. }
  2329. return dwRetValue;
  2330. }
  2331. /********************************************************************/
  2332. tiINT32
  2333. CTI_WLAN_AdapterAPI::Start( )
  2334. {
  2335. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2336. tiUINT32 dwRetSize;
  2337. tiUINT32 Data = 1;
  2338. dwRetValue = tiIoCtrl(TIWLN_DRIVER_STATUS_SET, &Data, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  2339. return dwRetValue;
  2340. }
  2341. /********************************************************************/
  2342. tiINT32
  2343. CTI_WLAN_AdapterAPI::Stop( )
  2344. {
  2345. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2346. tiUINT32 dwRetSize;
  2347. tiUINT32 Data = 0;
  2348. dwRetValue = tiIoCtrl(TIWLN_DRIVER_STATUS_SET, &Data, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  2349. return dwRetValue;
  2350. }
  2351. /********************************************************************/
  2352. tiINT32
  2353. CTI_WLAN_AdapterAPI::Suspend( )
  2354. {
  2355. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2356. tiUINT32 dwRetSize;
  2357. tiUINT32 Data = 0;
  2358. dwRetValue = tiIoCtrl(TIWLN_DRIVER_SUSPEND, &Data, sizeof(tiUINT32),NULL, 0,&dwRetSize);
  2359. return dwRetValue;
  2360. }
  2361. /********************************************************************/
  2362. tiINT32
  2363. CTI_WLAN_AdapterAPI::IsDriverRun( tiUINT32* pbStatus )
  2364. {
  2365. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2366. tiUINT32 dwRetSize;
  2367. if ( pbStatus && CheckObjectMemory(pbStatus, sizeof(tiUINT32)) )
  2368. {
  2369. dwRetValue = tiIoCtrl(TIWLN_DRIVER_STATUS_GET, NULL, 0, pbStatus, sizeof(tiUINT32),&dwRetSize);
  2370. }
  2371. return dwRetValue;
  2372. }
  2373. #define GWSI_DISPACH_OPCODE(_p_gwsi_buffer) ((*((tiUINT8 *)_p_gwsi_buffer + 0) | (*((tiUINT8 *)_p_gwsi_buffer + 1) << 8)))
  2374. #define GWSI_DISPACH_CALC_BUFFER_SHORT_LEN(_p_gwsi_buffer) ((*((tiUINT8 *)_p_gwsi_buffer + 2) | (*((tiUINT8 *)_p_gwsi_buffer + 3) << 8)) + 4)
  2375. #define GWSI_DISPACH_CALC_BUFFER_LONG_LEN(_p_gwsi_buffer) (*((tiUINT8 *)_p_gwsi_buffer + 2) | (*((tiUINT8 *)_p_gwsi_buffer + 3) << 8) | (*((tiUINT8 *)_p_gwsi_buffer + 4) << 16) | (*((tiUINT8 *)_p_gwsi_buffer + 5) << 24) + 4)
  2376. /********************************************************************/
  2377. tiINT32
  2378. CTI_WLAN_AdapterAPI::GWSICommand( tiUINT32* pGWSICommand )
  2379. {
  2380. tiUINT32 bRet = TI_RESULT_FAILED;
  2381. tiUINT32 dwRetSize;
  2382. dwRetSize = tiIoCtrl(GWSI_DISPATCH_COMMAND, pGWSICommand, GWSI_DISPACH_CALC_BUFFER_SHORT_LEN(pGWSICommand));
  2383. if ( dwRetSize )
  2384. bRet = TI_RESULT_OK;
  2385. return bRet;
  2386. }
  2387. /********************************************************************/
  2388. tiINT32
  2389. CTI_WLAN_AdapterAPI::GWSIInitialize( tiUINT32* pGWSICommand )
  2390. {
  2391. tiUINT32 bRet = TI_RESULT_FAILED;
  2392. tiUINT32 dwRetSize;
  2393. /* This command requires size of 4 bytes */
  2394. dwRetSize = tiIoCtrl(GWSI_INITIALIZE_COMMAND, pGWSICommand, GWSI_DISPACH_CALC_BUFFER_LONG_LEN(pGWSICommand));
  2395. if ( dwRetSize )
  2396. bRet = TI_RESULT_OK;
  2397. return bRet;
  2398. }
  2399. /********************************************************************/
  2400. tiINT32
  2401. CTI_WLAN_AdapterAPI::GWSIConfig( tiUINT32* pGWSICommand )
  2402. {
  2403. tiUINT32 bRet = TI_RESULT_FAILED;
  2404. tiUINT32 dwRetSize;
  2405. dwRetSize = tiIoCtrl(GWSI_CONFIGURE_TABLE_COMMAND, pGWSICommand, GWSI_DISPACH_CALC_BUFFER_SHORT_LEN(pGWSICommand));
  2406. if ( dwRetSize )
  2407. bRet = TI_RESULT_OK;
  2408. return bRet;
  2409. }
  2410. /********************************************************************/
  2411. tiINT32
  2412. CTI_WLAN_AdapterAPI::GWSIRelease( tiUINT32* pGWSICommand )
  2413. {
  2414. tiUINT32 bRet = TI_RESULT_FAILED;
  2415. tiUINT32 dwRetSize;
  2416. dwRetSize = tiIoCtrl(GWSI_RELEASE_COMMAND, pGWSICommand, GWSI_DISPACH_CALC_BUFFER_SHORT_LEN(pGWSICommand));
  2417. if ( dwRetSize )
  2418. bRet = TI_RESULT_OK;
  2419. return bRet;
  2420. }
  2421. /********************************************************************/
  2422. tiINT32
  2423. CTI_WLAN_AdapterAPI::GWSIGetInitTable (tiUINT32* pGWSICommand )
  2424. {
  2425. tiUINT32 bRet = TI_RESULT_FAILED;
  2426. tiUINT32 dwRetSize;
  2427. dwRetSize = tiIoCtrl(GWSI_GET_INIT_TABLE_COMMAND, NULL, 0, pGWSICommand, (1024 * 5));
  2428. if ( dwRetSize )
  2429. bRet = TI_RESULT_OK;
  2430. return bRet;
  2431. }
  2432. #ifndef _WINDOWS
  2433. /********************************************************************/
  2434. tiINT32
  2435. TI_IPC::IPC_DeviceIoControl(tiUINT32 dwIoControlCode, tiVOID* lpInBuffer,
  2436. tiUINT32 nInBufferSize, tiVOID* lpOutBuffer,
  2437. tiUINT32 nOutBufferSize, tiUINT32* lpBytesReturned)
  2438. {
  2439. if (!m_hDevice)
  2440. return TI_RESULT_INVALIDE_HANDLE;
  2441. return ::IPC_DeviceIoControl(m_hDevice, dwIoControlCode, lpInBuffer,
  2442. nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned);
  2443. }
  2444. TI_IPC::TI_IPC()
  2445. {
  2446. m_hDevice = NULL;
  2447. IPC_Init();
  2448. }
  2449. TI_IPC::~TI_IPC()
  2450. {
  2451. IPC_DeInit();
  2452. }
  2453. TI_HANDLE
  2454. TI_IPC::IPC_DeviceOpen (tiCHAR* pAdapterName)
  2455. {
  2456. m_hDevice = ::IPC_DeviceOpen(pAdapterName);
  2457. return m_hDevice;
  2458. }
  2459. tiVOID
  2460. TI_IPC::IPC_DeviceClose()
  2461. {
  2462. ::IPC_DeviceClose(m_hDevice);
  2463. m_hDevice = NULL;
  2464. }
  2465. tiINT32
  2466. TI_IPC::IPC_RegisterEvent( IPC_EVENT_PARAMS* pEventParams )
  2467. {
  2468. return ::IPC_RegisterEvent(m_hDevice, pEventParams);
  2469. }
  2470. tiINT32
  2471. TI_IPC::IPC_UnRegisterEvent( IPC_EVENT_PARAMS* pEventParams )
  2472. {
  2473. return ::IPC_UnRegisterEvent(m_hDevice, pEventParams);
  2474. }
  2475. #endif
  2476. /********************************************************************/
  2477. tiINT32
  2478. CTI_WLAN_AdapterAPI::Set_RoamingConfParams( UINT8* buffer, UINT16 bufferLength)
  2479. {
  2480. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2481. tiUINT32 dwRetSize;
  2482. dwRetValue = tiIoCtrl(TIWLN_802_11_ROAMING_CONFIG_PARAMS_SET, buffer, bufferLength,NULL,0,&dwRetSize);
  2483. return dwRetValue;
  2484. }
  2485. /********************************************************************/
  2486. tiINT32
  2487. CTI_WLAN_AdapterAPI::Get_RoamingConfParams( UINT8* buffer, UINT16 bufferLength)
  2488. {
  2489. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2490. tiUINT32 dwRetSize;
  2491. if (CheckObjectMemory(buffer, bufferLength))
  2492. {
  2493. dwRetValue = tiIoCtrl(TIWLN_802_11_ROAMING_CONFIG_PARAMS_GET, NULL, 0, buffer, bufferLength, &dwRetSize);
  2494. }
  2495. return dwRetValue;
  2496. }
  2497. /********************************************************************/
  2498. /**************************** PLT ********************************/
  2499. /********************************************************************/
  2500. tiINT32
  2501. CTI_WLAN_AdapterAPI::PLT_ReadRegister( UINT32 uRegisterAddr, PUINT32 puRegisterData )
  2502. {
  2503. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2504. tiUINT32 dwRetSize;
  2505. if (CheckObjectMemory(puRegisterData, sizeof(UINT32)))
  2506. {
  2507. dwRetValue = tiIoCtrl(TIWLN_PLT_READ_REGISTER, &uRegisterAddr, sizeof(UINT32), puRegisterData, sizeof(UINT32), &dwRetSize);
  2508. }
  2509. return dwRetValue;
  2510. }
  2511. /********************************************************************/
  2512. tiINT32
  2513. CTI_WLAN_AdapterAPI::PLT_WriteRegister( UINT32 uRegisterAddr, UINT32 uRegisterData )
  2514. {
  2515. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2516. tiUINT32 dwRetSize;
  2517. TIWLN_REG_RW sRegWrite;
  2518. sRegWrite.regSize = 4;
  2519. sRegWrite.regAddr = uRegisterAddr;
  2520. sRegWrite.regValue = uRegisterData;
  2521. dwRetValue = tiIoCtrl(TIWLN_PLT_WRITE_REGISTER, &sRegWrite, sizeof(TIWLN_REG_RW),NULL, 0,&dwRetSize);
  2522. return dwRetValue;
  2523. }
  2524. /********************************************************************/
  2525. tiINT32
  2526. CTI_WLAN_AdapterAPI::PLT_RxPerStart()
  2527. {
  2528. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2529. tiUINT32 dwRetSize;
  2530. dwRetValue = tiIoCtrl(TIWLN_PLT_RX_PER_START, NULL, 0, NULL, 0, &dwRetSize);
  2531. return dwRetValue;
  2532. }
  2533. /********************************************************************/
  2534. tiINT32
  2535. CTI_WLAN_AdapterAPI::PLT_RxPerStop()
  2536. {
  2537. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2538. tiUINT32 dwRetSize;
  2539. dwRetValue = tiIoCtrl(TIWLN_PLT_RX_PER_STOP, NULL, 0, NULL, 0, &dwRetSize);
  2540. return dwRetValue;
  2541. }
  2542. /********************************************************************/
  2543. tiINT32
  2544. CTI_WLAN_AdapterAPI::PLT_RxPerClear()
  2545. {
  2546. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2547. tiUINT32 dwRetSize;
  2548. dwRetValue = tiIoCtrl(TIWLN_PLT_RX_PER_CLEAR, NULL, 0, NULL, 0, &dwRetSize);
  2549. return dwRetValue;
  2550. }
  2551. /********************************************************************/
  2552. tiINT32
  2553. CTI_WLAN_AdapterAPI::PLT_RxPerGetResults( PltRxPer_t* pPltRxPer )
  2554. {
  2555. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2556. tiUINT32 dwRetSize;
  2557. if (CheckObjectMemory(pPltRxPer, sizeof(PltRxPer_t)))
  2558. {
  2559. dwRetValue = tiIoCtrl(TIWLN_PLT_RX_PER_GET_RESULTS, NULL, 0, pPltRxPer, sizeof(PltRxPer_t), &dwRetSize);
  2560. }
  2561. return dwRetValue;
  2562. }
  2563. /********************************************************************/
  2564. tiINT32
  2565. CTI_WLAN_AdapterAPI::PLT_TxCW(TestCmdChannelBand_t* pPltTxCW)
  2566. {
  2567. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2568. tiUINT32 dwRetSize;
  2569. dwRetValue = tiIoCtrl(TIWLN_PLT_TX_CW, pPltTxCW, sizeof(*pPltTxCW), NULL, 0, &dwRetSize);
  2570. return dwRetValue;
  2571. }
  2572. /********************************************************************/
  2573. tiINT32
  2574. CTI_WLAN_AdapterAPI::PLT_TxContiues(PltTxContinues_t* pPltTxContinues)
  2575. {
  2576. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2577. tiUINT32 dwRetSize;
  2578. dwRetValue = tiIoCtrl(TIWLN_PLT_TX_CONTINUES, pPltTxContinues, sizeof(PltTxContinues_t), NULL, 0, &dwRetSize);
  2579. return dwRetValue;
  2580. }
  2581. /********************************************************************/
  2582. tiINT32
  2583. CTI_WLAN_AdapterAPI::PLT_TxStop()
  2584. {
  2585. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2586. tiUINT32 dwRetSize;
  2587. dwRetValue = tiIoCtrl(TIWLN_PLT_TX_STOP, NULL, 0, NULL, 0, &dwRetSize);
  2588. return dwRetValue;
  2589. }
  2590. /********************************************************************/
  2591. tiINT32
  2592. CTI_WLAN_AdapterAPI::PLT_ReadMIB ( PLT_MIB_t* pMib )
  2593. {
  2594. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2595. tiUINT32 dwRetSize;
  2596. if (CheckObjectMemory(pMib, sizeof(PLT_MIB_t)))
  2597. {
  2598. dwRetValue = tiIoCtrl(TIWLN_PLT_MIB_READ,
  2599. (tiVOID*)pMib,(tiUINT32)sizeof(PLT_MIB_t),
  2600. (tiVOID*)pMib,(tiUINT32)sizeof(PLT_MIB_t),
  2601. &dwRetSize);
  2602. }
  2603. return dwRetValue;
  2604. }
  2605. /********************************************************************/
  2606. tiINT32
  2607. CTI_WLAN_AdapterAPI::PLT_WriteMIB( PLT_MIB_t* pMib )
  2608. {
  2609. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2610. tiUINT32 dwRetSize;
  2611. dwRetValue = tiIoCtrl(TIWLN_PLT_MIB_WRITE,
  2612. pMib, sizeof(PLT_MIB_t),
  2613. NULL, 0,
  2614. &dwRetSize);
  2615. return dwRetValue;
  2616. }
  2617. /********************************************************************/
  2618. tiINT32
  2619. CTI_WLAN_AdapterAPI::GetDefaultWepKey( tiUINT32* puKeyIndex )
  2620. {
  2621. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2622. tiUINT32 dwRetSize;
  2623. UINT32 InfoCode = VAL_DEFAULT_KEY_ID;
  2624. dwRetValue = tiIoCtrl(TIWLN_IOCTL_OID_QUERY_INFORMATION, &InfoCode, (tiUINT32)sizeof(InfoCode), puKeyIndex, sizeof(tiUINT32), &dwRetSize);
  2625. return dwRetValue;
  2626. }
  2627. /********************************************************************/
  2628. tiINT32
  2629. CTI_WLAN_AdapterAPI::PLT_TxCalGainGet(PltGainGet_t* pPLTGainGet)
  2630. {
  2631. return PLT_RxTXCal((void*)pPLTGainGet, sizeof(PltGainGet_t), TEST_CMD_PLT_GAIN_GET);
  2632. }
  2633. /********************************************************************/
  2634. tiINT32
  2635. CTI_WLAN_AdapterAPI::PLT_TxCalGainAdjust(tiINT32 uTxGainChange)
  2636. {
  2637. return PLT_RxTXCal(&uTxGainChange, sizeof(tiINT32), TEST_CMD_PLT_GAIN_ADJUST);
  2638. }
  2639. /********************************************************************/
  2640. tiINT32
  2641. CTI_WLAN_AdapterAPI::PLT_TxCalStart(PltTxCalibrationRequest_t* pPLTTxCal)
  2642. {
  2643. return PLT_RxTXCal((void*)pPLTTxCal, sizeof(PltTxCalibrationRequest_t), TEST_CMD_PLT_TXPOWER_CAL_START);
  2644. }
  2645. /********************************************************************/
  2646. tiINT32
  2647. CTI_WLAN_AdapterAPI::PLT_TxCalStop()
  2648. {
  2649. return PLT_RxTXCal(NULL, 0, TEST_CMD_PLT_TXPOWER_CAL_STOP);
  2650. }
  2651. /********************************************************************/
  2652. tiINT32
  2653. CTI_WLAN_AdapterAPI::PLT_RxTxCalNVSUpdateBuffer(PltNvsResultsBuffer_t* pPLT_NVSUpdateBuffer)
  2654. {
  2655. return PLT_RxTXCal(pPLT_NVSUpdateBuffer, sizeof(PltNvsResultsBuffer_t), TEST_CMD_PLT_GET_NVS_UPDATE_BUFFER);
  2656. }
  2657. /********************************************************************/
  2658. tiINT32
  2659. CTI_WLAN_AdapterAPI::PLT_RxCal(PltRxCalibrationRequest_t* pPltRxCalibration)
  2660. {
  2661. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2662. tiUINT32 dwRetSize;
  2663. TestCmd_t TestCmd;
  2664. if ( CheckObjectMemory(pPltRxCalibration, sizeof(PltRxCalibrationRequest_t)) )
  2665. {
  2666. memset(&TestCmd, 0, sizeof(TestCmd));
  2667. memcpy(&TestCmd.testCmd_u, pPltRxCalibration, sizeof(PltRxCalibrationRequest_t));
  2668. TestCmd.testCmdId = TEST_CMD_PLT_RX_CALIBRATION;
  2669. dwRetValue = tiIoCtrl(TIWLN_PLT_RX_CAL,
  2670. (tiVOID*) &TestCmd, sizeof(TestCmd),
  2671. (tiVOID*) &TestCmd, sizeof(TestCmd),
  2672. &dwRetSize);
  2673. }
  2674. /*
  2675. * for RX calibration, we query the status on a polling loop until it is complete.
  2676. * This is done to avoid a WinMobile bug, where returning pending will make Win re-send
  2677. * the OID after a while
  2678. * This is a patch, and a unified a-synchronous method must be implemented
  2679. * for all IOCTLs
  2680. */
  2681. if (TI_RESULT_OK == dwRetValue)
  2682. {
  2683. TI_STATUS TIStatus = PENDING;
  2684. while ( PENDING == TIStatus )
  2685. {
  2686. dwRetValue = PLT_RxCalStatus( &TIStatus );
  2687. m_pOSLib->TISleep(100);
  2688. }
  2689. }
  2690. return dwRetValue;
  2691. }
  2692. /********************************************************************/
  2693. tiINT32
  2694. CTI_WLAN_AdapterAPI::PLT_RadioTune(TestCmdChannelBand_t* pChannelBand)
  2695. {
  2696. return PLT_RxTXCal(pChannelBand, sizeof(TestCmdChannelBand_t), TEST_CMD_RADIO_TUNE);
  2697. }
  2698. /********************************************************************/
  2699. tiINT32
  2700. CTI_WLAN_AdapterAPI::PLT_RxTXCal(void* pTestCmdData, tiUINT32 Length, TestCmdID_e TestCmdID)
  2701. {
  2702. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2703. tiUINT32 dwRetSize;
  2704. TestCmd_t TestCmd;
  2705. if ((Length==0) ||
  2706. (CheckObjectMemory(pTestCmdData, Length)))
  2707. {
  2708. memset(&TestCmd, 0, sizeof(TestCmd));
  2709. memcpy(&TestCmd.testCmd_u, pTestCmdData, Length);
  2710. TestCmd.testCmdId = TestCmdID;
  2711. dwRetValue = tiIoCtrl(TIWLN_PLT_RX_TX_CAL,
  2712. (tiVOID*) &TestCmd, sizeof(TestCmd),
  2713. (tiVOID*) &TestCmd, sizeof(TestCmd),
  2714. &dwRetSize);
  2715. }
  2716. if (TI_RESULT_OK == dwRetValue)
  2717. {
  2718. memcpy(pTestCmdData, &TestCmd.testCmd_u, Length);
  2719. }
  2720. return dwRetValue;
  2721. }
  2722. /********************************************************************/
  2723. tiINT32
  2724. CTI_WLAN_AdapterAPI::PLT_RxCalStatus(TI_STATUS* pStatus)
  2725. {
  2726. tiUINT32 dwRetValue = TI_RESULT_FAILED;
  2727. tiUINT32 dwRetSize;
  2728. dwRetValue = tiIoCtrl(TIWLN_PLT_RX_CAL_RESULT,
  2729. NULL, 0, (tiVOID*)pStatus, sizeof(*pStatus), &dwRetSize);
  2730. return dwRetValue;
  2731. }
  2732. /********************************************************************/
  2733. #ifdef _WINDOWS
  2734. #endif