|
1 /* |
|
2 * CmdBldCmdIE.c |
|
3 * |
|
4 * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. |
|
5 * All rights reserved. |
|
6 * |
|
7 * This program and the accompanying materials are made available under the |
|
8 * terms of the Eclipse Public License v1.0 or BSD License which accompanies |
|
9 * this distribution. The Eclipse Public License is available at |
|
10 * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below. |
|
11 * |
|
12 * Redistribution and use in source and binary forms, with or without |
|
13 * modification, are permitted provided that the following conditions |
|
14 * are met: |
|
15 * |
|
16 * * Redistributions of source code must retain the above copyright |
|
17 * notice, this list of conditions and the following disclaimer. |
|
18 * * Redistributions in binary form must reproduce the above copyright |
|
19 * notice, this list of conditions and the following disclaimer in |
|
20 * the documentation and/or other materials provided with the |
|
21 * distribution. |
|
22 * * Neither the name Texas Instruments nor the names of its |
|
23 * contributors may be used to endorse or promote products derived |
|
24 * from this software without specific prior written permission. |
|
25 * |
|
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
27 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
28 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
29 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
30 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
31 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
32 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
33 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
34 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
35 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
36 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
37 */ |
|
38 |
|
39 |
|
40 /** \file CmdBldCmdIE.c |
|
41 * \brief Command builder. Command information elements |
|
42 * |
|
43 * \see CmdBldCmdIE.h |
|
44 */ |
|
45 #define __FILE_ID__ FILE_ID_94 |
|
46 #include "osApi.h" |
|
47 #include "tidef.h" |
|
48 #include "report.h" |
|
49 #include "TWDriver.h" |
|
50 #include "CmdQueue_api.h" |
|
51 #include "CmdBld.h" |
|
52 |
|
53 |
|
54 /* Local Macros */ |
|
55 |
|
56 #define MAC_TO_VENDOR_PREAMBLE(mac) ((mac[0] << 16) | (mac[1] << 8) | mac[2]) |
|
57 |
|
58 /******************************************* |
|
59 * Wlan hardware Test (BIT) |
|
60 * ================= |
|
61 * |
|
62 * Tests description: |
|
63 * ================== |
|
64 * FCC = Continuous modulated transmission (should not emit carrier) |
|
65 * TELEC = Continuous unmodulated carrier transmission (carrier only) |
|
66 * PER_TX_STOP = Stops the TX test in progress (FCC or TELEC). |
|
67 * ReadRegister = Read a register value. |
|
68 * WriteRegister = Sets a register value. |
|
69 * |
|
70 * Rx PER test |
|
71 * ======== |
|
72 * PerRxStart = Start or resume the PER measurement. This function will put the device in promiscuous mode, and resume counters update. |
|
73 * PerRxStop = Stop Rx PER measurements. This function stop counters update and make it is safe to read the PER test result. |
|
74 * PerRxGetResults = Get the last Rx PER test results. |
|
75 * PerRxClear = Clear the Rx PER test results. |
|
76 */ |
|
77 |
|
78 enum |
|
79 { |
|
80 /* 0 */ TEST_MOD_QPSK, |
|
81 /* 1 */ TEST_MOD_CCK, |
|
82 /* 2 */ TEST_MOD_PBCC, |
|
83 TEST_MOD_NUMOF |
|
84 }; |
|
85 |
|
86 enum |
|
87 { |
|
88 /* 0 */ TEST_MOD_LONG_PREAMBLE, |
|
89 /* 1 */ TEST_MOD_SHORT_PREAMBLE |
|
90 }; |
|
91 |
|
92 enum |
|
93 { |
|
94 /* 0 */ TEST_BAND_2_4GHZ, |
|
95 /* 1 */ TEST_BAND_5GHZ, |
|
96 /* 2 */ TEST_BAND_4_9GHZ |
|
97 }; |
|
98 |
|
99 |
|
100 enum |
|
101 { |
|
102 MOD_PBCC = 1, |
|
103 MOD_CCK, |
|
104 MOD_OFDM |
|
105 }; |
|
106 |
|
107 |
|
108 #define TEST_MOD_MIN_GAP 200 |
|
109 #define TEST_MOD_MIN_TX_BODYLEN 0 |
|
110 #define TEST_MOD_MAX_TX_BODYLEN 2304 |
|
111 |
|
112 #define TEST_RX_CAL_SAFE_TIME 5000 /*uSec*/ |
|
113 |
|
114 #define TEST_MOD_IS_GAP_OK(gap) ((gap) >= TEST_MOD_MIN_GAP) |
|
115 |
|
116 #define TEST_MOD_IS_TX_BODYLEN_OK(len) \ |
|
117 (INRANGE((len), TEST_MOD_MIN_TX_BODYLEN, TEST_MOD_MAX_TX_BODYLEN) && \ |
|
118 (((len) & 3) == 0) ) |
|
119 |
|
120 #define TEST_MOD_IS_PREAMBLE_OK(p) \ |
|
121 INRANGE((p), TEST_MOD_LONG_PREAMBLE, TEST_MOD_SHORT_PREAMBLE) |
|
122 |
|
123 |
|
124 #define RESEARVED_SIZE_FOR_RESPONSE 4 |
|
125 |
|
126 |
|
127 /**************************************************************************** |
|
128 * cmdBld_CmdIeStartBss() |
|
129 **************************************************************************** |
|
130 * DESCRIPTION: Construct the StartBss command fileds and send it to the mailbox |
|
131 * |
|
132 * INPUTS: None |
|
133 * |
|
134 * OUTPUT: None |
|
135 * |
|
136 * RETURNS: TI_OK or TI_NOK |
|
137 ****************************************************************************/ |
|
138 TI_STATUS cmdBld_CmdIeStartBss (TI_HANDLE hCmdBld, BSS_e BssType, void *fJoinCompleteCb, TI_HANDLE hCb) |
|
139 { |
|
140 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
141 StartJoinRequest_t AcxCmd_StartBss; |
|
142 StartJoinRequest_t *pCmd = &AcxCmd_StartBss; |
|
143 TSsid *pSsid = &DB_BSS(hCmdBld).tSsid; |
|
144 TBssInfoParams *pBssInfoParams = &DB_BSS(hCmdBld); |
|
145 TI_UINT8 *BssId; |
|
146 TI_UINT8 *cmdBssId; |
|
147 EHwRateBitFiled HwBasicRatesBitmap; |
|
148 TI_UINT32 i; |
|
149 |
|
150 os_memoryZero (pCmdBld->hOs, (void *)pCmd, sizeof(StartJoinRequest_t)); |
|
151 |
|
152 /* |
|
153 * Set RxCfg and RxFilterCfg values |
|
154 */ |
|
155 pCmd->rxFilter.ConfigOptions = ENDIAN_HANDLE_LONG (DB_WLAN(hCmdBld).RxConfigOption); |
|
156 pCmd->rxFilter.FilterOptions = ENDIAN_HANDLE_LONG (DB_WLAN(hCmdBld).RxFilterOption); |
|
157 pCmd->beaconInterval = ENDIAN_HANDLE_WORD (DB_BSS(hCmdBld).BeaconInterval); |
|
158 pCmd->dtimInterval = DB_BSS(hCmdBld).DtimInterval; |
|
159 pCmd->channelNumber = DB_BSS(hCmdBld).RadioChannel; |
|
160 pCmd->bssType = BssType; |
|
161 /* Add radio band */ |
|
162 pCmd->bssType |= DB_WLAN(hCmdBld).RadioBand << 4; |
|
163 /* Bits 0-2: Tx-Session-Count. bit 7: indicates if to flush the Tx queues */ |
|
164 pCmd->ctrl = pBssInfoParams->Ctrl; |
|
165 |
|
166 /* |
|
167 * BasicRateSet |
|
168 * The wlan hardware uses pHwMboxCmd field to determine the rate at which to transmit |
|
169 * control frame responses (such as ACK or CTS frames) |
|
170 */ |
|
171 cmdBld_ConvertAppRatesBitmap (pBssInfoParams->BasicRateSet, 0, &HwBasicRatesBitmap); |
|
172 pCmd->basicRateSet = ENDIAN_HANDLE_LONG(HwBasicRatesBitmap); |
|
173 |
|
174 /* BSS ID - reversed order (see wlan hardware spec) */ |
|
175 BssId = DB_BSS(hCmdBld).BssId; |
|
176 cmdBssId = (TI_UINT8*)&pCmd->bssIdL; |
|
177 for (i = 0; i < MAC_ADDR_LEN; i++) |
|
178 cmdBssId[i] = BssId[MAC_ADDR_LEN - 1 - i]; |
|
179 |
|
180 /* SSID string */ |
|
181 pCmd->ssidLength = pSsid->len; |
|
182 os_memoryCopy (pCmdBld->hOs, (void *)pCmd->ssidStr, (void *)pSsid->str, pSsid->len); |
|
183 |
|
184 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
185 CMD_START_JOIN, |
|
186 (TI_CHAR *)pCmd, |
|
187 sizeof(*pCmd), |
|
188 fJoinCompleteCb, |
|
189 hCb, |
|
190 NULL); |
|
191 } |
|
192 |
|
193 |
|
194 /**************************************************************************** |
|
195 * cmdBld_CmdIeEnableRx() |
|
196 **************************************************************************** |
|
197 * DESCRIPTION: Construct the EnableRx command fileds and send it to the mailbox |
|
198 * |
|
199 * INPUTS: None |
|
200 * |
|
201 * OUTPUT: None |
|
202 * |
|
203 * RETURNS: TI_OK or TI_NOK |
|
204 ****************************************************************************/ |
|
205 TI_STATUS cmdBld_CmdIeEnableRx (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) |
|
206 { |
|
207 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
208 TI_UINT8 uChannelNumber; |
|
209 |
|
210 uChannelNumber = DB_DEFAULT_CHANNEL (hCmdBld); |
|
211 |
|
212 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
213 CMD_ENABLE_RX, |
|
214 (TI_CHAR *)&uChannelNumber, |
|
215 sizeof(TI_UINT8), |
|
216 fCb, |
|
217 hCb, |
|
218 NULL); |
|
219 } |
|
220 |
|
221 |
|
222 /**************************************************************************** |
|
223 * cmdBld_CmdIeEnableTx() |
|
224 **************************************************************************** |
|
225 * DESCRIPTION: Construct the EnableTx command fileds and send it to the mailbox |
|
226 * Note: This Enable_TX command is used also for changing the serving |
|
227 * channel. |
|
228 * |
|
229 * INPUTS: None |
|
230 * |
|
231 * OUTPUT: None |
|
232 * |
|
233 * RETURNS: TI_OK or TI_NOK |
|
234 ****************************************************************************/ |
|
235 TI_STATUS cmdBld_CmdIeEnableTx (TI_HANDLE hCmdBld, TI_UINT8 channel, void *fCb, TI_HANDLE hCb) |
|
236 { |
|
237 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
238 |
|
239 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
240 CMD_ENABLE_TX, |
|
241 (TI_CHAR *)&channel, |
|
242 sizeof(TI_UINT8), |
|
243 fCb, |
|
244 hCb, |
|
245 NULL); |
|
246 } |
|
247 |
|
248 |
|
249 /**************************************************************************** |
|
250 * cmdBld_CmdIeDisableRx() |
|
251 **************************************************************************** |
|
252 * DESCRIPTION: Construct the DisableRx command fileds and send it to the mailbox |
|
253 * |
|
254 * INPUTS: None |
|
255 * |
|
256 * OUTPUT: None |
|
257 * |
|
258 * RETURNS: TI_OK or TI_NOK |
|
259 ****************************************************************************/ |
|
260 TI_STATUS cmdBld_CmdIeDisableRx (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) |
|
261 { |
|
262 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
263 |
|
264 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_DISABLE_RX, NULL, 0, fCb, hCb, NULL); |
|
265 } |
|
266 |
|
267 /**************************************************************************** |
|
268 * cmdBld_CmdIeDisableTx() |
|
269 **************************************************************************** |
|
270 * DESCRIPTION: Construct the DisableTx command fileds and send it to the mailbox |
|
271 * |
|
272 * INPUTS: None |
|
273 * |
|
274 * OUTPUT: None |
|
275 * |
|
276 * RETURNS: TI_OK or TI_NOK |
|
277 ****************************************************************************/ |
|
278 TI_STATUS cmdBld_CmdIeDisableTx (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) |
|
279 { |
|
280 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
281 |
|
282 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_DISABLE_TX, NULL, 0, fCb, hCb, NULL); |
|
283 } |
|
284 |
|
285 /**************************************************************************** |
|
286 * cmdBld_CmdIeConfigureTemplateFrame() |
|
287 **************************************************************************** |
|
288 * DESCRIPTION: Generic function which sets the Fw with a template frame according |
|
289 * to the given template type. |
|
290 * |
|
291 * INPUTS: templateType - CMD_BEACON, CMD_PROBE_REQ, CMD_PROBE_RESP etc. |
|
292 * |
|
293 * OUTPUT: None |
|
294 * |
|
295 * RETURNS: TI_OK or TI_NOK |
|
296 ****************************************************************************/ |
|
297 TI_STATUS cmdBld_CmdIeConfigureTemplateFrame (TI_HANDLE hCmdBld, |
|
298 TTemplateParams *pTemplate, |
|
299 TI_UINT16 uFrameSize, |
|
300 TemplateType_e eTemplateType, |
|
301 TI_UINT8 uIndex, |
|
302 void * fCb, |
|
303 TI_HANDLE hCb) |
|
304 { |
|
305 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
306 PktTemplate_t AcxCmd_PktTemplate; |
|
307 PktTemplate_t *pCmd = &AcxCmd_PktTemplate; |
|
308 |
|
309 /* If the frame size is too big - we truncate the frame template */ |
|
310 if (uFrameSize > MAX_TEMPLATES_SIZE) |
|
311 { |
|
312 TRACE3(pCmdBld->hReport, REPORT_SEVERITY_ERROR, ": Frame size (=%d) of CmdType (=%d) is bigger than MAX_TEMPLATES_SIZE(=%d) !!!\n", uFrameSize, eTemplateType, MAX_TEMPLATES_SIZE); |
|
313 |
|
314 uFrameSize = MAX_TEMPLATES_SIZE; |
|
315 } |
|
316 |
|
317 /* if pTemplate is NULL than it means that we just want to reserve place in Fw, and there is no need to copy */ |
|
318 if (pTemplate != NULL) |
|
319 { |
|
320 os_memoryCopy(pCmdBld->hOs, (void *)&pCmd->templateStart, (void *)(pTemplate->Buffer), uFrameSize); |
|
321 pCmd->templateTxAttribute.enabledRates = pTemplate->uRateMask; |
|
322 } |
|
323 pCmd->len = ENDIAN_HANDLE_WORD(uFrameSize); |
|
324 pCmd->index = uIndex; |
|
325 pCmd->templateType = eTemplateType; |
|
326 pCmd->templateTxAttribute.shortRetryLimit = 10; |
|
327 pCmd->templateTxAttribute.longRetryLimit = 10; |
|
328 |
|
329 #ifdef TI_DBG |
|
330 if (pCmdBld->uDbgTemplatesRateMask != 0) |
|
331 { |
|
332 pCmd->templateTxAttribute.enabledRates = pCmdBld->uDbgTemplatesRateMask; |
|
333 } |
|
334 #endif |
|
335 |
|
336 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
337 CMD_SET_TEMPLATE, |
|
338 (TI_CHAR *)pCmd, |
|
339 sizeof (PktTemplate_t), |
|
340 fCb, |
|
341 hCb, |
|
342 NULL); |
|
343 } |
|
344 |
|
345 |
|
346 /**************************************************************************** |
|
347 * cmdBld_CmdIeSetKey() |
|
348 **************************************************************************** |
|
349 * DESCRIPTION: Construct the SetKey command fileds and send it to the mailbox |
|
350 * |
|
351 * INPUTS: |
|
352 * Action - add/remove key |
|
353 * MacAddr - relevant only for mapping keys |
|
354 * KeySize - key size |
|
355 * KeyType - default/mapping/TKIP |
|
356 * KeyId - relevant only for default keys |
|
357 * Key - key data |
|
358 * |
|
359 * OUTPUT: None |
|
360 * |
|
361 * RETURNS: TI_OK or TI_NOK |
|
362 ****************************************************************************/ |
|
363 TI_STATUS cmdBld_CmdIeSetKey (TI_HANDLE hCmdBld, |
|
364 TI_UINT32 action, |
|
365 TI_UINT8 *pMacAddr, |
|
366 TI_UINT32 uKeySize, |
|
367 TI_UINT32 uKeyType, |
|
368 TI_UINT32 uKeyId, |
|
369 TI_UINT8 *pKey, |
|
370 TI_UINT32 uSecuritySeqNumLow, |
|
371 TI_UINT32 uSecuritySeqNumHigh, |
|
372 void *fCb, |
|
373 TI_HANDLE hCb) |
|
374 { |
|
375 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
376 SetKey_t AcxCmd_SetKey; |
|
377 SetKey_t *pCmd = &AcxCmd_SetKey; |
|
378 |
|
379 os_memoryZero (pCmdBld->hOs, (void *)pCmd, sizeof(*pCmd)); |
|
380 |
|
381 MAC_COPY (pCmd->addr, pMacAddr); |
|
382 |
|
383 if (uKeySize > MAX_KEY_SIZE) |
|
384 { |
|
385 os_memoryCopy (pCmdBld->hOs, (void *)pCmd->key, (void *)pKey, MAX_KEY_SIZE); |
|
386 } |
|
387 else |
|
388 { |
|
389 os_memoryCopy (pCmdBld->hOs, (void *)pCmd->key, (void *)pKey, uKeySize); |
|
390 } |
|
391 |
|
392 pCmd->action = ENDIAN_HANDLE_WORD((TI_UINT16)action); |
|
393 pCmd->keySize = (TI_UINT8)uKeySize; |
|
394 pCmd->type = (TI_UINT8)uKeyType; |
|
395 pCmd->id = (TI_UINT8)uKeyId; |
|
396 pCmd->ssidProfile = 0; |
|
397 |
|
398 /* |
|
399 * Preserve TKIP/AES security sequence number after recovery. |
|
400 * Note that our STA Tx is currently using only one sequence-counter |
|
401 * for all ACs (unlike the Rx which is separated per AC). |
|
402 */ |
|
403 pCmd->AcSeqNum16[0] = ENDIAN_HANDLE_WORD((TI_UINT16)uSecuritySeqNumLow); |
|
404 pCmd->AcSeqNum16[1] = 0; |
|
405 pCmd->AcSeqNum16[2] = 0; |
|
406 pCmd->AcSeqNum16[3] = 0; |
|
407 |
|
408 pCmd->AcSeqNum32[0] = ENDIAN_HANDLE_LONG(uSecuritySeqNumHigh); |
|
409 pCmd->AcSeqNum32[1] = 0; |
|
410 pCmd->AcSeqNum32[2] = 0; |
|
411 pCmd->AcSeqNum32[3] = 0; |
|
412 |
|
413 |
|
414 TRACE6(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "Addr: %02x:%02x:%02x:%02x:%02x:%02x\n", pCmd->addr[0],pCmd->addr[1],pCmd->addr[2],pCmd->addr[3],pCmd->addr[4],pCmd->addr[5]); |
|
415 |
|
416 TRACE7(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "Action=%x,keySize=0x%x,type=%x, id=%x, ssidProfile=%x, AcSeqNum16[0]=%x, AcSeqNum32[0]=%x\n", pCmd->action,pCmd->keySize, pCmd->type,pCmd->id,pCmd->ssidProfile,pCmd->AcSeqNum16[0],pCmd->AcSeqNum32[0] ); |
|
417 |
|
418 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_SET_KEYS, (char *)pCmd, sizeof(*pCmd), fCb, hCb, NULL); |
|
419 } |
|
420 |
|
421 |
|
422 /**************************************************************************** |
|
423 * cmdBld_CmdIeStartScan () |
|
424 **************************************************************************** |
|
425 * DESCRIPTION: Send SCAN Command |
|
426 * |
|
427 * INPUTS: None |
|
428 * |
|
429 * OUTPUT: None |
|
430 * |
|
431 * RETURNS: TI_OK or TI_NOK |
|
432 ****************************************************************************/ |
|
433 TI_STATUS cmdBld_CmdIeStartScan (TI_HANDLE hCmdBld, ScanParameters_t* pScanParams, void *fScanResponseCb, TI_HANDLE hCb) |
|
434 { |
|
435 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
436 |
|
437 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
438 CMD_SCAN, |
|
439 (TI_CHAR *)pScanParams, |
|
440 sizeof(ScanParameters_t), |
|
441 fScanResponseCb, |
|
442 hCb, |
|
443 NULL); |
|
444 } |
|
445 |
|
446 /**************************************************************************** |
|
447 * cmdBld_CmdIeStartSPSScan () |
|
448 **************************************************************************** |
|
449 * DESCRIPTION: Send SPS SCAN Command |
|
450 * |
|
451 * INPUTS: None |
|
452 * |
|
453 * OUTPUT: None |
|
454 * |
|
455 * RETURNS: TI_OK or TI_NOK |
|
456 ****************************************************************************/ |
|
457 TI_STATUS cmdBld_CmdIeStartSPSScan (TI_HANDLE hCmdBld, ScheduledScanParameters_t* pScanParams, void* fScanResponseCb, TI_HANDLE hCb) |
|
458 { |
|
459 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
460 |
|
461 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
462 CMD_SPS_SCAN, |
|
463 (TI_CHAR *)pScanParams, |
|
464 sizeof(ScheduledScanParameters_t), |
|
465 fScanResponseCb, |
|
466 hCb, |
|
467 NULL); |
|
468 } |
|
469 |
|
470 |
|
471 /**************************************************************************** |
|
472 * cmdBld_CmdIeStopScan () |
|
473 **************************************************************************** |
|
474 * DESCRIPTION: Construct the STOP_SCAN command fields and send it to the |
|
475 * mailbox |
|
476 * |
|
477 * INPUTS: None |
|
478 * |
|
479 * OUTPUT: None |
|
480 * |
|
481 * RETURNS: TI_OK or TI_NOK |
|
482 ****************************************************************************/ |
|
483 TI_STATUS cmdBld_CmdIeStopScan (TI_HANDLE hCmdBld, void *fScanResponseCb, TI_HANDLE hCb) |
|
484 { |
|
485 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
486 |
|
487 TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CmdIeStopScan: -------------- \n"); |
|
488 |
|
489 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_STOP_SCAN, 0, 0, fScanResponseCb, hCb, NULL); |
|
490 } |
|
491 |
|
492 |
|
493 /**************************************************************************** |
|
494 * cmdBld_CmdIeStopSPSScan () |
|
495 **************************************************************************** |
|
496 * DESCRIPTION: Construct the STOP_SPS_SCAN command fields and send it to the |
|
497 * mailbox |
|
498 * |
|
499 * INPUTS: None |
|
500 * |
|
501 * OUTPUT: None |
|
502 * |
|
503 * RETURNS: TI_OK or TI_NOK |
|
504 ****************************************************************************/ |
|
505 TI_STATUS cmdBld_CmdIeStopSPSScan (TI_HANDLE hCmdBld, void* fScanResponseCB, TI_HANDLE hCb) |
|
506 { |
|
507 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
508 |
|
509 TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CmdIeStopSPSScan: -------------- \n"); |
|
510 |
|
511 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_STOP_SPS_SCAN, 0, 0, fScanResponseCB, hCb, NULL); |
|
512 } |
|
513 |
|
514 |
|
515 TI_STATUS cmdBld_CmdIeSetSplitScanTimeOut (TI_HANDLE hCmdBld, TI_UINT32 uTimeOut, void *fCB, TI_HANDLE hCb) |
|
516 { |
|
517 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
518 enhancedTriggerTO_t Cmd_enhancedTrigger; |
|
519 enhancedTriggerTO_t *pCmd = &Cmd_enhancedTrigger; |
|
520 |
|
521 TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CmdIeSetSplitScanTimeOut: uTimeOut=%d -------------- \n", uTimeOut); |
|
522 |
|
523 pCmd->slicedScanTimeOut = uTimeOut; |
|
524 |
|
525 return cmdQueue_SendCommand(pCmdBld->hCmdQueue, CMD_TRIGGER_SCAN_TO, (char *)pCmd, sizeof(*pCmd), fCB, hCb, NULL); |
|
526 } |
|
527 |
|
528 /** |
|
529 * \fn cmdBld_CmdIeScanSsidList |
|
530 * \brief Sets SSID list for periodic scan |
|
531 * |
|
532 * Sets SSID list for periodic scan |
|
533 * |
|
534 * \param hCmdBld - handle to command builder object |
|
535 * \param pSsidList - command data |
|
536 * \param fScanResponseCB - command complete function callback |
|
537 * \param hCb - command complete callback handle |
|
538 * \return TI_OK on success, any other code on error |
|
539 * \sa cmdBld_CmdIePeriodicScanParams, cmdBld_CmdIeStartPeriodicScan, cmdBld_CmdIeStopPeriodicScan |
|
540 */ |
|
541 TI_STATUS cmdBld_CmdIeScanSsidList (TI_HANDLE hCmdBld, ConnScanSSIDList_t *pSsidList, |
|
542 void* fScanResponseCB, TI_HANDLE hCb) |
|
543 { |
|
544 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
545 |
|
546 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
547 CMD_CONNECTION_SCAN_SSID_CFG, |
|
548 (char *)pSsidList, |
|
549 sizeof(ConnScanSSIDList_t), |
|
550 fScanResponseCB, |
|
551 hCb, |
|
552 NULL); |
|
553 } |
|
554 |
|
555 /** |
|
556 * \fn cmdBld_CmdIePeriodicScanParams |
|
557 * \brief Sets periodic scan parameters |
|
558 * |
|
559 * Sets periodic scan parameters |
|
560 * |
|
561 * \param hCmdBld - handle to command builder object |
|
562 * \param pPeriodicScanParams - command data |
|
563 * \param fScanResponseCB - command complete function callback |
|
564 * \param hCb - command complete callback handle |
|
565 * \return TI_OK on success, any other code on error |
|
566 * \sa cmdBld_CmdIeScanSsidList, cmdBld_CmdIeStartPeriodicScan, cmdBld_CmdIeStopPeriodicScan |
|
567 */ |
|
568 TI_STATUS cmdBld_CmdIePeriodicScanParams (TI_HANDLE hCmdBld, ConnScanParameters_t *pPeriodicScanParams, |
|
569 void* fScanResponseCB, TI_HANDLE hCb) |
|
570 { |
|
571 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
572 |
|
573 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
574 CMD_CONNECTION_SCAN_CFG, |
|
575 (char *)pPeriodicScanParams, |
|
576 sizeof(ConnScanParameters_t), |
|
577 fScanResponseCB, |
|
578 hCb, |
|
579 NULL); |
|
580 } |
|
581 |
|
582 /** |
|
583 * \fn cmdBld_CmdIeStartPeriodicScan |
|
584 * \brief Starts a periodic scan operation |
|
585 * |
|
586 * Starts a periodic scan operation |
|
587 * |
|
588 * \param hCmdBld - handle to command builder object |
|
589 * \param pPeriodicScanStart - command data |
|
590 * \param fScanResponseCB - command complete function callback |
|
591 * \param hCb - command complete callback handle |
|
592 * \return TI_OK on success, any other code on error |
|
593 * \sa cmdBld_CmdIeScanSsidList, cmdBld_CmdIePeriodicScanParams, cmdBld_CmdIeStopPeriodicScan |
|
594 */ |
|
595 TI_STATUS cmdBld_CmdIeStartPeriodicScan (TI_HANDLE hCmdBld, PeriodicScanTag* pPeriodicScanStart, |
|
596 void* fScanResponseCB, TI_HANDLE hCb) |
|
597 { |
|
598 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
599 |
|
600 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
601 CMD_START_PERIODIC_SCAN, |
|
602 pPeriodicScanStart, sizeof (PeriodicScanTag), |
|
603 fScanResponseCB, |
|
604 hCb, |
|
605 NULL); |
|
606 } |
|
607 |
|
608 /** |
|
609 * \fn cmdBld_CmdIeStopPeriodicScan |
|
610 * \brief Stops an on-going periodic scan operation |
|
611 * |
|
612 * Stops an on-going periodic scan operation |
|
613 * |
|
614 * \param hCmdBld - handle to command builder object |
|
615 * \param fScanResponseCB - command complete function callback |
|
616 * \param hCb - command complete callback handle |
|
617 * \return TI_OK on success, any other code on error |
|
618 * \sa cmdBld_CmdIeScanSsidList, cmdBld_CmdIePeriodicScanParams, cmdBld_CmdIeStartPeriodicScan |
|
619 */ |
|
620 TI_STATUS cmdBld_CmdIeStopPeriodicScan (TI_HANDLE hCmdBld, |
|
621 PeriodicScanTag* pPeriodicScanStop, |
|
622 void* fScanResponseCB, |
|
623 TI_HANDLE hCb) |
|
624 { |
|
625 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
626 |
|
627 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
628 CMD_STOP_PERIODIC_SCAN, |
|
629 pPeriodicScanStop, |
|
630 sizeof(pPeriodicScanStop), |
|
631 fScanResponseCB, |
|
632 hCb, |
|
633 NULL); |
|
634 } |
|
635 |
|
636 /**************************************************************************** |
|
637 * cmdBld_CmdIeNoiseHistogram () |
|
638 **************************************************************************** |
|
639 * DESCRIPTION: Send NOISE_HISTOGRAM Command |
|
640 * |
|
641 * INPUTS: None |
|
642 * |
|
643 * OUTPUT: None |
|
644 * |
|
645 * RETURNS: TI_OK or TI_NOK |
|
646 ****************************************************************************/ |
|
647 TI_STATUS cmdBld_CmdIeNoiseHistogram (TI_HANDLE hCmdBld, TNoiseHistogram *pNoiseHistParams, void *fCb, TI_HANDLE hCb) |
|
648 { |
|
649 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
650 NoiseHistRequest_t AcxCmd_NoiseHistogram; |
|
651 NoiseHistRequest_t *pCmd = &AcxCmd_NoiseHistogram; |
|
652 |
|
653 os_memoryZero(pCmdBld->hOs, (void *)pCmd, sizeof(*pCmd)); |
|
654 |
|
655 pCmd->mode = ENDIAN_HANDLE_WORD((TI_UINT16)pNoiseHistParams->cmd); |
|
656 pCmd->sampleIntervalUSec = ENDIAN_HANDLE_WORD(pNoiseHistParams->sampleInterval); |
|
657 |
|
658 os_memoryCopy (pCmdBld->hOs, (void *)&(pCmd->thresholds[0]), (void *)&(pNoiseHistParams->ranges[0]), MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES); |
|
659 |
|
660 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_NOISE_HIST, (TI_CHAR *)pCmd, sizeof(*pCmd), fCb, hCb, NULL); |
|
661 } |
|
662 |
|
663 |
|
664 /**************************************************************************** |
|
665 * cmdBld_CmdIeSetPsMode() |
|
666 **************************************************************************** |
|
667 * DESCRIPTION: send Command for Power Management configuration |
|
668 * to the mailbox |
|
669 * |
|
670 * INPUTS: None |
|
671 * |
|
672 * OUTPUT: None |
|
673 * |
|
674 * RETURNS: TI_OK or TI_NOK |
|
675 ****************************************************************************/ |
|
676 TI_STATUS cmdBld_CmdIeSetPsMode (TI_HANDLE hCmdBld, TPowerSaveParams* powerSaveParams, void *fCb, TI_HANDLE hCb) |
|
677 { |
|
678 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
679 PSModeParameters_t Cmd_PowerMgmtCnf; |
|
680 PSModeParameters_t * pCmd = &Cmd_PowerMgmtCnf; |
|
681 |
|
682 os_memoryZero(pCmdBld->hOs, (void *)pCmd, sizeof(*pCmd)); |
|
683 |
|
684 if (powerSaveParams->ps802_11Enable) |
|
685 { |
|
686 pCmd->mode = 1; |
|
687 } |
|
688 else |
|
689 { |
|
690 pCmd->mode = 0; |
|
691 } |
|
692 |
|
693 pCmd->hangOverPeriod = powerSaveParams->hangOverPeriod; |
|
694 pCmd->needToSendNullData = powerSaveParams->needToSendNullData; |
|
695 pCmd->rateToTransmitNullData = ENDIAN_HANDLE_LONG(powerSaveParams->NullPktRateModulation); |
|
696 pCmd->numberOfRetries = powerSaveParams->numNullPktRetries; |
|
697 |
|
698 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_SET_PS_MODE, (TI_CHAR *)pCmd, sizeof(*pCmd), fCb, hCb, NULL); |
|
699 } |
|
700 |
|
701 |
|
702 /**************************************************************************** |
|
703 * cmdBld_CmdIeSwitchChannel () |
|
704 **************************************************************************** |
|
705 * DESCRIPTION: Send CMD_SWITCH_CHANNEL Command |
|
706 * |
|
707 * INPUTS: None |
|
708 * |
|
709 * OUTPUT: None |
|
710 * |
|
711 * RETURNS: TI_OK or TI_NOK |
|
712 ****************************************************************************/ |
|
713 TI_STATUS cmdBld_CmdIeSwitchChannel (TI_HANDLE hCmdBld, TSwitchChannelParams *pSwitchChannelCmd, void *fCb, TI_HANDLE hCb) |
|
714 { |
|
715 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
716 ChannelSwitchParameters_t AcxCmd_SwitchChannel; |
|
717 ChannelSwitchParameters_t *pCmd = &AcxCmd_SwitchChannel; |
|
718 |
|
719 os_memoryZero (pCmdBld->hOs, (void *)pCmd, sizeof(*pCmd)); |
|
720 |
|
721 pCmd->channel = pSwitchChannelCmd->channelNumber; |
|
722 pCmd->switchTime = pSwitchChannelCmd->switchTime; |
|
723 pCmd->txSuspend = pSwitchChannelCmd->txFlag; |
|
724 pCmd->flush = pSwitchChannelCmd->flush; |
|
725 |
|
726 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CHANNEL_SWITCH, (TI_CHAR *)pCmd, sizeof(*pCmd), fCb, hCb, NULL); |
|
727 } |
|
728 |
|
729 |
|
730 /**************************************************************************** |
|
731 * cmdBld_CmdIeSwitchChannelCancel () |
|
732 **************************************************************************** |
|
733 * DESCRIPTION: Send CMD_SWITCH_CHANNEL_CANCEL Command |
|
734 * |
|
735 * INPUTS: None |
|
736 * |
|
737 * OUTPUT: None |
|
738 * |
|
739 * RETURNS: TI_OK or TI_NOK |
|
740 ****************************************************************************/ |
|
741 TI_STATUS cmdBld_CmdIeSwitchChannelCancel (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) |
|
742 { |
|
743 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
744 |
|
745 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_STOP_CHANNEL_SWICTH, 0, 0, fCb, hCb, NULL); |
|
746 } |
|
747 |
|
748 |
|
749 /**************************************************************************** |
|
750 * cmdBld_CmdIeFwDisconnect() |
|
751 **************************************************************************** |
|
752 * DESCRIPTION: Construct the Disconnect command fileds and send it to the mailbox |
|
753 * |
|
754 * INPUTS: None |
|
755 * |
|
756 * OUTPUT: None |
|
757 * |
|
758 * RETURNS: TI_OK or TI_NOK |
|
759 ****************************************************************************/ |
|
760 TI_STATUS cmdBld_CmdIeFwDisconnect (TI_HANDLE hCmdBld, TI_UINT32 uConfigOptions, TI_UINT32 uFilterOptions, DisconnectType_e uDisconType, TI_UINT16 uDisconReason, void *fCb, TI_HANDLE hCb) |
|
761 { |
|
762 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
763 DisconnectParameters_t AcxCmd_Disconnect; |
|
764 |
|
765 AcxCmd_Disconnect.rxFilter.ConfigOptions = ENDIAN_HANDLE_LONG(uConfigOptions); |
|
766 AcxCmd_Disconnect.rxFilter.FilterOptions = ENDIAN_HANDLE_LONG(uFilterOptions); |
|
767 AcxCmd_Disconnect.disconnectReason = ENDIAN_HANDLE_LONG(uDisconReason); |
|
768 AcxCmd_Disconnect.disconnectType = uDisconType; |
|
769 |
|
770 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
771 CMD_DISCONNECT, |
|
772 (void *)&AcxCmd_Disconnect, |
|
773 sizeof(AcxCmd_Disconnect), |
|
774 fCb, |
|
775 hCb, |
|
776 NULL); |
|
777 } |
|
778 |
|
779 |
|
780 /**************************************************************************** |
|
781 * cmdBld_CmdIeMeasurement() |
|
782 **************************************************************************** |
|
783 * DESCRIPTION: send Command for measurement configuration |
|
784 * to the mailbox |
|
785 * |
|
786 * INPUTS: None |
|
787 * |
|
788 * OUTPUT: None |
|
789 * |
|
790 * RETURNS: TI_OK or TI_NOK |
|
791 ****************************************************************************/ |
|
792 TI_STATUS cmdBld_CmdIeMeasurement (TI_HANDLE hCmdBld, |
|
793 TMeasurementParams *pMeasurementParams, |
|
794 void *fMeasureResponseCb, |
|
795 TI_HANDLE hCb) |
|
796 { |
|
797 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
798 MeasurementParameters_t Cmd_MeasurementParam; |
|
799 MeasurementParameters_t *pCmd = &Cmd_MeasurementParam; |
|
800 |
|
801 os_memoryZero (pCmdBld->hOs, (void *)pCmd, sizeof(*pCmd)); |
|
802 |
|
803 pCmd->band = pMeasurementParams->band; |
|
804 pCmd->channel = pMeasurementParams->channel; |
|
805 pCmd->duration = ENDIAN_HANDLE_LONG(pMeasurementParams->duration); |
|
806 pCmd->rxFilter.ConfigOptions = ENDIAN_HANDLE_LONG(pMeasurementParams->ConfigOptions); |
|
807 pCmd->rxFilter.FilterOptions = ENDIAN_HANDLE_LONG(pMeasurementParams->FilterOptions); |
|
808 pCmd->scanTag = (TI_UINT8)pMeasurementParams->eTag; |
|
809 |
|
810 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
811 CMD_MEASUREMENT, |
|
812 (TI_CHAR *)pCmd, |
|
813 sizeof(*pCmd), |
|
814 fMeasureResponseCb, |
|
815 hCb, |
|
816 NULL); |
|
817 } |
|
818 |
|
819 |
|
820 /**************************************************************************** |
|
821 * cmdBld_CmdIeMeasurementStop() |
|
822 **************************************************************************** |
|
823 * DESCRIPTION: send Command for stoping measurement |
|
824 * |
|
825 * INPUTS: None |
|
826 * |
|
827 * OUTPUT: None |
|
828 * |
|
829 * RETURNS: TI_OK or TI_NOK |
|
830 ****************************************************************************/ |
|
831 TI_STATUS cmdBld_CmdIeMeasurementStop (TI_HANDLE hCmdBld, void* fMeasureResponseCb, TI_HANDLE hCb) |
|
832 { |
|
833 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
834 |
|
835 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
836 CMD_STOP_MEASUREMENT, |
|
837 0, |
|
838 0, |
|
839 fMeasureResponseCb, |
|
840 hCb, |
|
841 NULL); |
|
842 } |
|
843 |
|
844 |
|
845 /**************************************************************************** |
|
846 * cmdBld_CmdIeApDiscovery() |
|
847 **************************************************************************** |
|
848 * DESCRIPTION: send Command for AP Discovery |
|
849 * to the mailbox |
|
850 * |
|
851 * INPUTS: None |
|
852 * |
|
853 * OUTPUT: None |
|
854 * |
|
855 * RETURNS: TI_OK or TI_NOK |
|
856 ****************************************************************************/ |
|
857 TI_STATUS cmdBld_CmdIeApDiscovery (TI_HANDLE hCmdBld, TApDiscoveryParams *pApDiscoveryParams, void *fCb, TI_HANDLE hCb) |
|
858 { |
|
859 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
860 ApDiscoveryParameters_t Cmd_ApDiscovery; |
|
861 ApDiscoveryParameters_t *pCmd = &Cmd_ApDiscovery; |
|
862 |
|
863 os_memoryZero (pCmdBld->hOs, (void *)pCmd, sizeof(*pCmd)); |
|
864 |
|
865 pCmd->txPowerAttenuation = pApDiscoveryParams->txPowerDbm; |
|
866 pCmd->numOfProbRqst = pApDiscoveryParams->numOfProbRqst; |
|
867 pCmd->scanDuration = ENDIAN_HANDLE_LONG(pApDiscoveryParams->scanDuration); |
|
868 pCmd->scanOptions = ENDIAN_HANDLE_WORD(pApDiscoveryParams->scanOptions); |
|
869 pCmd->txdRateSet = ENDIAN_HANDLE_LONG(pApDiscoveryParams->txdRateSet); |
|
870 pCmd->rxFilter.ConfigOptions = ENDIAN_HANDLE_LONG(pApDiscoveryParams->ConfigOptions); |
|
871 pCmd->rxFilter.FilterOptions = ENDIAN_HANDLE_LONG(pApDiscoveryParams->FilterOptions); |
|
872 |
|
873 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
874 CMD_AP_DISCOVERY, |
|
875 (void *)pCmd, |
|
876 sizeof(*pCmd), |
|
877 fCb, |
|
878 hCb, |
|
879 NULL); |
|
880 } |
|
881 |
|
882 |
|
883 /**************************************************************************** |
|
884 * cmdBld_CmdIeApDiscoveryStop() |
|
885 **************************************************************************** |
|
886 * DESCRIPTION: send Command for stoping AP Discovery |
|
887 * |
|
888 * INPUTS: None |
|
889 * |
|
890 * OUTPUT: None |
|
891 * |
|
892 * RETURNS: TI_OK or TI_NOK |
|
893 ****************************************************************************/ |
|
894 TI_STATUS cmdBld_CmdIeApDiscoveryStop (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) |
|
895 { |
|
896 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
897 |
|
898 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_STOP_AP_DISCOVERY, 0, 0, fCb, hCb, NULL); |
|
899 } |
|
900 |
|
901 |
|
902 /**************************************************************************** |
|
903 * cmdBld_CmdIeHealthCheck() |
|
904 **************************************************************************** |
|
905 * DESCRIPTION: |
|
906 * |
|
907 * INPUTS: |
|
908 * |
|
909 * OUTPUT: |
|
910 * |
|
911 * RETURNS: |
|
912 ****************************************************************************/ |
|
913 TI_STATUS cmdBld_CmdIeHealthCheck (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) |
|
914 { |
|
915 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
916 |
|
917 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_HEALTH_CHECK, NULL, 0, fCb, hCb, NULL); |
|
918 } |
|
919 |
|
920 /**************************************************************************** |
|
921 * cmdBld_CmdIeSetStaState() |
|
922 **************************************************************************** |
|
923 * DESCRIPTION: Construct the Disconnect command fileds and send it to the mailbox |
|
924 * |
|
925 * INPUTS: None |
|
926 * |
|
927 * OUTPUT: None |
|
928 * |
|
929 * RETURNS: TI_OK or TI_NOK |
|
930 ****************************************************************************/ |
|
931 TI_STATUS cmdBld_CmdIeSetStaState (TI_HANDLE hCmdBld, TI_UINT8 staState, void *fCb, TI_HANDLE hCb) |
|
932 { |
|
933 TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; |
|
934 SetStaState_t AcxCmd_SetStaState; |
|
935 |
|
936 AcxCmd_SetStaState.staState = staState; |
|
937 |
|
938 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
939 CMD_SET_STA_STATE, |
|
940 (void *)&AcxCmd_SetStaState, |
|
941 sizeof(AcxCmd_SetStaState), |
|
942 fCb, |
|
943 hCb, |
|
944 NULL); |
|
945 } |
|
946 |
|
947 /**************************************************************************** |
|
948 * cmdBld_BitIeTestCmd() |
|
949 **************************************************************************** |
|
950 * DESCRIPTION: |
|
951 * INPUTS: None |
|
952 * |
|
953 * OUTPUT: None |
|
954 * |
|
955 * RETURNS: TI_OK or TI_NOK |
|
956 ****************************************************************************/ |
|
957 TI_STATUS cmdBld_CmdIeTest (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, TTestCmd* pTestCmd) |
|
958 { |
|
959 TCmdBld *pCmdBld = (TI_HANDLE)hCmdBld; |
|
960 TI_UINT32 paramLength; |
|
961 TI_BOOL bIsCBfuncNecessary = TI_TRUE; |
|
962 |
|
963 if (NULL == pTestCmd) |
|
964 { |
|
965 TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, " pTestCmd_Buf = NULL!!!\n"); |
|
966 return TI_NOK; |
|
967 } |
|
968 |
|
969 if ( (TestCmdID_enum)pTestCmd->testCmdId < MAX_TEST_CMD_ID ) |
|
970 { |
|
971 bIsCBfuncNecessary = TI_TRUE; |
|
972 } |
|
973 else |
|
974 { |
|
975 TRACE1(pCmdBld->hReport, REPORT_SEVERITY_WARNING, " Unsupported testCmdId (%d)\n", pTestCmd->testCmdId); |
|
976 } |
|
977 |
|
978 if (bIsCBfuncNecessary && fCb == NULL) |
|
979 { |
|
980 return TI_OK; |
|
981 } |
|
982 |
|
983 switch( pTestCmd->testCmdId ) |
|
984 { |
|
985 case TEST_CMD_PD_BUFFER_CAL: |
|
986 paramLength = sizeof(TTestCmdPdBufferCal); |
|
987 break; |
|
988 |
|
989 case TEST_CMD_P2G_CAL: |
|
990 paramLength = sizeof(TTestCmdP2GCal); |
|
991 break; |
|
992 |
|
993 case TEST_CMD_RX_STAT_GET: |
|
994 paramLength = sizeof(RadioRxStatistics); |
|
995 break; |
|
996 |
|
997 /* packet */ |
|
998 case TEST_CMD_FCC: |
|
999 paramLength = sizeof(TPacketParam); |
|
1000 break; |
|
1001 |
|
1002 /* tone */ |
|
1003 case TEST_CMD_TELEC: |
|
1004 paramLength = sizeof(TToneParam); |
|
1005 break; |
|
1006 |
|
1007 case TEST_CMD_PLT_TEMPLATE: |
|
1008 paramLength = sizeof(TTxTemplate); |
|
1009 break; |
|
1010 |
|
1011 /* channel tune */ |
|
1012 case TEST_CMD_CHANNEL_TUNE: |
|
1013 paramLength = sizeof(TTestCmdChannel); |
|
1014 break; |
|
1015 |
|
1016 case TEST_CMD_GET_FW_VERSIONS: |
|
1017 paramLength = sizeof(TFWVerisons); |
|
1018 break; |
|
1019 |
|
1020 case TEST_CMD_INI_FILE_RADIO_PARAM: |
|
1021 paramLength = sizeof(IniFileRadioParam); |
|
1022 break; |
|
1023 |
|
1024 case TEST_CMD_INI_FILE_GENERAL_PARAM: |
|
1025 paramLength = sizeof(IniFileGeneralParam); |
|
1026 break; |
|
1027 |
|
1028 case TEST_CMD_PLT_GAIN_ADJUST: |
|
1029 paramLength = sizeof(uint32); |
|
1030 break; |
|
1031 |
|
1032 case TEST_CMD_RUN_CALIBRATION_TYPE: |
|
1033 paramLength = sizeof(TTestCmdRunCalibration); |
|
1034 break; |
|
1035 |
|
1036 case TEST_CMD_TX_GAIN_ADJUST: |
|
1037 paramLength = sizeof(TTxGainAdjust); |
|
1038 break; |
|
1039 case TEST_CMD_TEST_TONE: |
|
1040 paramLength = sizeof(TestToneParams_t); |
|
1041 break; |
|
1042 |
|
1043 case TEST_CMD_SET_EFUSE: |
|
1044 paramLength = sizeof(EfuseParameters_t); |
|
1045 break; |
|
1046 case TEST_CMD_GET_EFUSE: |
|
1047 paramLength = sizeof(EfuseParameters_t); |
|
1048 break; |
|
1049 |
|
1050 case TEST_CMD_RX_PLT_CAL: |
|
1051 paramLength = sizeof(RadioRxPltCal); |
|
1052 break; |
|
1053 |
|
1054 case TEST_CMD_UPDATE_PD_REFERENCE_POINT: |
|
1055 paramLength = sizeof(TTestCmdUpdateReferncePoint); |
|
1056 break; |
|
1057 |
|
1058 case TEST_CMD_UPDATE_PD_BUFFER_ERRORS: |
|
1059 paramLength = sizeof(TTestCmdPdBufferErrors); |
|
1060 break; |
|
1061 |
|
1062 case TEST_CMD_POWER_MODE: |
|
1063 paramLength = sizeof(TTestCmdPowerMode); |
|
1064 break; |
|
1065 |
|
1066 case TEST_CMD_FREE_RUN_RSSI: |
|
1067 paramLength = sizeof(TTestCmdFreeRSSI); |
|
1068 break; |
|
1069 |
|
1070 |
|
1071 case TEST_CMD_STOP_TX: |
|
1072 case TEST_CMD_RX_STAT_STOP: |
|
1073 case TEST_CMD_RX_STAT_START: |
|
1074 case TEST_CMD_RX_STAT_RESET: |
|
1075 case TEST_CMD_RX_PLT_ENTER: |
|
1076 case TEST_CMD_RX_PLT_EXIT: |
|
1077 paramLength = 0; |
|
1078 break; |
|
1079 |
|
1080 default: |
|
1081 paramLength = sizeof(pTestCmd->testCmd_u); |
|
1082 } |
|
1083 |
|
1084 return cmdQueue_SendCommand (pCmdBld->hCmdQueue, |
|
1085 CMD_TEST, |
|
1086 (void *)pTestCmd, |
|
1087 paramLength + RESEARVED_SIZE_FOR_RESPONSE, |
|
1088 fCb, |
|
1089 hCb, |
|
1090 (void*)pTestCmd); |
|
1091 } |