TWD/Ctrl/CmdBldCmdIE.c
changeset 0 10c42ec6c05f
equal deleted inserted replaced
-1:000000000000 0:10c42ec6c05f
       
     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 }