PageRenderTime 58ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

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

http://github.com/CyanogenMod/cm-kernel
C++ | 2097 lines | 1564 code | 369 blank | 164 comment | 136 complexity | 5a0dad3c6593b6b31ad99f8c9cc9d61f MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0, LGPL-2.0

Large files files are truncated, but you can click here to view the full file

  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. /*********************…

Large files files are truncated, but you can click here to view the full file