1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * CmdBldCmd.c
3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
4a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved.
6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without
8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions
9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met:
10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions of source code must retain the above copyright
12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer.
13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions in binary form must reproduce the above copyright
14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer in
15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    the documentation and/or other materials provided with the
16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    distribution.
17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Neither the name Texas Instruments nor the names of its
18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    contributors may be used to endorse or promote products derived
19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    from this software without specific prior written permission.
20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file  CmdBldCmd.c
36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \brief Command builder. Commands
37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \see   CmdBld.h
39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__  FILE_ID_93
42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "tidef.h"
43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h"
44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "TWDriverInternal.h"
45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "CmdBld.h"
46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "CmdBldCmdIE.h"
47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "CmdBldCfgIE.h"
48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "CmdQueue_api.h"
49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "eventMbox_api.h"
50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    Rx filter field is mostly hard-coded.
53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt   This filter value basically pass only valid beacons / probe responses. For exact bit description,
54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt   consult either the DPG or the FPG (or both, and Yoel...)
55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/
56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define RX_FILTER_CFG_ (CFG_RX_PRSP_EN | CFG_RX_MGMT_EN | CFG_RX_BCN_EN | CFG_RX_RCTS_ACK | CFG_RX_CTL_EN)
57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define RX_CONFIG_OPTION (CFG_RX_RAW | CFG_RX_INT_FCS_ERROR | CFG_RX_WR_RX_STATUS | CFG_RX_TIMESTAMP_TSF)
58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
61a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddWepMappingKey 	(TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb);
62a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveWepMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb);
63a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_UINT32 cmdBld_BuildPeriodicScanChannles  (TPeriodicScanParams *pPeriodicScanParams, ConnScanChannelInfo_t *pChannelList, EScanType eScanType, ERadioBand eRadioBand, TI_UINT32 uPassiveScanDfsDwellTime);
64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_CmdStartScan
68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Build a start scan command and send it to the FW
69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Build a start scan command and send it to the FW
71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  pScanVals - scan parameters
74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  eScanTag - scan tag used for scan complete and result tracking
75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  fScanCommandResponseCB - command complete CB
76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCb - command complete CB
77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return command status (OK / NOK)
78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_CmdStopScan
79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
80a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdStartScan (TI_HANDLE hCmdBld, TScanParams *pScanVals, EScanResultTag eScanTag,
81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               TI_BOOL bHighPriority, void* ScanCommandResponseCB, TI_HANDLE hCb)
82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld   *pCmdBld = (TCmdBld *)hCmdBld;
84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    BasicScanChannelParameters_t* chanPtr;
85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    ScanParameters_t    tnetScanParams;
86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8*              pBSSID;
87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_INT32 i;
88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Convert general scan data to tnet structure */
91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.tidTrigger = pScanVals->Tid;
92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.numOfProbRqst = pScanVals->probeReqNumber;
93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.ssidLength = pScanVals->desiredSsid.len;
94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    os_memoryCopy (pCmdBld->hOs,
95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                   (void *)tnetScanParams.basicScanParameters.ssidStr,
96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                   (void *)pScanVals->desiredSsid.str,
97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                   tnetScanParams.basicScanParameters.ssidLength);
98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /*
100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        scan options field is composed of scan type and band selection.
101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        First, use the lookup table to convert the scan type
102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    */
103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.scanOptions = 0;
105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    switch ( pScanVals->scanType )
107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case SCAN_TYPE_NORMAL_ACTIVE :
109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanParameters.scanOptions = SCAN_ACTIVE;
110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case SCAN_TYPE_NORMAL_PASSIVE :
113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanParameters.scanOptions = SCAN_PASSIVE;
114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case SCAN_TYPE_TRIGGERED_ACTIVE :
117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanParameters.scanOptions = SCAN_ACTIVE | TRIGGERED_SCAN;
118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case SCAN_TYPE_TRIGGERED_PASSIVE :
121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanParameters.scanOptions = SCAN_PASSIVE | TRIGGERED_SCAN;
122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    default:
125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TRACE1( pCmdBld->hReport, REPORT_SEVERITY_ERROR, "Invalid scan type:%d\n", pScanVals->scanType);
126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        return TI_NOK;
127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Add the band selection */
130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if ( RADIO_BAND_5_0_GHZ == pScanVals->band )
131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanParameters.band = RADIO_BAND_5GHZ;
133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    else
135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanParameters.band = RADIO_BAND_2_4_GHZ;
137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Add high priority bit */
140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if ( bHighPriority )
141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanParameters.scanOptions |= SCAN_PRIORITY_HIGH;
143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.scanOptions = ENDIAN_HANDLE_WORD( tnetScanParams.basicScanParameters.scanOptions );
146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* important note: BSSID filter (0x0010) is DISABLED, because the FW sets it according
148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt       to BSSID value (broadcast does not filter, any other value will */
149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.rxCfg.ConfigOptions = ENDIAN_HANDLE_LONG(RX_CONFIG_OPTION) ;
150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.rxCfg.FilterOptions = ENDIAN_HANDLE_LONG( RX_FILTER_CFG_ );
151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* If the SSID is not broadcast SSID, filter according to SSID and local MAC address */
153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if (pScanVals->desiredSsid.len != 0)
154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanParameters.rxCfg.ConfigOptions = ENDIAN_HANDLE_LONG(RX_CONFIG_OPTION | CFG_SSID_FILTER_EN | CFG_UNI_FILTER_EN) ;
156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Rate conversion is done in the HAL */
158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    cmdBld_ConvertAppRatesBitmap (pScanVals->probeRequestRate,
159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                     0,
160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                     &tnetScanParams.basicScanParameters.txdRateSet);
161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.txdRateSet = ENDIAN_HANDLE_LONG( tnetScanParams.basicScanParameters.txdRateSet );
163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.numChannels = ENDIAN_HANDLE_WORD( pScanVals->numOfChannels );
164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* scan result tag */
166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetScanParams.basicScanParameters.scanTag = eScanTag;
167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* copy channel specific scan data to HAL structure */
169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    for ( i = 0; i < pScanVals->numOfChannels; i++ )
170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TI_INT32 j;
172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TI_UINT8*  macAddr;
173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        macAddr = (TI_UINT8*)&tnetScanParams.basicScanChannelParameters[ i ].bssIdL;
175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* copy the MAC address, upside down (CHIP structure) */
177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        for ( j = 0; j < MAC_ADDR_LEN; j++ )
178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            macAddr[ j ] = pScanVals->channelEntry[ i ].normalChannelEntry.bssId[ MAC_ADDR_LEN - 1 - j ];
180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
181a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanChannelParameters[ i ].scanMinDuration =
182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            ENDIAN_HANDLE_LONG( pScanVals->channelEntry[ i ].normalChannelEntry.minChannelDwellTime );
183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanChannelParameters[ i ].scanMaxDuration =
184a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            ENDIAN_HANDLE_LONG( pScanVals->channelEntry[ i ].normalChannelEntry.maxChannelDwellTime );
185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanChannelParameters[ i ].ETCondCount =
186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pScanVals->channelEntry[ i ].normalChannelEntry.ETMaxNumOfAPframes |
187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pScanVals->channelEntry[ i ].normalChannelEntry.earlyTerminationEvent;
188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanChannelParameters[ i ].txPowerAttenuation =
189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pScanVals->channelEntry[ i ].normalChannelEntry.txPowerDbm;
190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetScanParams.basicScanChannelParameters[ i ].channel =
191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pScanVals->channelEntry[ i ].normalChannelEntry.channel;
192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
194a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE7(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "RxCfg = 0x%x\n                             RxFilterCfg = 0x%x\n                             scanOptions = 0x%x\n                             numChannels = %d\n                             probeNumber = %d\n                             probeRateModulation = 0x%x\n                             tidTrigger = %d\n" ,                               tnetScanParams.basicScanParameters.rxCfg.ConfigOptions,                               tnetScanParams.basicScanParameters.rxCfg.FilterOptions,                              tnetScanParams.basicScanParameters.scanOptions,                               tnetScanParams.basicScanParameters.numChannels,                               tnetScanParams.basicScanParameters.numOfProbRqst,                              tnetScanParams.basicScanParameters.txdRateSet,                               tnetScanParams.basicScanParameters.tidTrigger);
195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Channel      BSSID           MinTime     MaxTime     ET     TxPower   probChan\n");
197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    for( i=0; i < pScanVals->numOfChannels; i++)
199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        chanPtr = &tnetScanParams.basicScanChannelParameters[i];
201a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pBSSID = (TI_UINT8*)&chanPtr->bssIdL;
202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 		TRACE12(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "%06d   %02x:%02x:%02x:%02x:%02x:%02x    %05d %05d %02d %05d %05d\n",i, pBSSID[5],pBSSID[4],pBSSID[3],pBSSID[2],pBSSID[1],pBSSID[0], chanPtr->scanMinDuration, chanPtr->scanMaxDuration, chanPtr->ETCondCount, chanPtr->txPowerAttenuation, chanPtr->channel);
204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeStartScan (hCmdBld, &tnetScanParams, ScanCommandResponseCB, hCb);
207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_CmdStartSPSScan
211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Build a start SPS scan command and send it to the FW
212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Build a start SPS scan command and send it to the FW
214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  pScanVals - scan parameters
217a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  eScanTag - scan tag used for scan complete and result tracking
218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  fScanCommandResponseCB - command complete CB
219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCb - command complete CB
220a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return command status (OK / NOK)
221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_CmdStopSPSScan
222a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
223a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdStartSPSScan (TI_HANDLE hCmdBld, TScanParams *pScanVals, EScanResultTag eScanTag,
224a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                  void* fScanCommandResponseCB, TI_HANDLE hCb)
225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld  *pCmdBld = (TCmdBld *)hCmdBld;
227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    ScheduledScanParameters_t   tnetSPSScanParams;
228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_INT32 i;
229a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Convert general scan data to TNET structure */
231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.scanOptions = SCAN_PASSIVE;
232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Add the band selection */
233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if ( RADIO_BAND_5_0_GHZ == pScanVals->band )
234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
235a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetSPSScanParams.scheduledGeneralParameters.band = RADIO_BAND_5GHZ;
236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    else
238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetSPSScanParams.scheduledGeneralParameters.band = RADIO_BAND_2_4_GHZ;
240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
242a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.scanOptions = ENDIAN_HANDLE_WORD( tnetSPSScanParams.scheduledGeneralParameters.scanOptions );
244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* important note: BSSID filter (0x0010) is DISABLED, because the FW sets it according
246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt       to BSSID value (broadcast does not filter, any other value will */
247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* If the SSID is not broadcast SSID, also filter according to SSID */
248a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.rxCfg.ConfigOptions = ENDIAN_HANDLE_LONG(RX_CONFIG_OPTION);
249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.rxCfg.FilterOptions = ENDIAN_HANDLE_LONG( RX_FILTER_CFG_ );
250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.rxCfg.ConfigOptions = ENDIAN_HANDLE_LONG( tnetSPSScanParams.scheduledGeneralParameters.rxCfg.ConfigOptions );
251a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* latest TSF value - used to discover TSF error (AP recovery) */
253a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.scanCmdTime_h = ENDIAN_HANDLE_LONG( INT64_HIGHER(pScanVals->latestTSFValue) );
254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.scanCmdTime_l = ENDIAN_HANDLE_LONG( INT64_LOWER(pScanVals->latestTSFValue) );
255a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* add scan tag */
257a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.scanTag = eScanTag;
258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tnetSPSScanParams.scheduledGeneralParameters.numChannels = pScanVals->numOfChannels;
260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* copy channel specific scan data to HAL structure */
262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    for ( i = 0; i < pScanVals->numOfChannels; i++ )
263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
264a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TI_INT32 j;
265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TI_UINT8*  macAddr;
266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        macAddr = (TI_UINT8*)&tnetSPSScanParams.scheduledChannelParameters[ i ].bssIdL;
268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* copy the MAC address, upside down (CHIP structure) */
270a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        for ( j = 0; j < MAC_ADDR_LEN; j++ )
271a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            macAddr[ j ] = pScanVals->channelEntry[ i ].normalChannelEntry.bssId[ MAC_ADDR_LEN - 1 - j ];
273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetSPSScanParams.scheduledChannelParameters[ i ].scanMaxDuration =
275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            ENDIAN_HANDLE_LONG( pScanVals->channelEntry[ i ].SPSChannelEntry.scanDuration );
276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetSPSScanParams.scheduledChannelParameters[ i ].scanStartTime =
277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            ENDIAN_HANDLE_LONG( pScanVals->channelEntry[ i ].SPSChannelEntry.scanStartTime );
278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetSPSScanParams.scheduledChannelParameters[ i ].ETCondCount =
279a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pScanVals->channelEntry[ i ].SPSChannelEntry.ETMaxNumOfAPframes |
280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pScanVals->channelEntry[ i ].SPSChannelEntry.earlyTerminationEvent;
281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tnetSPSScanParams.scheduledChannelParameters[ i ].channel =
282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pScanVals->channelEntry[ i ].SPSChannelEntry.channel;
283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "RxCfg = 0x%x\n                             RxFilterCfg = 0x%x\n                             scanOptions = 0x%x\n                             numChannels = %d\n", tnetSPSScanParams.scheduledGeneralParameters.rxCfg.ConfigOptions, tnetSPSScanParams.scheduledGeneralParameters.rxCfg.FilterOptions, tnetSPSScanParams.scheduledGeneralParameters.scanOptions, tnetSPSScanParams.scheduledGeneralParameters.numChannels);
286a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Channel      BSSID           StartTime     Duration     ET     probChan\n");
288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG
290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    for( i=0; i < tnetSPSScanParams.scheduledGeneralParameters.numChannels; i++)
291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        ScheduledChannelParameters_t* chanPtr = &tnetSPSScanParams.scheduledChannelParameters[ i ];
293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TI_UINT8* pBSSID = (TI_UINT8*)&chanPtr->bssIdL;
294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TRACE11(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "%6d   %02x:%02x:%02x:%02x:%02x:%02x    %5d %5d %2d %5d\n",i, pBSSID[5],pBSSID[4],pBSSID[3],pBSSID[2],pBSSID[1],pBSSID[0], chanPtr->scanStartTime, chanPtr->scanMaxDuration, chanPtr->ETCondCount, chanPtr->channel);
296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* TI_DBG */
298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
299a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeStartSPSScan (hCmdBld, &tnetSPSScanParams, fScanCommandResponseCB, hCb);
300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_CmdStopScan
304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Build a stop scan command and send it to FW
305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Build a stop scan command and send it to FW
307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  eScanTag - scan tag, used for scan complete and result tracking
310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return command status (OK / NOK)
311a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_CmdStartSPSScan
312a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
313a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdStopScan (TI_HANDLE hCmdBld, EScanResultTag eScanTag,
314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                              void *fScanCommandResponseCB, TI_HANDLE hCb)
315a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeStopScan (hCmdBld, fScanCommandResponseCB, hCb);
317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
320a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_CmdStopSPSScan
322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Build a stop SPS scan command and send it to FW
323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
324a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Build a stop SPS scan command and send it to FW
325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  eScanTag - scan tag, used for scan complete and result tracking
328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return command status (OK / NOK)
329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_CmdStartScan
330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ TI_STATUS cmdBld_CmdStopSPSScan (TI_HANDLE hCmdBld, EScanResultTag eScanTag,
331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 void* fScanCommandResponseCB, TI_HANDLE hCb)
332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeStopSPSScan (hCmdBld, fScanCommandResponseCB, hCb);
334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
336a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSetSplitScanTimeOut (TI_HANDLE hCmdBld, TI_UINT32 uTimeOut)
337a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
338a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_WLAN(hCmdBld).uSlicedScanTimeOut = uTimeOut;
339a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
340a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return cmdBld_CmdIeSetSplitScanTimeOut (hCmdBld, uTimeOut, NULL, NULL);
341a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
342a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
343a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
344a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_debugPrintPeriodicScanChannles
345a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Print periodic scan channel list for debug purposes
346a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
347a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Print periodic scan channel list for debug purposes
348a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
349a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
350a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  pChannel - pointer to the channel list to print
351a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  uChannelCount - number of channles to print
352a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return None
353a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_debugPrintPeriodicScanParams
354a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
355a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid cmdBld_debugPrintPeriodicScanChannles (TI_HANDLE hCmdBld, ConnScanChannelInfo_t* pChannel,
356a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                            TI_UINT32 uChannelCount)
357a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
358a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld                 *pCmdBld = (TCmdBld *)hCmdBld;
359a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32               uIndex;
360a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
361a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Index  Channel  MinTime  MaxTime  DFStime  PowerLevel\n");
362a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "-------------------------------------------------------------------\n");
363a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    for (uIndex = 0; uIndex <  uChannelCount; uIndex++)
364a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
365a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TRACE6(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "%-10d %-10d %-10d %-10d %-10d %-11d\n", uIndex, pChannel[ uIndex ].channel, pChannel[ uIndex ].scanMinDuration, pChannel[ uIndex ].scanMaxDuration, pChannel[ uIndex ].passiveScanDuration, pChannel[ uIndex ].txPowerLevelDbm);
366a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
367a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
368a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
369a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
370a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_debugPrintPeriodicScanParams
371a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Print periodic scan parameters for debug purposes
372a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
373a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Print periodic scan parameters for debug purposes
374a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
375a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
376a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  pCommand - pointer to the periodic scan command to print
377a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return None
378a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_debugPrintPeriodicScanChannles
379a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
380a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid cmdBld_debugPrintPeriodicScanParams (TI_HANDLE hCmdBld, ConnScanParameters_t* pCommand)
381a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
382a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld                 *pCmdBld = (TCmdBld *)hCmdBld;
383a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
384a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* print periodic scan params command */
385a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Cycle intervals:\n");
386a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE8(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "0:  %-6d %-6d %-6d %-6d %-6d %-6d %-6d %-6d\n", pCommand->cycleIntervals[ 0 ], pCommand->cycleIntervals[ 1 ], pCommand->cycleIntervals[ 2 ], pCommand->cycleIntervals[ 3 ], pCommand->cycleIntervals[ 4 ], pCommand->cycleIntervals[ 5 ], pCommand->cycleIntervals[ 6 ], pCommand->cycleIntervals[ 7 ]);
387a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE8(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "8:  %-6d %-6d %-6d %-6d %-6d %-6d %-6d %-6d\n", pCommand->cycleIntervals[ 8 ], pCommand->cycleIntervals[ 9 ], pCommand->cycleIntervals[ 10 ], pCommand->cycleIntervals[ 11 ], pCommand->cycleIntervals[ 12 ], pCommand->cycleIntervals[ 13 ], pCommand->cycleIntervals[ 14 ], pCommand->cycleIntervals[ 15 ]);
388a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "RSSI threshold: %d, SNR threshold: %d, number of cycles: %d, reporth threshold: %d\n", pCommand->rssiThreshold, pCommand->snrThreshold, pCommand->maxNumOfCycles, pCommand->reportThreshold);
389a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Terminate on report: %d, result tag: %d, BSS type: %d, number of probe requests: %d\n", pCommand->terminateOnReport, pCommand->resultsTag, pCommand->bssType, pCommand->numProbe);
390a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "SSID filter type: %d, SSID length: %d, SSID: \n", pCommand->ssidFilterType, pCommand->ssidLength);
391a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* print channel info */
392a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
393a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "2.4 GHz Channels:\n");
394a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "-----------------\n");
395a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Number of passive channels: %d, number of active channels: %d\n", pCommand->numOfPassive[ 0 ], pCommand->numOfActive[ 0 ]);
396a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    cmdBld_debugPrintPeriodicScanChannles (hCmdBld, &(pCommand->channelList[ 0 ]),
397a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                           pCommand->numOfPassive[ 0 ] +
398a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                           pCommand->numOfActive[ 0 ]);
399a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "5.0 GHz Channels:\n");
400a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "-----------------\n");
401a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Number of passive channels: %d, number of DFS channels: %d, number of active channels: %d\n", pCommand->numOfPassive[ 1 ], pCommand->numOfDfs, pCommand->numOfActive[ 2 ]);
402a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    cmdBld_debugPrintPeriodicScanChannles (hCmdBld, &(pCommand->channelList[ CONN_SCAN_MAX_CHANNELS_BG ]),
403a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                           pCommand->numOfPassive[ 1 ] +
404a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                           pCommand->numOfActive[ 1 ] +
405a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                           pCommand->numOfDfs);
406a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "4.9 GHz channles:\n");
407a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "-----------------\n");
408a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Number of passive channels: %d, number of active channels: %d\n", pCommand->numOfPassive[ 2 ], pCommand->numOfActive[ 2 ]);
409a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    cmdBld_debugPrintPeriodicScanChannles (hCmdBld, &(pCommand->channelList[ CONN_SCAN_MAX_CHANNELS_BG + CONN_SCAN_MAX_CHANNELS_A ]),
410a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                           pCommand->numOfPassive[ 2 ] +
411a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                           pCommand->numOfActive[ 2 ]);
412a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
413a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
414a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
415a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_debugPrintPeriodicScanSsidList
416a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Print periodic scan SSID list for debug purposes
417a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
418a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Print periodic scan SSID list for debug purposes
419a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
420a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
421a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  pCommand - pointer to the periodic scan SSID list command to print
422a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return None
423a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_debugPrintPeriodicScanParams
424a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
425a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid cmdBld_debugPrintPeriodicScanSsidList (TI_HANDLE hCmdBld, ConnScanSSIDList_t* pCommand)
426a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
427a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld                 *pCmdBld = (TCmdBld *)hCmdBld;
428a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32               uIndex;
429a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
430a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* print SSID list command */
431a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "SSID list:\n");
432a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "---------\n");
433a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Num of entries: %d\n", pCommand->numOfSSIDEntries);
434a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    for (uIndex = 0; uIndex < pCommand->numOfSSIDEntries; uIndex++)
435a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
436a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "index: %d, SSID type: %d, SSID length:% d, SSID string:\n", uIndex, pCommand->SSIDList[ uIndex ].ssidType, pCommand->SSIDList[ uIndex ].ssidLength);
437a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
438a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
439a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
440a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
441a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
442a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_BuildPeriodicScanChannlesn
443a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Copy channels info for periodic scan to FW structure for a specific band and scan type
444a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
445a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copy channels info, from driver structure, to FW structure, for periodic scan, for a specific
446a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * band and scan type.
447a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
448a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  pPeriodicScanParams - driver priodic scan parameters (source)
449a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  pChannelList - FW scan channel list (destination)
450a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  eScanType - scan type (passive or active)
451a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  eRadioBand - band (G, A or J)
452a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  uPassiveScanDfsDwellTime - Dwell time for passive scan on DFS channels (in milli-secs)
453a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return Number of channels found for this scan type and band
454a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_StartPeriodicScan
455a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
456a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_UINT32 cmdBld_BuildPeriodicScanChannles (TPeriodicScanParams *pPeriodicScanParams,
457a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                            ConnScanChannelInfo_t *pChannelList,
458a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                            EScanType eScanType, ERadioBand eRadioBand,
459a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                            TI_UINT32 uPassiveScanDfsDwellTime)
460a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
461a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32       uIndex, uNumChannels = 0;
462a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
463a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* check all channels */
464a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    for (uIndex = 0; uIndex < pPeriodicScanParams->uChannelNum; uIndex++)
465a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
466a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* if this channel is on the required band and uses the required scan type */
467a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        if ((eRadioBand == pPeriodicScanParams->tChannels[ uIndex ].eBand) &&
468a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            (eScanType == pPeriodicScanParams->tChannels[ uIndex ].eScanType))
469a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
470a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            /* update scan parameters */
471a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pChannelList[ uNumChannels ].channel = (TI_UINT8)pPeriodicScanParams->tChannels[ uIndex ].uChannel;
472a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pChannelList[ uNumChannels ].scanMaxDuration =
473a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                ENDIAN_HANDLE_WORD ((TI_UINT16)pPeriodicScanParams->tChannels[ uIndex ].uMaxDwellTimeMs);
474a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pChannelList[ uNumChannels ].scanMinDuration =
475a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                ENDIAN_HANDLE_WORD ((TI_UINT16)pPeriodicScanParams->tChannels[ uIndex ].uMinDwellTimeMs);
476a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pChannelList[ uNumChannels ].txPowerLevelDbm = (TI_UINT8)pPeriodicScanParams->tChannels[ uIndex ].uTxPowerLevelDbm;
477a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            if (SCAN_TYPE_PACTSIVE == eScanType) /* DFS channel */
478a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {
479a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                pChannelList[ uNumChannels ].passiveScanDuration = ENDIAN_HANDLE_WORD ((TI_UINT16)uPassiveScanDfsDwellTime);
480a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                pChannelList[ uNumChannels ].channelFlags = 1; /* mark as DFS channel */
481a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            }
482a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            else
483a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {
484a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                pChannelList[ uNumChannels ].passiveScanDuration = ENDIAN_HANDLE_WORD ((TI_UINT16)pPeriodicScanParams->tChannels[ uIndex ].uMaxDwellTimeMs);
485a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                pChannelList[ uNumChannels ].channelFlags = 0; /* mark as not DFS channel */
486a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            }
487a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
488a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            /* advance mathcing channel counter */
489a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            uNumChannels++;
490a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
491a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
492a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
493a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* return channel count */
494a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return uNumChannels;
495a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
496a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
497a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
498a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_StartPeriodicScan
499a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Copy driver periodic scan parameters to FW structures and send all commands to FW
500a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
501a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copy driver periodic scan parameters to FW structures (SSID list, parameters including channels
502a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * and start command) and send all commands to FW.
503a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
504a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
505a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  pPeriodicScanParams - periodic scan driver parameters (source)
506a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  eScanTag - scan tag, used for scan complete and result tracking
507a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  uPassiveScanDfsDwellTimeUs - Passive dwell time for DFS channels
508a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  fScanCommandResponseCB - scan command complete CB
509a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCb - scan command response handle
510a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return TI_OK on success, other codes indicate failure
511a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_BuildPeriodicScanChannles, cmdBld_StopPeriodicScan
512a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
513a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_StartPeriodicScan (TI_HANDLE hCmdBld, TPeriodicScanParams *pPeriodicScanParams,
514a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                    EScanResultTag eScanTag, TI_UINT32 uPassiveScanDfsDwellTimeMs,
515a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                    void* fScanCommandResponseCB, TI_HANDLE hCb)
516a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
517a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld                         *pCmdBld = (TCmdBld *)hCmdBld;
518a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    ConnScanParameters_t            tFWPeriodicScanParams;
519a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    ConnScanSSIDList_t              *pFWSsidList;
520a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    PeriodicScanTag                 tScanStart;
521a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32                       uIndex;
522a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_STATUS                       tStatus;
523a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
524a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Building start periodic scan commands:\n");
525a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "--------------------------------------\n");
526a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* copy parameters to FW structure */
527a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.bssType = (ScanBssType_e)pPeriodicScanParams->eBssType;
528a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    for (uIndex = 0; uIndex < PERIODIC_SCAN_MAX_INTERVAL_NUM; uIndex ++)
529a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
530a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tFWPeriodicScanParams.cycleIntervals[ uIndex ] =
531a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            ENDIAN_HANDLE_LONG (pPeriodicScanParams->uCycleIntervalMsec[ uIndex ]);
532a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
533a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.maxNumOfCycles = (TI_UINT8)pPeriodicScanParams->uCycleNum;
534a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.numProbe = (TI_UINT8)pPeriodicScanParams->uProbeRequestNum;
535a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.reportThreshold = (TI_UINT8)pPeriodicScanParams->uFrameCountReportThreshold;
536a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.rssiThreshold = (TI_UINT8)pPeriodicScanParams->iRssiThreshold;
537a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.snrThreshold = (TI_INT8)pPeriodicScanParams->iSnrThreshold;
538a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.terminateOnReport = (TI_UINT8)pPeriodicScanParams->bTerminateOnReport;
539a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.resultsTag = (TI_UINT8)eScanTag;
540a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    switch (pPeriodicScanParams->uSsidNum)
541a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
542a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case 0: /* No SSIDs defined - no need to filter according to SSID */
543a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tFWPeriodicScanParams.ssidFilterType = (ScanSsidFilterType_e)SCAN_SSID_FILTER_TYPE_ANY;
544a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tFWPeriodicScanParams.ssidLength = 0;
545a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
546a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
547a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    default: /* More than one SSID - copy SSIDs to SSID list command */
548a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pFWSsidList = os_memoryAlloc(pCmdBld->hOs, sizeof(ConnScanSSIDList_t));
549a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        if (!pFWSsidList)
550005bbf20350954d05c8a111d3f487d6fddb049bbDmitry Shmidt        {
551a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return TI_NOK;
552005bbf20350954d05c8a111d3f487d6fddb049bbDmitry Shmidt        }
553a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
554a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        if ((TI_UINT8)pPeriodicScanParams->uSsidListFilterEnabled == 1)
555a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	        tFWPeriodicScanParams.ssidFilterType = (ScanSsidFilterType_e)SCAN_SSID_FILTER_TYPE_LIST;
556a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		else
557a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	        tFWPeriodicScanParams.ssidFilterType = (ScanSsidFilterType_e)SCAN_SSID_FILTER_TYPE_LIST_FILTER_DISABLED;
558a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tFWPeriodicScanParams.ssidLength = 0;
559a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pFWSsidList->numOfSSIDEntries = (TI_UINT8)pPeriodicScanParams->uSsidNum;
560a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        for (uIndex = 0; uIndex < pPeriodicScanParams->uSsidNum; uIndex++)
561a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
562a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pFWSsidList->SSIDList[ uIndex ].ssidType =
563a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                (TI_UINT8)pPeriodicScanParams->tDesiredSsid[ uIndex ].eVisability;
564a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pFWSsidList->SSIDList[ uIndex ].ssidLength =
565a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                (TI_UINT8)pPeriodicScanParams->tDesiredSsid[ uIndex ].tSsid.len;
566a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            os_memoryCopy (pCmdBld->hOs, (void*)&(pFWSsidList->SSIDList[ uIndex ].ssid[ 0 ]),
567a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                           (void*)&(pPeriodicScanParams->tDesiredSsid[ uIndex ].tSsid.str[ 0 ]),
568a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                           pFWSsidList->SSIDList[ uIndex ].ssidLength);
569a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
570a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
571a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* print the SSID list parameters */
572a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        cmdBld_debugPrintPeriodicScanSsidList (hCmdBld, pFWSsidList);
573a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
574a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* send the SSID list command */
575a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        tStatus = cmdBld_CmdIeScanSsidList (hCmdBld, pFWSsidList, NULL, NULL);
576a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        os_memoryFree(pCmdBld->hOs, pFWSsidList, sizeof(ConnScanSSIDList_t));
577a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        if (TI_OK != tStatus)
578a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
579a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR , "cmdBld_StartPeriodicScan: status %d when configuring SSID list", tStatus);
580a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return tStatus;
581a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
582a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
583a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
584a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
585a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* copy channels */
586a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.numOfPassive[ 0 ] =  /* build passive B/G channels */
587a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ 0 ]),
588a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                          SCAN_TYPE_NORMAL_PASSIVE, RADIO_BAND_2_4_GHZ, uPassiveScanDfsDwellTimeMs);
589a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.numOfActive[ 0 ] = /* build active B/G channels */
590a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ tFWPeriodicScanParams.numOfPassive[ 0 ] ]),
591a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                          SCAN_TYPE_NORMAL_ACTIVE, RADIO_BAND_2_4_GHZ, uPassiveScanDfsDwellTimeMs);
592a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.numOfPassive[ 1 ] = /* build passive A channels */
593a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ CONN_SCAN_MAX_CHANNELS_BG ]),
594a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                          SCAN_TYPE_NORMAL_PASSIVE, RADIO_BAND_5_0_GHZ, uPassiveScanDfsDwellTimeMs);
595a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.numOfDfs = /* build DFS A channels */
596a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ CONN_SCAN_MAX_CHANNELS_BG + tFWPeriodicScanParams.numOfPassive[ 1 ] ]),
597a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                          SCAN_TYPE_PACTSIVE, RADIO_BAND_5_0_GHZ, uPassiveScanDfsDwellTimeMs);
598a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.numOfActive[ 1 ] = /* build active A channels */
599a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ CONN_SCAN_MAX_CHANNELS_BG + tFWPeriodicScanParams.numOfPassive[ 1 ] + tFWPeriodicScanParams.numOfDfs ]),
600a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                          SCAN_TYPE_NORMAL_ACTIVE, RADIO_BAND_5_0_GHZ, uPassiveScanDfsDwellTimeMs);
601a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
602a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* until J is supported, mark zero channels for J passive and active */
603a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.numOfPassive[ 2 ] = 0;
604a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tFWPeriodicScanParams.numOfActive[ 2 ] = 0;
605a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
606a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* print the command */
607a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    cmdBld_debugPrintPeriodicScanParams (hCmdBld, &tFWPeriodicScanParams);
608a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
609a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Send the periodic scan parameters command */
610a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tStatus = cmdBld_CmdIePeriodicScanParams (hCmdBld, &tFWPeriodicScanParams, NULL, NULL);
611a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if (TI_OK != tStatus)
612a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
613a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR , "cmdBld_StartPeriodicScan: status %d when configuring periodic scan parameters", tStatus);
614a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        return tStatus;
615a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
616a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
617a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* send the periodic scan start command */
618a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tScanStart.scanTag = eScanTag;
619a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tStatus = cmdBld_CmdIeStartPeriodicScan (hCmdBld, &tScanStart, fScanCommandResponseCB, hCb);
620a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return tStatus;
621a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
622a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
623a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
624a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn     cmdBld_StopPeriodicScan
625a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief  Stops an on-going periodic scan operation
626a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
627a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Stops an on-going periodic scan operation
628a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
629a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCmdBld - handle to the command builder object
630a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  eScanTag - scan tag, used for scan complete and result tracking
631a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  fScanCommandResponseCB - scan command complete CB
632a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param  hCb - scan command response handle
633a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return TI_OK on success, other codes indicate failure
634a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa     cmdBld_BuildPeriodicScanChannles, cmdBld_StartPeriodicScan
635a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
636a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_StopPeriodicScan (TI_HANDLE hCmdBld, EScanResultTag eScanTag,
637a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                   void* fScanCommandResponseCB, TI_HANDLE hCb)
638a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
639a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    PeriodicScanTag tScanStop;
640a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
641a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* send the periodic scan stop command */
642a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tScanStop.scanTag = eScanTag;
643a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeStopPeriodicScan (hCmdBld, &tScanStop, fScanCommandResponseCB, hCb);
644a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
645a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
646a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
647a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_SetBssType()
648a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
649a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set Bss type, set RxFilter
650a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
651a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
652a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
653a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
654a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
655a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
656a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
657a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS cmdBld_CmdSetBssType (TI_HANDLE hCmdBld, ScanBssType_e BssType, TI_UINT8 *HwBssType)
658a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
659a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
660a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
661a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    switch (BssType)
662a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
663a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case BSS_INFRASTRUCTURE:
664a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        DB_BSS(hCmdBld).BssType = BSS_TYPE_STA_BSS;
665a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        cmdBld_SetRxFilter (hCmdBld, RX_CONFIG_OPTION_FOR_JOIN, RX_FILTER_OPTION_JOIN);
666a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
667a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
668a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case BSS_INDEPENDENT:
669a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        DB_BSS(hCmdBld).BssType = BSS_TYPE_IBSS;
670a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        cmdBld_SetRxFilter (hCmdBld, RX_CONFIG_OPTION_FOR_IBSS_JOIN, RX_FILTER_OPTION_DEF);
671a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
672a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
673a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    default:
674a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TRACE1(pCmdBld->hReport, REPORT_SEVERITY_FATAL_ERROR, "cmdBld_SetBssType: FATAL_ERROR, unknown BssType %d\n", BssType);
675a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        return TI_NOK;
676a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
677a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
678a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    *HwBssType = DB_BSS(hCmdBld).BssType;
679a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
680a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return TI_OK;
681a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
682a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
683a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
684a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
685a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_StartJoin()
686a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
687a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Enable Rx/Tx and send Start/Join command
688a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
689a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
690a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
691a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
692a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
693a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
694a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
695a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdStartJoin (TI_HANDLE hCmdBld, ScanBssType_e BssType, void *fJoinCompleteCB, TI_HANDLE hCb)
696a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
697a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8  HwBssType = 0;
698a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG
699a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld  *pCmdBld = (TCmdBld *)hCmdBld;
700a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8 *pBssId = DB_BSS(hCmdBld).BssId;
701a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
702a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INIT, "cmdBld_StartJoin: Enable Tx, Rx and Start the Bss, type=%d\n", BssType);
703a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INIT, "------------------------------------------------------------\n");
704a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE7(pCmdBld->hReport, REPORT_SEVERITY_INIT, "START/JOIN, SSID=, BSSID=%02X-%02X-%02X-%02X-%02X-%02X, Chan=%d\n", pBssId[0], pBssId[1], pBssId[2], pBssId[3], pBssId[4], pBssId[5], DB_BSS(hCmdBld).RadioChannel);
705a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INIT, "------------------------------------------------------------\n");
706a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* TI_DBG */
707a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
708a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /*
709a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     * set RxFilter (but don't write it to the FW, this is done in the join command),
710a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     * Configure templates content, ...
711a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     */
712a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    cmdBld_CmdSetBssType (hCmdBld, BssType, &HwBssType);
713a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
714a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeStartBss (hCmdBld, HwBssType, fJoinCompleteCB, hCb);
715a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
716a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
717a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
718a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdJoinBss (TI_HANDLE hCmdBld, TJoinBss *pJoinBssParams, void *fCb, TI_HANDLE hCb)
719a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
720a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld        *pCmdBld = (TCmdBld *)hCmdBld;
721a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TWlanParams    *pWlanParams = &DB_WLAN(hCmdBld);
722a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TBssInfoParams *pBssInfoParams = &DB_BSS(hCmdBld);
723a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG
724a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8 dbgSsidStr[33];
725a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* TI_DBG */
726a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
727a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* for debug purpose, can be removed later*/
728a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if (pJoinBssParams->ssidLength > 32)
729a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pJoinBssParams->ssidLength = 32;
730a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
731a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Update Tx-Session-Counter in the Ctrl field of the Join command. */
732a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pBssInfoParams->Ctrl &= ~JOIN_CMD_CTRL_TX_SESSION;
733a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pBssInfoParams->Ctrl |= (TI_UINT8)(pJoinBssParams->txSessionCount << JOIN_CMD_CTRL_OFFSET_TX_SESSION);
734a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
735a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG
736a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    os_memoryCopy (pCmdBld->hOs, (void *)dbgSsidStr, (void *)pJoinBssParams->pSSID, pJoinBssParams->ssidLength);
737a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    dbgSsidStr[pJoinBssParams->ssidLength] = '\0';
738a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
739a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE14(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "TWD_JoinBss : bssType = %d, beaconInterval = %d, dtimInterval = %d, channel = %d, BSSID = %x-%x-%x-%x-%x-%x, ssidLength = %d, basicRateSet = 0x%x, RadioBand = %d, Ctrl = 0x%x", pJoinBssParams->bssType, pJoinBssParams->beaconInterval, pJoinBssParams->dtimInterval, pJoinBssParams->channel, pJoinBssParams->pBSSID[0], pJoinBssParams->pBSSID[1], pJoinBssParams->pBSSID[2], pJoinBssParams->pBSSID[3], pJoinBssParams->pBSSID[4], pJoinBssParams->pBSSID[5], pJoinBssParams->ssidLength, pJoinBssParams->basicRateSet, pJoinBssParams->radioBand, pBssInfoParams->Ctrl);
740a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* TI_DBG */
741a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /*
742a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     * save Bss info parameters
743a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     */
744a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_BSS(hCmdBld).ReqBssType = pJoinBssParams->bssType;
745a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MAC_COPY (DB_BSS(hCmdBld).BssId, pJoinBssParams->pBSSID);
746a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pBssInfoParams->tSsid.len = pJoinBssParams->ssidLength;
747a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    os_memoryZero (pCmdBld->hOs, (void *)pBssInfoParams->tSsid.str, sizeof (pBssInfoParams->tSsid.str));
748a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    os_memoryCopy (pCmdBld->hOs, (void *)pBssInfoParams->tSsid.str, (void *)pJoinBssParams->pSSID, pJoinBssParams->ssidLength);
749a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_BSS(hCmdBld).BeaconInterval = pJoinBssParams->beaconInterval;
750a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_BSS(hCmdBld).DtimInterval = (TI_UINT8)pJoinBssParams->dtimInterval;
751a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_BSS(hCmdBld).RadioChannel = pJoinBssParams->channel;
752a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_WLAN(hCmdBld).RadioBand = (TI_UINT8)pJoinBssParams->radioBand;
753a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_BSS(hCmdBld).BasicRateSet = pJoinBssParams->basicRateSet;
754a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
755a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* In case we're joining a new BSS, reset the TKIP/AES sequence counter. */
756a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* The firmware resets its own counter - so we won't have mismatch in the following TX complete events */
757a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pCmdBld->uSecuritySeqNumLow = 0;
758a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pCmdBld->uSecuritySeqNumHigh = 0;
759a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
760a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pWlanParams->bJoin = TI_TRUE;
761a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pWlanParams->bStaConnected = TI_FALSE;
762a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /*
763a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     * call the hardware to start/join the bss
764a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     */
765a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdStartJoin (hCmdBld, pJoinBssParams->bssType, fCb, hCb);
766a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
767a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
768a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
769a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdTemplate (TI_HANDLE hCmdBld, TSetTemplate *pTemplateParams, void *fCb, TI_HANDLE hCb)
770a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
771a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld   *pCmdBld = (TCmdBld *)hCmdBld;
772a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_STATUS  Stt;
773a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TTemplateParams *pTemplate;
774a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8   uIndex = 0;
775a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TemplateType_e eType;
776a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
777a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_CmdTemplate: Type=%d, size=%d, index=%d, RateMask=0x%x\n", pTemplateParams->type, pTemplateParams->len, pTemplateParams->index, pTemplateParams->uRateMask);
778a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
779a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    switch (pTemplateParams->type)
780a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
781a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case BEACON_TEMPLATE:
782a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        eType = TEMPLATE_BEACON;
783a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pTemplate = &(DB_TEMP(hCmdBld).Beacon);
784a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
785a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
786a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case PROBE_RESPONSE_TEMPLATE:
787a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        eType = TEMPLATE_PROBE_RESPONSE;
788a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pTemplate = &(DB_TEMP(hCmdBld).ProbeResp);
789a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
790a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
791a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case PROBE_REQUEST_TEMPLATE:
792a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        if (pTemplateParams->eBand == RADIO_BAND_2_4_GHZ)
793a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
794a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            eType = CFG_TEMPLATE_PROBE_REQ_2_4;
795a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pTemplate = &(DB_TEMP(hCmdBld).ProbeReq24);
796a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
797a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        else
798a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
799a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            eType = CFG_TEMPLATE_PROBE_REQ_5;
800a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pTemplate = &(DB_TEMP(hCmdBld).ProbeReq50);
801a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
802a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
803a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
804a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case NULL_DATA_TEMPLATE:
805a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        eType = TEMPLATE_NULL_DATA;
806a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pTemplate = &(DB_TEMP(hCmdBld).NullData);
807a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
808a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
809a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case PS_POLL_TEMPLATE:
810a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        eType = TEMPLATE_PS_POLL;
811a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pTemplate = &(DB_TEMP(hCmdBld).PsPoll);
812a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
813a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
814a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case QOS_NULL_DATA_TEMPLATE:
815a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        eType = TEMPLATE_QOS_NULL_DATA;
816a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pTemplate = &(DB_TEMP(hCmdBld).QosNullData);
817a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
818a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
819a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case KEEP_ALIVE_TEMPLATE:
820a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        eType = TEMPLATE_KLV;
821a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        uIndex = pTemplateParams->index;
822a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pTemplate = &(DB_TEMP(hCmdBld).KeepAlive[uIndex]);
823a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
824a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
825a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case DISCONN_TEMPLATE:
826a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        eType = TEMPLATE_DISCONNECT;
827a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pTemplate = &(DB_TEMP(hCmdBld).Disconn);
828a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
829a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
830a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    case ARP_RSP_TEMPLATE:
831a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        eType = TEMPLATE_ARP_RSP;
832a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pTemplate = &(DB_TEMP(hCmdBld).ArpRsp);
833a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        break;
834a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
835a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    default:
836a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TRACE1( pCmdBld->hReport, REPORT_SEVERITY_ERROR,
837a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                 "cmdBld_CmdTemplate. Invalid template type:%d\n", pTemplateParams->type);
838a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        return TI_NOK;
839a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
840a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
841a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Save template information to DB (for recovery) */
842a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pTemplate->Size = pTemplateParams->len;
843a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pTemplate->uRateMask = pTemplateParams->uRateMask;
844a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    os_memoryCopy (pCmdBld->hOs,
845a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                   (void *)(pTemplate->Buffer),
846a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                   (void *)(pTemplateParams->ptr),
847a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                   pTemplateParams->len);
848a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* if (eType == TEMPLATE_ARP_RSP)
849a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
850a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt       WLAN_OS_REPORT(("cmdBld_CmdTemplate: template (len=%d):\n>>>", pTemplate->Size));
851a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt       for (i=0; i<sizeof(ArpRspTemplate_t); i++ )
852a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt       {
853a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt           WLAN_OS_REPORT((" %2x", *(pTemplate->Buffer+i)));
854a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt           if (i%8 == 7) WLAN_OS_REPORT(("\n>>>"));
855a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt       }
856a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt         WLAN_OS_REPORT(("\n"));
857a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
858a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	*/
859a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Configure template to FW */
860a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    Stt = cmdBld_CmdIeConfigureTemplateFrame (hCmdBld,
861a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                              pTemplate,
862a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                              (TI_UINT16)pTemplateParams->len,
863a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                              eType,
864a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                              uIndex, /* index is only relevant for keep-alive template */
865a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                              fCb,
866a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                              hCb);
867a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
868a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* WLAN_OS_REPORT(("cmdBld_CmdTemplate: template %d config rc=%d\n", eType, Stt)); */
869a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return Stt;
870a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
871a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
872a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
873a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
874a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_switchChannel()
875a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
876a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Switching the serving channel
877a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
878a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: channel  -   new channel number
879a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
880a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
881a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
882a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
883a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
884a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdEnableTx (TI_HANDLE hCmdBld, TI_UINT8 channel, void *fCb, TI_HANDLE hCb)
885a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
886a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeEnableTx (hCmdBld, channel, fCb, hCb);
887a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
888a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
889a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
890a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
891a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_DisableTx()
892a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
893a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Disable Tx path.
894a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
895a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
896a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
897a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
898a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
899a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
900a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
901a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdDisableTx (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb)
902a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
903a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeDisableTx (hCmdBld, fCb, hCb);
904a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
905a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
906a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
907a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
908a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
909a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_SwitchChannelCmd()
910a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
911a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Send Switch Channel command
912a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
913a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
914a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
915a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
916a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
917a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
918a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
919a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSwitchChannel (TI_HANDLE hCmdBld, TSwitchChannelParams *pSwitchChannelCmd, void *fCb, TI_HANDLE hCb)
920a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
921a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
922a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
923a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "\n SwitchChannelCmd :\n                             channelNumber = %d\n                             switchTime = %d\n                             txFlag = %d\n                             flush = %d \n ", pSwitchChannelCmd->channelNumber, pSwitchChannelCmd->switchTime, pSwitchChannelCmd->txFlag, pSwitchChannelCmd->flush);
924a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
925a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_BSS(hCmdBld).RadioChannel = pSwitchChannelCmd->channelNumber;
926a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
927a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSwitchChannel (hCmdBld, pSwitchChannelCmd, fCb, hCb);
928a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
929a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
930a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
931a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
932a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_SwitchChannelCmd()
933a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
934a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Send Switch Channel command
935a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
936a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
937a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
938a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
939a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
940a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
941a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
942a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSwitchChannelCancel (TI_HANDLE hCmdBld, TI_UINT8 channel, void *fCb, TI_HANDLE hCb)
943a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
944a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
945a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
946a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "\n TWD_SwitchChannelCancelCmd :\n ");
947a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
948a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_BSS(hCmdBld).RadioChannel = channel;
949a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
950a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSwitchChannelCancel (hCmdBld, fCb, hCb);
951a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
952a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
953a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
954a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
955a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_FwDisconnect()
956a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
957a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Disconnect.
958a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
959a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
960a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
961a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
962a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
963a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
964a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
965a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdFwDisconnect (TI_HANDLE hCmdBld, TI_UINT32 uConfigOptions, TI_UINT32 uFilterOptions, DisconnectType_e uDisconType, TI_UINT16 uDisconReason, void *fCb, TI_HANDLE hCb)
966a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
967a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
968a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TWlanParams *pWlanParams = &DB_WLAN(hCmdBld);
969a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
970a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pWlanParams->bJoin = TI_FALSE;
971a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pWlanParams->bStaConnected = TI_FALSE;
972a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
973a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Sending FW disconnect, ConfigOptions=%x, FilterOPtions=%x, uDisconType=%d, uDisconReason=%d\n",uConfigOptions, uFilterOptions, uDisconType, uDisconReason);
974a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
975a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
976a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeFwDisconnect (hCmdBld, uConfigOptions, uFilterOptions, uDisconType, uDisconReason, fCb, hCb);
977a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
978a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
979a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
980a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdMeasurement (TI_HANDLE          hCmdBld,
981a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 TMeasurementParams *pMeasurementParams,
982a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 void               *fCommandResponseCB,
983a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 TI_HANDLE          hCb)
984a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
985a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeMeasurement (hCmdBld, pMeasurementParams, fCommandResponseCB, hCb);
986a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
987a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
988a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
989a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
990a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_measurementStop()
991a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
992a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: send Command for stoping measurement
993a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
994a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
995a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
996a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
997a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
998a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
999a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1000a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdMeasurementStop (TI_HANDLE hCmdBld, void* fMeasureCommandResponseCB, TI_HANDLE hCb)
1001a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1002a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
1003a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1004a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_measurementStop\n");
1005a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1006a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeMeasurementStop (hCmdBld, fMeasureCommandResponseCB, hCb);
1007a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1008a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1009a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1010a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1011a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_ApDiscovery()
1012a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1013a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: send Command for AP Discovery
1014a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *              to the mailbox
1015a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1016a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
1017a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1018a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
1019a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1020a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1021a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1022a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdApDiscovery (TI_HANDLE hCmdBld, TApDiscoveryParams *pApDiscoveryParams, void *fCb, TI_HANDLE hCb)
1023a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1024a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
1025a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1026a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ApDiscovery\n");
1027a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1028a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeApDiscovery (hCmdBld, pApDiscoveryParams, fCb, hCb);
1029a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1030a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1031a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1032a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1033a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_ApDiscoveryStop()
1034a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1035a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: send Command for stoping AP Discovery
1036a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1037a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
1038a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1039a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
1040a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1041a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1042a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1043a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdApDiscoveryStop (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb)
1044a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1045a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
1046a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1047a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ApDiscoveryStop\n");
1048a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1049a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeApDiscoveryStop (hCmdBld, fCb, hCb);
1050a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1051a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1052a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1053a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdNoiseHistogram (TI_HANDLE hCmdBld, TNoiseHistogram *pNoiseHistParams, void *fCb, TI_HANDLE hCb)
1054a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1055a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeNoiseHistogram (hCmdBld, pNoiseHistParams, fCb, hCb);
1056a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1057a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1058a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1059a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1060a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_PowerMgmtConfigurationSet ()
1061a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1062a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the ACX power management option IE
1063a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1064a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: powerSaveParams
1065a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1066a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1067a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1068a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1069a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1070a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSetPsMode (TI_HANDLE hCmdBld, TPowerSaveParams* powerSaveParams, void *fCb, TI_HANDLE hCb)
1071a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1072a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
1073a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1074a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Rate conversion is done in the HAL */
1075a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    cmdBld_ConvertAppRatesBitmap (powerSaveParams->NullPktRateModulation,
1076a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                  0,
1077a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                  &powerSaveParams->NullPktRateModulation);
1078a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1079a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE5(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, " cmdBld_PowerMgmtConfigurationSet  ps802_11Enable=0x%x hangOverPeriod=%d needToSendNullData=0x%x  numNullPktRetries=%d  NullPktRateModulation=0x%x\n", powerSaveParams->ps802_11Enable, powerSaveParams->hangOverPeriod, powerSaveParams->needToSendNullData, powerSaveParams->numNullPktRetries, powerSaveParams->NullPktRateModulation);
1080a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1081a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetPsMode (hCmdBld, powerSaveParams, fCb, hCb);
1082a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1083a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1084a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1085a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1086a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_EnableRx()
1087a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1088a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Enable Rx and send Start/Join command
1089a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1090a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
1091a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1092a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
1093a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1094a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1095a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1096a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdEnableRx (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb)
1097a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1098a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeEnableRx (hCmdBld, fCb, hCb);
1099a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1102a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddKey (TI_HANDLE hCmdBld, TSecurityKeys* pKey, TI_BOOL reconfFlag, void *fCb, TI_HANDLE hCb)
1103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
1105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8     keyIdx  = (TI_UINT8)pKey->keyIndex;
1106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* store the security key for reconfigure phase (FW reload)*/
1108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if (reconfFlag != TI_TRUE)
1109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
1110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        if (keyIdx >= (pCmdBld->tSecurity.uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION + NO_OF_EXTRA_RECONF_SECUR_KEYS))
1111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
1112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            TRACE2(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_CmdAddKey: ERROR Key keyIndex field out of range =%d, range is (0 to %d)\n", pKey->keyIndex, pCmdBld->tSecurity.uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION+NO_OF_EXTRA_RECONF_SECUR_KEYS - 1);
1113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return TI_NOK;
1115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
1116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        if (pKey->keyType == KEY_NULL)
1118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {
1119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_CmdAddKey: ERROR KeyType is NULL_KEY\n");
1120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return TI_NOK;
1122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
1123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        os_memoryCopy (pCmdBld->hOs,
1125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                       (void *)(DB_KEYS(pCmdBld).pReconfKeys + keyIdx),
1126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                       (void *)pKey,
1127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                       sizeof(TSecurityKeys));
1128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
1129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    switch (pCmdBld->tSecurity.eSecurityMode)
1131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
1132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case TWD_CIPHER_WEP:
1133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case TWD_CIPHER_WEP104:
1134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt				return cmdBld_CmdAddWepDefaultKey (hCmdBld, pKey, fCb, hCb);
1135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case TWD_CIPHER_TKIP:
1137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case TWD_CIPHER_AES_CCMP:
1138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        #ifdef GEM_SUPPORTED
1139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            case TWD_CIPHER_GEM:
1140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        #endif
1141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return cmdBld_CmdAddWpaKey (hCmdBld, pKey, fCb, hCb);
1142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        default:
1144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return TI_NOK;
1145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
1146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1149a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddWpaKey (TI_HANDLE hCmdBld, TSecurityKeys* pKey, void *fCb, TI_HANDLE hCb)
1150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
1152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Only WEP, TKIP, AES keys are handled*/
1154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    switch (pKey->keyType)
1155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
1156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case KEY_WEP:
1157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            /* Configure the encKeys to the HW - default keys cache*/
1158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return cmdBld_CmdAddWepDefaultKey (hCmdBld, pKey, fCb, hCb);
1159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case KEY_TKIP:
1161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            /* Set the REAL TKIP key into the TKIP key cache*/
1162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            if (cmdBld_CmdAddTkipMicMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK)
1163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                return TI_NOK;
1164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            break;
1166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case KEY_AES:
1168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            if (cmdBld_CmdAddAesMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK)
1169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                return TI_NOK;
1170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            break;
1171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        #ifdef GEM_SUPPORTED
1173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            case KEY_GEM:
1174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                if (cmdBld_CmdAddGemMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK)
1175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    return TI_NOK;
1176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                break;
1177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        #endif
1178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        default:
1180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return TI_NOK;
1181a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
1182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* AES or TKIP key has been successfully added. Store the current */
1184a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* key type of the unicast (i.e. transmit !) key                  */
1185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if (!MAC_BROADCAST (pKey->macAddress))
1186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
1187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        pCmdBld->tSecurity.eCurTxKeyType = pKey->keyType;
1188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
1189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return TI_OK;
1191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1194a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveWpaKey (TI_HANDLE hCmdBld, TSecurityKeys* pKey, void *fCb, TI_HANDLE hCb)
1195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Only WEP, TKIP, AES keys are handled*/
1197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    switch (pKey->keyType)
1198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
1199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case KEY_WEP:
1200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            /* Configure the encKeys to the HW - default keys cache*/
1201a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return cmdBld_CmdRemoveWepDefaultKey (hCmdBld, pKey, fCb, hCb);
1202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case KEY_TKIP:
1204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            /* Configure the encKeys to the HW - mapping keys cache*/
1205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            /* configure through SET_KEYS command */
1206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            /* remove the TKIP key from the TKIP key cache*/
1208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            if (cmdBld_CmdRemoveTkipMicMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK)
1209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                return (TI_NOK);
1210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            break;
1211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case KEY_AES:
1213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            if (cmdBld_CmdRemoveAesMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK)
1214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                return TI_NOK;
1215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            break;
1216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1217a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        #ifdef GEM_SUPPORTED
1218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            case KEY_GEM:
1219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                if (cmdBld_CmdRemoveGemMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK)
1220a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    return TI_NOK;
1221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                break;
1222a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        #endif
1223a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1224a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        default:
1225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return TI_NOK;
1226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
1227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return TI_OK;
1229a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
1233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * ----------------------------------------------------------------------------
1234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Function : cmdBld_CmdRemoveKey
1235a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Input    :
1237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Output   :
1238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Process  :
1239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Note(s)  :
1240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * -----------------------------------------------------------------------------
1241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
1242a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveKey (TI_HANDLE hCmdBld, TSecurityKeys* pKey, void *fCb, TI_HANDLE hCb)
1243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld  *pCmdBld = (TCmdBld *)hCmdBld;
1245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8  keyIdx  = (TI_UINT8)pKey->keyIndex;
1246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Clear the remove key in the reconfigure data base */
1248a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    (DB_KEYS(pCmdBld).pReconfKeys + keyIdx)->keyType = KEY_NULL;
1249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    switch (pCmdBld->tSecurity.eSecurityMode)
1251a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
1252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case TWD_CIPHER_WEP:
1253a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case TWD_CIPHER_WEP104:
1254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt				return cmdBld_CmdRemoveWepDefaultKey (hCmdBld, pKey, fCb, hCb);
1255a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case TWD_CIPHER_TKIP:
1256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        case TWD_CIPHER_AES_CCMP:
1257a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        #ifdef GEM_SUPPORTED
1258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            case TWD_CIPHER_GEM:
1259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        #endif
1260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return cmdBld_CmdRemoveWpaKey (hCmdBld, pKey, fCb, hCb);
1261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        default:
1263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            return TI_NOK;
1264a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
1265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_WepDefaultKeyAdd()
1270a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1271a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual default key
1272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1279a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddWepDefaultKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_STATUS  status;
1282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8   sMacAddrDummy[6]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Non WEP keys are trashed*/
1285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if (aSecurityKey->keyType != KEY_WEP)
1286a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
1287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        return TI_NOK;
1288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
1289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    status = cmdBld_CmdIeSetKey (hCmdBld,
1291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 KEY_ADD_OR_REPLACE,
1292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 sMacAddrDummy,
1293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 aSecurityKey->encLen,
1294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 CIPHER_SUITE_WEP,
1295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 aSecurityKey->keyIndex,
1296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 (TI_UINT8*)aSecurityKey->encKey,
1297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 0,
1298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 0,
1299a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 fCb,
1300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                                 hCb);
1301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return status;
1302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_WepDefaultKeyRemove()
1306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual default key
1308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1311a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1312a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1313a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1315a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSetWepDefaultKeyId (TI_HANDLE hCmdBld, TI_UINT8 aKeyIdVal, void *fCb, TI_HANDLE hCb)
1316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld  *pCmdBld          = (TCmdBld *)hCmdBld;
1318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8 sMacAddrDummy[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1320a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Save the deafult key ID for reconfigure phase */
1321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_KEYS(pCmdBld).bDefaultKeyIdValid  = TI_TRUE;
1322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DB_KEYS(pCmdBld).uReconfDefaultKeyId = aKeyIdVal;
1323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1324a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetKey (hCmdBld,
1325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_SET_ID,
1326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               sMacAddrDummy,
1327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               CIPHER_SUITE_WEP,
1329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aKeyIdVal,
1330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1336a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1337a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1338a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1339a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_WepDefaultKeyRemove()
1340a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1341a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual default key
1342a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1343a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1344a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1345a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1346a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1347a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1348a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1349a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveWepDefaultKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1350a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1351a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8  sMacAddrDummy[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1352a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1353a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Non WEP keys are trashed*/
1354a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if (aSecurityKey->keyType != KEY_WEP)
1355a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
1356a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        return TI_NOK;
1357a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
1358a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1359a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetKey (hCmdBld,
1360a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_REMOVE,
1361a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               sMacAddrDummy,
1362a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->encLen,
1363a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               CIPHER_SUITE_WEP,
1364a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1365a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->encKey,
1366a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1367a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1368a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1369a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1370a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1371a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1372a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1373a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_WepMappingKeyAdd()
1374a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1375a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual mapping key
1376a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1377a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1378a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1379a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1380a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1381a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1382a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1383a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddWepMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1384a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1385a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetKey (hCmdBld,
1386a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_ADD_OR_REPLACE,
1387a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->macAddress,
1388a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->encLen,
1389a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               CIPHER_SUITE_WEP,
1390a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1391a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->encKey,
1392a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1393a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1394a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1395a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1396a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1397a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1398a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1399a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_WepMappingKeyRemove()
1400a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1401a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual mapping key
1402a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1403a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1404a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1405a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1406a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1407a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1408a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1409a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveWepMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1410a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1411a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/*In the new security interface it is not allowed to remove uni-cast keys. it will be cleaned on the next join command*/
1412a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (!MAC_BROADCAST(aSecurityKey->macAddress) )
1413a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
1414a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_OK;
1415a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
1416a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetKey (hCmdBld,
1417a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_REMOVE,
1418a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->macAddress,
1419a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->encLen,
1420a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               CIPHER_SUITE_WEP,
1421a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1422a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->encKey,
1423a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1424a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1425a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1426a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1427a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1428a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1429a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1430a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1431a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_TkipMicMappingKeyAdd()
1432a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1433a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual mapping key
1434a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1435a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1436a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1437a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1438a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1439a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1440a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1441a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddTkipMicMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1442a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1443a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld  *pCmdBld = (TCmdBld *)hCmdBld;
1444a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8      keyType;
1445a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8      keyBuffer[KEY_SIZE_TKIP];
1446a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1447a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    keyType = CIPHER_SUITE_TKIP;
1448a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1449a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    os_memoryCopy (pCmdBld->hOs, (void*)(&keyBuffer[0]), (void*)aSecurityKey->encKey, 16);
1450a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    os_memoryCopy (pCmdBld->hOs, (void*)(&keyBuffer[16]), (void*)aSecurityKey->micRxKey, 8);
1451a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    os_memoryCopy (pCmdBld->hOs, (void*)(&keyBuffer[24]), (void*)aSecurityKey->micTxKey, 8);
1452a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1453a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetKey (hCmdBld,
1454a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_ADD_OR_REPLACE,
1455a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->macAddress,
1456a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_SIZE_TKIP,
1457a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               keyType,
1458a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1459a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)keyBuffer,
1460a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               pCmdBld->uSecuritySeqNumLow,
1461a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               pCmdBld->uSecuritySeqNumHigh,
1462a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1463a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1464a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1465a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1466a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1467a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_TkipMappingKeyAdd()
1468a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1469a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual mapping key
1470a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1471a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1472a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1473a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1474a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1475a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1476a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1477a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveTkipMicMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1478a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1479a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8 keyType;
1480a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1481a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    keyType = CIPHER_SUITE_TKIP;
1482a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1483a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/*In the new security interface it is not allowed to remove uni-cast keys. it will be cleaned on the next join command*/
1484a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (!MAC_BROADCAST(aSecurityKey->macAddress) )
1485a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
1486a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_OK;
1487a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
1488a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1489a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1490a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetKey (hCmdBld,
1491a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_REMOVE,
1492a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->macAddress,
1493a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->encLen,
1494a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               keyType,
1495a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1496a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->encKey,
1497a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1498a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1499a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1500a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1501a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1502a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1503a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1504a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1505a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_AesMappingKeyAdd()
1506a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1507a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual Aes mapping key
1508a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1509a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1510a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1511a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1512a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1513a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1514a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1515a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddAesMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1516a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1517a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld  *pCmdBld = (TCmdBld *)hCmdBld;
1518a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8      keyType;
1519a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1520a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    keyType = CIPHER_SUITE_AES;
1521a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1522a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_AesMappingKeyAdd: uSecuritySeqNumHigh=%ld, pHwCtrl->uSecuritySeqNumLow=%ld \n", pCmdBld->uSecuritySeqNumHigh, pCmdBld->uSecuritySeqNumLow);
1523a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1524a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetKey (hCmdBld,
1525a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_ADD_OR_REPLACE,
1526a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->macAddress,
1527a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->encLen, keyType,
1528a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1529a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->encKey,
1530a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               pCmdBld->uSecuritySeqNumLow,
1531a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               pCmdBld->uSecuritySeqNumHigh,
1532a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1533a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1534a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1535a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1536a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1537a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /****************************************************************************
1538a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_AesMappingKeyRemove()
1539a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1540a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Remove  Aes mapping key
1541a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1542a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1543a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1544a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1545a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1546a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1547a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1548a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveAesMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1549a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1550a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8  keyType;
1551a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1552a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    keyType = CIPHER_SUITE_AES;
1553a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1554a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/*In the new security interface it is not allowed to remove uni-cast keys. it will be cleaned on the next join command*/
1555a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (!MAC_BROADCAST(aSecurityKey->macAddress) )
1556a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
1557a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_OK;
1558a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
1559a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1560a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return cmdBld_CmdIeSetKey (hCmdBld,
1561a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_REMOVE,
1562a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->macAddress,
1563a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->encLen,
1564a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               keyType,
1565a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1566a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               (TI_UINT8*)aSecurityKey->encKey,
1567a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1568a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1569a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1570a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1571a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }
1572a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1573a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1574a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_CmdSetStaState()
1575a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1576a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set station status .
1577a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1578a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None
1579a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1580a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:  None
1581a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1582a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1583a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1584a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSetStaState (TI_HANDLE hCmdBld, TI_UINT8 staState, void *fCb, TI_HANDLE hCb)
1585a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1586a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
1587a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TWlanParams *pWlanParams = &DB_WLAN(hCmdBld);
1588a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1589a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pWlanParams->bStaConnected = TI_TRUE;
1590a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Sending StaState %d\n",staState);
1591a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1592a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetStaState (hCmdBld, staState, fCb, hCb);
1593a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1594a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1595a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef GEM_SUPPORTED
1596a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1597a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_CmdAddGemMappingKey()
1598a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1599a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual GEM mapping key
1600a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1601a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1602a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1603a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1604a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1605a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1606a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1607a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddGemMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1608a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1609a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld  *pCmdBld = (TCmdBld *)hCmdBld;
1610a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8      keyType;
1611a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1612a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    keyType = CIPHER_SUITE_GEM;
1613a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1614a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeSetKey (hCmdBld,
1615a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_ADD_OR_REPLACE,
1616a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->macAddress,
1617a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               MAX_KEY_SIZE,
1618a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               keyType,
1619a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1620a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt							   aSecurityKey->encKey,
1621a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               pCmdBld->uSecuritySeqNumLow,
1622a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               pCmdBld->uSecuritySeqNumHigh,
1623a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1624a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1625a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1626a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1627a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1628a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1629a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_CmdRemoveGemMappingKey()
1630a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1631a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Remove  GEM mapping key
1632a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1633a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1634a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1635a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1636a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1637a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK
1638a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1639a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveGemMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb)
1640a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1641a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8  keyType;
1642a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1643a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    keyType = CIPHER_SUITE_GEM;
1644a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1645a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/*In the new security interface it is not allowed to remove uni-cast keys. it will be cleaned on the next join command*/
1646a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (!MAC_BROADCAST(aSecurityKey->macAddress) )
1647a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
1648a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return TI_OK;
1649a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
1650a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1651a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return cmdBld_CmdIeSetKey (hCmdBld,
1652a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               KEY_REMOVE,
1653a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->macAddress,
1654a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->encLen,
1655a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               keyType,
1656a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->keyIndex,
1657a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               aSecurityKey->encKey,
1658a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1659a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               0,
1660a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               fCb,
1661a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                               hCb);
1662a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }
1663a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /*GEM_SUPPORTED*/
1664a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1665a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
1666a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                      cmdBld_healthCheck()
1667a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************
1668a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION:
1669a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1670a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS:
1671a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1672a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT:
1673a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
1674a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS:
1675a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
1676a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdHealthCheck (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb)
1677a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1678a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
1679a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1680a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CmdIeHealthCheck\n");
1681a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1682a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeHealthCheck (hCmdBld, fCb, hCb);
1683a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1684a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1685a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdTest (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, TTestCmd* pTestCmd)
1686a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
1687a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return cmdBld_CmdIeTest (hCmdBld, fCb, hCb, pTestCmd);
1688a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
1689a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
1690