platforms/os/Symbian/WVSS/src/wha/TIWha.h
changeset 0 10c42ec6c05f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/platforms/os/Symbian/WVSS/src/wha/TIWha.h	Tue Jun 29 12:34:26 2010 +0100
@@ -0,0 +1,1065 @@
+/*
+ * TIWha.h
+ *
+ * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.      
+ * All rights reserved.      
+ * 
+ * This program and the accompanying materials are made available under the 
+ * terms of the Eclipse Public License v1.0 or BSD License which accompanies
+ * this distribution. The Eclipse Public License is available at
+ * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.                                   
+ *                                                                       
+ * Redistribution and use in source and binary forms, with or without    
+ * modification, are permitted provided that the following conditions    
+ * are met:                                                              
+ *                                                                       
+ *  * Redistributions of source code must retain the above copyright     
+ *    notice, this list of conditions and the following disclaimer.      
+ *  * Redistributions in binary form must reproduce the above copyright  
+ *    notice, this list of conditions and the following disclaimer in    
+ *    the documentation and/or other materials provided with the         
+ *    distribution.                                                      
+ *  * Neither the name Texas Instruments nor the names of its            
+ *    contributors may be used to endorse or promote products derived    
+ *    from this software without specific prior written permission.      
+ *                                                                       
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+
+/** \file  TIWha.h 
+ *  \brief  Interface between the sandbox to the BSP of Omap2430
+ *
+ *  \see   
+ */
+
+
+#ifndef TIWha_H
+#define TIWha_H
+
+/* Includes that are rquired for using MWlanDfcClient */
+#include <kernel/kernel.h>
+#include <wlandfc.h>
+#include <wlandfcclient.h>
+#include <wlanpddiface.h>
+
+/* Other driver includes*/
+#include "TIWhaDef.h" /*struct and definitions neded for the TI WLAN driver*/
+#include "TWDriver.h" /*interface with the HW abstraction of the WLAN driver*/
+#include "TIWhaUtils.h"
+#include "TIWlanHpaCB.h"
+
+extern void Assert( const TInt8*, TInt, TBool );
+
+
+/*
+ * This is a class for Failure Indication DFC implementation
+ */
+class TIFailureDfcClient : public MWlanDfcClient
+{
+    public:        
+
+        /** 
+    	* \fn     TIFailureDfcClient
+    	* \brief  Constructor
+    	*
+        * Create a MWlanDfc object.
+    	* 
+    	* \note
+    	* \param  	aOsa
+    	* return   handle to TIFailureDfcClient class.
+    	* \sa
+    	*/
+        TIFailureDfcClient(MWlanOsa& aOsa);
+
+        /** 
+    	* \fn     OnDfc
+    	* \brief  Call TIWhaAdaptCB::FailureIndicationDFC in order to handle the failure indication
+        * from a different context
+    	* 
+    	* \note
+    	* \param   aCtx - Relevant Context
+    	* return   void
+    	* \sa
+    	*/
+        virtual void OnDfc( TInt aCtx ); 
+
+        /* A pointer to the relevant wlan DFC object */
+        MWlanDfc* pFailureDfc;
+};
+
+
+
+/*
+ * This is a class for Sync bus connection DFC implementation
+ */
+class TIConnectDfcClient : public MWlanDfcClient
+{
+    public:
+
+        /** 
+    	* \fn     TIConnectDfcClient
+    	* \brief  Constructor
+    	*     	
+        * Create a MWlanDfc object.
+    	* 
+    	* \note
+    	* \param  	aOsa
+    	* return   handle to TIConnectDfcClient class.
+    	* \sa
+    	*/
+        TIConnectDfcClient(MWlanOsa& aOsa);
+
+
+        /** 
+    	* \fn     OnDfc
+    	* \brief  Call TIWhaAdaptCB::ConnectBus() in order to finish the bus connection procees
+    	* 
+    	* \note
+    	* \param  	aCtx - Relevant Context
+    	* return   void
+    	* \sa
+    	*/
+        virtual void OnDfc( TInt aCtx ); 
+
+        /* A pointer to the relevant wlan DFC object */
+        MWlanDfc* pConnectDfc;
+};
+
+
+
+/**
+* This is a class for TI WLAN driver implementation
+*/
+class TIWha :     public WHA::Wha , public DPhysicalDevice , public MWlanPddIface
+{
+public:  
+
+	/** 
+	* \fn     TIWha
+	* \brief  Constructor
+	* 
+	*  TIWha constructor
+	* 
+	* \note   
+	* \param  	aOsa
+	* \param  aHpa
+	* \param  aSpia
+	* return   handle to TIWha class. 
+	* \sa     
+	*/ 
+	TIWha(MWlanOsa& aOsa, WlanHpa& aHpa, WlanSpia& aSpia);
+
+
+			/** 
+	* \fn     TIWha
+	* \brief  Constructor
+	* 
+	*  TIWha constructor
+	* 
+	* \note   
+	* 
+	* return   handle to TIWha class. 
+	* \sa     
+	*/ 
+    TIWha();
+
+	/** 
+	 * \fn     ~TIWha
+	 * \brief  destructor
+	 * 
+	 * Destroy TIWha object
+	 * 
+	 * \note   
+	 * \param  
+	 * \return   
+	 * \sa     
+	 */ 
+	virtual ~TIWha();
+
+
+  
+
+	/* Call constructor */
+	static Wha* Create( MWlanOsa& aOsa, 
+	                    WlanHpa& aHpa, 
+	                    const SHwBusAccessLayer& aTransPortLayer );
+
+	/* Call destructor */
+	static void Destroy( Wha* aWha );
+
+
+	/** 
+	 * \fn     WhaCb
+	 * \brief  attach call back to LDD form the WLAN driver
+	 * 
+	 * \note   	in case error indication was received - return Null. That way we avoid calls to UMAC.
+	 * \param  
+	 * \return pointer to the Call Back function in the WHA (LDD)  
+	 * \sa     
+	 */ 	
+    WHA::MWhaCb* WhaCb() {return iWhaCb;}
+
+
+	/** 
+	* \fn     FailureIndicationCb
+	* \brief  Generic Error Indicatin function to the UMAC
+	* 
+	* sends the UMAC Error indications as agreed.
+	* 
+	* \note   
+	* \param EFailureEvent  - the kind of error
+	* \return 
+	* \sa     
+	*/         
+	void FailureIndicationCb ( EFailureEvent failureEvent);    
+    	
+
+    /** 
+     * \fn     ConnectionTimeOut
+     * \brief  change rate management parameters after the connection phase
+     * 
+     * \note    
+     * \return  
+     * \sa      
+     */    
+    void ConnectionTimeOut ();
+
+    /** 
+     * \fn     SetTxFailLowThreshold
+     * \brief  Set new Tx Fail rate to FW
+     * 
+     * \note    
+     * \return  
+     * \sa      
+     */    
+    void SetTxFailLowThreshold( TI_UINT8 uTxFailLowTh);
+	
+   /** 
+ * \fn     InitializeAfterTimer
+ * \brief  start second part of initialization after timer expired
+ *          
+ * \note    
+ * \param  
+ * \return  
+ * \sa      
+ */ 
+    void InitializeAfterTimer();
+	
+    /** 
+     * \fn     RxMemFailTimerCb
+     * \brief  call RxXfer in case memory allocation failed, so we will try again
+     *          
+     * \note    
+     * \param  
+     * \return  
+     * \sa      
+     */ 
+    void RxMemFailTimerCb();
+
+/*******************************************************************************
+ *                                                                             *
+ * WLAN Symbian HAL API command methods below.                                     *
+ *                                                                             *
+ *******************************************************************************/
+
+    /** 
+     * \fn     Initialize
+     * \brief  Downloads the firmware code to the WLAN device
+     * (reference wlanwha.h) 
+     *          
+     * \note    
+     * \param  aData firmware data
+     * \param  aLength length of the data in bytes
+     * \return  
+     * \sa      
+     */ 
+	void Initialize(
+				   const void* aData, 
+				   TUint32 aLength );
+
+    /** 
+     * \fn     Configure
+     * \brief  Method configures the WLAN device after the WHA layer has send the EInitializeResponse event.
+     * (reference wlanwha.h) 
+     *          
+     * \note    
+     * \param  aData firmware data. The content is vendor specific.
+     * \param  aWhaSettings output data that holds the capabilities
+     * \return  
+     * \sa      
+     */ 
+	void Configure(
+		const WHA::SConfigureData&, 
+		WHA::SSettings& aWhaSettings );
+
+    /** 
+     * \fn     Configure
+     * \brief  Command will cause the WHA layer to release all OS resources and stop
+	 * its operation. (reference wlanwha.h) 
+     *          
+     * \note    
+     * \param  aSynchronous should command be executed synchronously (ETrue) or not (EFalse) 
+     * \return Command was executed synchronously and no command response event is sent
+     * \sa      
+     */ 
+ 	WHA::TStatus Release( TBool aSynchronous );
+
+    /** 
+     * \fn     Scan
+     * \brief  When the WLAN device receives this command, it goes into a scanning mode.
+     * (reference wlanwha.h) 
+     *          
+     * \note    
+     * \param  aMaxTransmitRate specifies the transmission rate of the probe request in case of a active scan
+     * \param  aBand selects the used frequency band. 
+     * \param aNumOfChannels number of channels provided in the command
+	 * \param aChannels specifies the scanned channels
+	 * \param aScanType specifies the scan type:0 foreground scan, 1 background scan, 2 forced background scan
+	 * \param aNumOfProbeRequests number of probe requests (per SSID): sent to one (1) channel, Zero (0) means that none is send, 
+	 * which means that a passive scan is to be done.  
+	 * \param aNumOfSSID number of SSID provided in the scan command (this is zero (0) in broadcast scan)
+	 * \param aSsid Array of the SSID to be probed in scan
+     * \return 
+     * \sa      
+     */ 
+	void Scan(  WHA::TRate                  aMaxTransmitRate, 
+				WHA::TBand                  aBand,
+				TUint8                      aNumOfChannels,
+				const WHA::SChannels*   aChannels, 
+				WHA::TScanType          aScanType,
+				TUint8                      aNumOfProbeRequests,
+				TBool                       aSplitScan,
+				TUint8                      aNumOfSSID,
+				const WHA::SSSID*       aSsid);
+
+     /** 
+     * \fn     StopScan
+     * \brief  This method stops a previously started scan process in the WLAN device.
+     * (reference wlanwha.h) 
+     *          
+     * \note    
+     * \param 
+     * \return
+     * \sa      
+     */ 
+   void StopScan();
+
+    /** 
+    * \fn     Join
+    * \brief  The WLAN host driver uses this method to command the WLAN device to 
+	* join a BSS or an IBSS or to start an IBSS.(reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aMode specifies the operation mode of the station: 0 for IBSS, 1 for BSS
+	* \param aBSSID specifies the BSSID of the BSS or IBSS to be joined or the IBSS to be started
+	* \param aSSID specifies the SSID of the IBSS to join or start
+	* \param aBand selects the used frequency band. Only 1 bit is used to select the band
+	* \param aChannel specifies the channel number to join.
+    * \param aBeaconInterval specifies the time between TBTTs in TUs
+	* \param aBasicRateSet defines the BSS basic rate set
+	* \param aAtimWindow ATIM window of IBSS
+    * \param aPreambleType Specifies the PLCP preamble type used: 0 for long preamble, 1 for short preamble
+    * \param aProbeForJoin specifies if a probe request should be send with the specified SSID when joining to the network. 
+    * \return
+    * \sa      
+    */ 
+	void Join(
+			 WHA::TOperationMode aMode,
+			 const WHA::TMacAddress& aBSSID,
+			 const WHA::SSSID& aSSID, 
+			 WHA::TBand aBand,
+			 WHA::TChannelNumber aChannel,
+			 TUint32 aBeaconInterval,
+			 WHA::TRate aBasicRateSet,
+			 TUint16 aAtimWindow,
+			 WHA::TPreamble aPreambleType,
+			 TBool aProbeForJoin );
+
+    /** 
+    * \fn     SetPsMode
+    * \brief  The WLAN host driver uses this method to manipulate the WLAN devices 
+	* 802.11 power management mode in infrastructure mode.(reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aPsMode desired 802.11 power management mode:0 - 802.11 power save disable, 1 - 802.11 power save enable
+    * \return
+    * \sa      
+    */ 
+	void SetPsMode( WHA::TPsMode aPsMode );
+
+    /** 
+    * \fn     SetBssParameters
+    * \brief  The WLAN host driver uses this method to fix connection parameters 
+	* after the initial connection setup (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aDTIM specifies the DTIM interval in multiples of beacons
+    * \param aAID specifies the AID received during the association process
+    * \return
+    * \sa      
+    */ 
+	void SetBssParameters(
+						 TUint8 aDTIM, 
+						 TUint16 aAID );
+
+    /** 
+    * \fn     Measure
+    * \brief  This method starts radio measurements in the WLAN device.
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aTxPowerLevel used transmission power level during the measurement process. 
+	* \param aBand selects the used frequency band. Only 1 bit is used to select the band
+	* \param aChannel specifies the channel number.
+    * \param aActivationDelay number of TBTTs until interval specified by the aMeasurementOffset starts.
+    * \param aMeasurementOffset Time after the activation delay in TUs
+	* \param aNumberOfMeasurementTypes number of measurement types to activate at parallel
+	* \param aParameterSet specific measurement parameter set
+    * \return
+    * \sa      
+    */ 
+	void Measure(
+				WHA::TPowerLevel aTxPowerLevel,
+				WHA::TBand aBand,
+				WHA::TChannelNumber aChannel,
+				TUint8 aActivationDelay,
+				TUint8 aMeasurementOffset,
+				TUint8 aNumberOfMeasurementTypes,
+				const WHA::SParameterSet* aParameterSet );
+
+    /** 
+    * \fn     StopMeasure
+    * \brief  This method stops all previously started measurement processes in the WLAN device. 
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param 
+    * \return
+    * \sa      
+    */ 
+	void StopMeasure();
+
+    /** 
+    * \fn     ReadMib
+    * \brief  The WLAN host driver uses this method to read configuration 
+	* information and statistics from the WLAN vendor specific solution. 
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aMib ID of the MIB to be accessed
+    * \return
+    * \sa      
+    */ 
+ 	void ReadMib( WHA::TMib aMib );
+
+    /** 
+    * \fn     WriteMib
+    * \brief  The WLAN host driver uses this method to write configuration 
+	* information to the WLAN vendor specific solution
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aMib ID of the MIB to be written
+	* \param aLength length of the MIB
+	* \param aData pointer to the MIB data
+	* \param aMore more MIBS are written after this command (ETrue) or not (EFalse) 
+	* \return ESuccess: Command was executed synchronously and no command response event is sent
+	*         EPending: Command is executed asynchronously and corresponding command response event 
+    *                   will be sent upon command completion
+    * \sa      
+    */ 
+	WHA::TStatus WriteMib(
+						 WHA::TMib aMib,
+						 TUint16 aLength,
+						 const void* aData,
+						 TBool aMore  );
+
+    /** 
+    * \fn     AddKey
+    * \brief  This method adds a new (or replaces an old) encryption key to WLAN device
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aType type of the key to be added
+	* \param aKey pointer to buffer specifying the key material, 
+	* \param aEntryIndex
+	* \return 
+    * \sa      
+    */ 
+	void AddKey(
+			   WHA::TKeyType aType, 
+			   const void* aKey,
+			   TUint8 aEntryIndex );
+
+    /** 
+    * \fn     RemoveKey
+    * \brief  This method removes encryption keys from active key set. 
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aEntryIndex index of the key to remove from the set, Valid range: 0-8
+    * \return 
+    * \sa      
+    */ 
+	void RemoveKey( TUint8 aEntryIndex );
+
+    /** 
+    * \fn     ConfigureQueue
+    * \brief  The WLAN host driver uses this method to configure QoS parameters of transmission queues 
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aQueueId ID for the queue
+    * \param aMaxLifeTime dot11MaxTransmitMsduLifetime to be used for the specified queue. 
+    * \param aPsScheme PS scheme of the specified queue: 0 Regular PS, 1 U-APSD, 2 Legacy PSPOLL,3 S-APSD [optional]
+    * \param aSAPSDConfig
+    * \param aQueueId ID for the queue
+    * \param aAckPolicy ACK frame policy of the specified queue: 0 - normal, 1 - Tx no ACK [optional],2 - block ACK [optional]
+    * \return 
+    * \sa      
+    */ 
+	void ConfigureQueue(
+					   WHA::TQueueId aQueueId,
+					   TUint32 aMaxLifeTime,
+					   WHA::TPsScheme aPsScheme,
+					   const WHA::SSAPSDConfig& aSAPSDConfig,
+					   WHA::TAckPolicy aAckPolicy,
+                       TUint16 aMediumTime );
+
+    /** 
+    * \fn     ConfigureAC
+    * \brief  The WLAN host driver uses this method to configure EDCA Access Category parameters.
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aCwMin CWmin (in slots) for the access class
+    * \param aCwMax CWmax (in slots) for the access class
+    * \param aAIFS AIFS value (in slots) for the access class
+    * \param aTxOplimit Tx Op Limit (in microseconds) for the access class
+    * \param aMaxReceiveLifeTime dot11MaxReceiveLifeTime to be used for the specified queue.  
+    * \return 
+    * \sa      
+    */ 
+	void ConfigureAC(
+					TUint16 aCwMin[Wha::KNumOfEdcaQueues],
+					TUint16 aCwMax[Wha::KNumOfEdcaQueues],
+					TUint8 aAIFS[Wha::KNumOfEdcaQueues],
+					TUint16 aTxOplimit[Wha::KNumOfEdcaQueues],
+					TUint16 aMaxReceiveLifeTime[Wha::KNumOfEdcaQueues] );
+
+    /** 
+    * \fn     SendPacket
+    * \brief  The WLAN host driver uses this method to send packets across the interface. 
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aFrame pointer to the frame (MSDU) content
+    * \param aLength MSDU length.
+    * \param aQueueId transmit queue as defined in ConfigureQueue
+    * \param aTxRateClassId transmit rate class ID defined in txRatePolicy MIB. 
+    * \param aMaxTransmitRate defines the highest transmission rate to be used   
+    * \param aMore informs the WHA layer if an another packet is pending for transmission in the same context  
+    * \param aPacketId packet identifier   
+    * \param aPowerLevel transmission power level 
+    * \param aExpiryTime the elapsed time in TUs  
+    * \param aReserved reserved field  
+    * \return ESuccess: Packet was accepted for delivery to WLAN device. 
+    *  ESuccessXfer: Packet and all the (possible) other packets queued inside the WHA layer were transferred to the WLAN device.
+    *  EQueueFull: The designated transmit queue is full and the packet was not accepted for delivery to WLAN device. 
+    * \sa      
+    */ 
+	WHA::TStatus SendPacket(
+						   const void* aFrame,
+						   TUint16 aLength,
+						   WHA::TQueueId aQueueId,
+						   TUint8 aTxRateClassId,
+						   WHA::TRate aMaxTransmitRate,
+						   TBool aMore,
+						   WHA::TPacketId aPacketId,
+						   WHA::TPowerLevel aPowerLevel,
+						   TUint32 aExpiryTime,
+						   void* aReserved );
+
+    /** 
+    * \fn     Reset
+    * \brief  The WLAN host driver uses this command to reset the WLAN vendor specific solution to its initial state
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param   
+    * \return 
+    * \sa      
+    */ 
+	void Reset();
+
+    /** 
+    * \fn     Plt
+    * \brief  The host driver calls this method to perform production line testing of the WLAN device
+    * (reference wlanwha.h) 
+    *          
+    * \note    
+    * \param aType indicates which test to perform  
+    * \param aParams test specific parameters 
+    * \return 
+    * \sa      
+    */ 
+    void Plt (WHA::TPltType aType, void *aParams);
+    
+
+	/**
+	 * Direct read/write operation from the device 
+	 */
+	WHA::TStatus WriteMem (TMemoryAccess *pMemoryAccess);
+	WHA::TStatus ReadMem (TMemoryAccess  *pMemoryAccess);
+
+	/**********************************************/
+	/************ TIWha callbacks **************/
+	/**********************************************/
+
+    /* ConnectBusCb called after first connection phase (init command transaction) is finished*/
+    void ConnectBusCb (TI_STATUS status); 
+	/* Init HW Callback called after all software init is done  and NVS configuration was saved as defaults, will download the FW*/
+	void InitHwCb ( TI_STATUS status);
+	/* Init FW Callback called after Fw was downloaded will configure the FW*/
+	void InitFwCb ( TI_STATUS status);
+	/* Config FW Callback will set the defaults*/
+	void ConfigFwCb ( TI_STATUS status);
+    /* InitFailCb will be called in case of a failure in one of the init SM's */
+	void InitFailCb ( TI_STATUS status);
+
+	/**********************************************/
+	/************ Complete callbacks **************/
+	/**********************************************/
+
+	/* Complete Callback */
+	void ScanCompleteCb (TI_STATUS returnStatus , E80211PsStatus PSMode);
+
+	/* Power Save Complete Callback */
+	void SetPsModeCompleteCb (TUint8 PSMode, TUint8 transStatus);
+
+	/* Measurement Complete Callback */
+	void MeasureCompleteCb               ( TMeasurementReply *pMsrReply);
+
+
+	/**********************************************/
+	/*********** Indication callbacks *************/
+	/**********************************************/
+	/* RCPI Indication Callback */
+	void RcpiIndicationCb                ( TUint8* buffer, TUint32 len);
+	/* Lost Beacon Indication Callback */        
+	void LostBssIndicationCb             ();
+	/* Regain Bss Indication Callback */        
+	void RegainBssIndicationCb           ();
+	/* BtCoexistence Indication CallBacks */
+	void btCoexSenseIndicationCb         ( TUint8* buffer, TUint32 len);
+	void btCoexProtectiveIndicationCb    ( TUint8* buffer, TUint32 len);
+	void btCoexAvalancheIndicationCb     ( TUint8* buffer, TUint32 len);
+    /* FW statistics callback */
+    void TWD_StatisticsReadCB (TI_HANDLE hTWD, TI_UINT16 MboxStatus, ACXStatistics_t* pElem);
+	/*Avr RSSI Callback*/
+	void TWD_AvrRssiReadCB (TI_HANDLE hCb, TI_UINT16 MboxStatus, ACXRoamingStatisticsTable_t* roamingStatistics);
+	/**********************************************/
+	/************ Response callbacks **************/
+	/**********************************************/
+
+	/* Generic Response Callback */
+	void GenericCommandResponseCb ( TUint16 CmdType, TUint16 CmdID, TUint32 aStatus);
+	/* Scan Response Callback */
+	void ScanResponseCb(WHA::TStatus aStatus);
+	/* Join Response Callback */
+	void JoinCompleteCb ();
+
+	/* Add Key Response Callback */
+	void AddKeyResponseCb                ( WHA::TStatus aStatus);
+	/* Remove Key Response Callback */
+	void RemoveKeyResponseCb             ( WHA::TStatus aStatus);
+	/* Stop Scan Response Callback */
+	void StopScanResponseCb (WHA::TStatus aStatus);
+
+	/* Power Save Response Callback */
+	void SetPsModeResponseCb (TUint8 aStatus);
+
+	/* Read MIB Response Callback */
+	void ReadMIBResponseCb               ( TUint16 aStatus,  void *InterrogateParamsBuf);
+	/* TxPower Level Read MIB CallBack */
+	void ReadMIBStationIdResponse      (TUint16 aStatus, void *InterrogateParamsBuf);
+	void ReadMIBstatisticsTableResponse(TUint16 aStatus,  void *InterrogateParamsBuf);
+	void ReadMIBcountersTableResponse  (TUint16 aStatus,  void *InterrogateParamsBuf);
+	void ReadMIBBtCoexParamsResponse   (TUint16 aStatus,  void *InterrogateParamsBuf);
+	/* Read Version Callback */
+	void ReadMIBVersion                (TUint16 aStatus,  void *InterrogateParamsBuf);
+	/* Measure Response Callback */
+	void MeasureResponseCb               ( TUint16 aStatus);
+	/* Stop Measure Response Callback */
+	void StopMeasureResponseCb           ( TUint16 aStatus);
+	/* Command Complete Generic Callback */
+
+
+	/* PLT Response Callback */
+	void PltResponseCb                   ( TI_STATUS aStatus,  void *InterrogateParamsBuf);
+	/* PLT RX PER callbacks */
+	void PltPerGetResultResponseCb       ( TUint16 aStatus,  void *InterrogateParamsBuf);
+	void PltPerStartResponseCb           ( TUint16 aStatus,  void *InterrogateParamsBuf);
+	void PltPerStopResponseCb            ( TUint16 aStatus,  void *InterrogateParamsBuf);
+	void PltPerClearResponseCb           ( TUint16 aStatus, void *InterrogateParamsBuf);
+	/* Read Memory/Registers Response Callback */
+	void ReadMemResponseCb          (TFwDebugParams* params);
+	/* Write Registers Response Callback */
+	void WriteMemResponseCb         (TFwDebugParams* params);
+
+	/* PLT TX calibration */
+	void PltGainGetResponseCb            ( TUint16 aStatus,  void *InterrogateParamsBuf);
+	void PltGetNVSUpdateBufferResponseCb ( TUint16 aStatus,  void *InterrogateParamsBuf);
+
+#ifdef PLT_TESTER
+	TUint8 iRealPlt;
+	void PltSm(void *pBuf);
+
+#endif
+	/* RX CallBacks */
+    ERxBufferStatus RequestForBufferCb (void **pWbuf, TI_UINT16 aLength, TI_UINT32 uEncryptionflag);
+	
+	void ReceivePacketCb (const void *aFrame);
+
+
+	/* Frame was written to FW */
+	void TxXferCb(TTxCtrlBlk *pPktCtrlBlk);
+
+	/* Frame was transmitted over the air (or failed to be transmitted) */
+	void TxCompleteCb (TxResultDescriptor_t *pTxResultInfo, TI_UINT32 backpressure);
+
+	/**
+	* \fn     InitResponse
+	* \brief ititializatin response function. In case of success - return command response
+	*								In case of error - send error indication (as requested from Palau)
+	*
+	* /note
+	* 
+	* /param aTwdInitStatus - Whether Init was successful
+	*   
+	* /return 
+	*/
+	void InitResponse                  (WHA::TStatus aTwdInitStatus);
+
+
+	/**
+	* \fn     getMacAddress
+	* \brief  return the Mac address from the TWDCtrl
+	*
+	* 
+	* /note
+	* 
+	* /return 
+	*/
+	void * getMacAddress();
+
+
+    /**
+	* \fn     ConvertTxBip2Nvs
+	* \brief  Fill in the Tx NVS params in iBipNvsBuffer
+	*
+	* 
+	* /note
+	* 
+	* /return 
+	*/
+	void ConvertTxBip2Nvs(void* pBuf);
+
+
+    /**
+	* \fn     ConvertRxBip2Nvs
+	* \brief  Fill in the Rx NVS params in iBipNvsBuffer
+	*
+	* 
+	* /note
+	* 
+	* /return 
+	*/
+    void ConvertRxBip2Nvs(void* pBuf);
+
+private:
+
+    /**
+	* Internal PLT to match the TWD test API
+	* /param eTestCmd indicates which test to perform
+	* /param pTestCmdParams test specific parameters
+	* /return 
+	*/
+
+    WHA::TStatus Plt (ETestCmdID eTestCmd, void *pTestCmdParams);
+    
+
+#ifdef TI_TEST
+	void PltTester(const void *aData);
+	void ChangeQueue(const void *aData);
+#endif /* TI_TEST */
+
+
+	/*Helper function*/
+
+	TI_STATUS CreateDriver();
+	void DestroyDriver();
+
+    	
+	/**
+	* \fn     InitTwdParamTable
+	* \brief  initialization of TWD parameters
+	*
+	* since we have no ini file, we are initializing the 
+	* Modules with hard coded values
+	* /note
+	* 
+	* /return 
+	*/
+	void             InitTwdParamTable   ();
+    /* FEM Auto Detection*/
+    void             InitTwdRadioParam   ();
+    void             FillRadioData();
+    void             FillSmartReflexData();
+    void             InitTwdPlatformGenParam();
+    #ifdef TI_DBG
+       void             PrintRadioData();
+    #endif
+
+    void             InitTwdRadioSmartReflexParam();
+
+
+	/**
+	* \fn     InitBtCoex
+	* \brief  initialization of Soft Gemini parameters
+	*
+	* since we have no ini file, we are initializing the 
+	* Modules with hard coded values
+	* /note
+	* 
+	* /return 
+	*/
+	void 			InitBtCoex();
+
+	/**
+	* \fn     InitReportParamTable
+	* \brief  initialization of Report parameters
+	*
+	* since we ave no ini file, we are initializing the 
+	* Modules wit hard coded values
+	* /note
+	* 
+	* /return 
+	*/
+	void             InitReportParamTable();       
+	/* Open reports for debug */
+	void 	OpenAllReports();
+
+	/** 
+	* \fn     RegisterCb
+	* \brief  registers the TIWha callbacks
+	* 
+	* Register callbacks To Twd level according to the action
+	* that we would like to be triggered on 
+	* 
+	* \note    
+	* \return  status whther the registration succeed or not.
+	* \sa      
+	*/
+	WHA::TStatus     RegisterCb                ();
+
+
+	/** 
+	* \fn     RegisterEvents
+	* \brief  register the TIWha Events
+	* 
+	* Register callbacks To Twd level according to the event 
+	* that we would like to be triggered on 
+	* 
+	* \note    
+	* \return  status whther the registration succeed or not.
+	* \sa      
+	*/
+	WHA::TStatus     RegisterEvents        ();
+
+
+	/**
+	* \fn     FillNWSASettings
+	* \brief  Fill UMAC structure with correct settings
+	*
+	* since we ave no ini file, we are initializing the 
+	* Modules wit hard coded values
+	* /note
+	* 
+	* /param SNWSASettings - pointer pointer to the UMAC settings struct
+	* /return status
+	*/
+	WHA::TStatus     FillNWSASettings      (WHA::SSettings *SNWSASettings);
+
+	/**
+	* \fn     WriteMib utility functions
+	* \brief  For each WriteMib command we use one of the following functions
+	*
+	* /return status
+	*/
+	WHA::TStatus SetSlotTime (const void *aData);
+	WHA::TStatus Dot11MaxReceiveLifeTime (const void *aData) ;
+	WHA::TStatus SetRxFilter (const void *aData);
+	WHA::TStatus SetCurrentTxPowerLevel (const void *aData);
+	WHA::TStatus SetTemplateFrame (const void *aData);
+	WHA::TStatus SetDot11GroupAddrTable (const void *aData);           
+	WHA::TStatus SetDefaultKeyID (const void *aData); 
+	WHA::TStatus Dot11RTSThreshold (const void *aData);
+	WHA::TStatus CtsToSelf (const void *aData);
+	WHA::TStatus SetArpIpAddrTable (const void *aData);
+	WHA::TStatus SetBeaconFilterIETable (const void *aData);
+	WHA::TStatus SetBeaconFilterEnable (const void *aData);
+	WHA::TStatus SleepMode ( const WHA::TSleepMode&       aSleepMode, TBool       bResponse);
+	WHA::TStatus WakeUpConditions (const void *aData);
+	WHA::TStatus SetBeaconLostCount (const void  *aData);
+	WHA::TStatus SetRcpiThreshold (const void *aData);
+	WHA::TStatus TxRatePolicy (TUint32     aLength, const void *aData); 
+	WHA::TStatus btCoexistenceMode(TUint32 aLength, const void *aData);
+        WHA::TStatus btCoexistenceProfile(TUint32 aLength, const void *aData);
+#ifdef HT_SUPPORT
+	void         TConvertTwdHtCapa2SHtCapa (TTwdHtCapabilities* pTwdHtCapabilities,WHA::SHtCapabilities* pHtCapabilities);
+	WHA::TStatus SetHTCapabilities (WHA::ShtCapabilities* pApCapabilities);
+	WHA::TStatus SetHTInformation (WHA::ShtBssOperation* pHtInformarion);
+	WHA::TStatus ConfigureBA (WHA::ShtBlockAckConfigure* pBABitMask);	
+#endif
+    WHA::TStatus TxAutoRatePolicy (WHA::StxAutoRatePolicy* pTxAutoRatePolicy);
+	void 		 SetPowerSavePowerLevel(void *aMib);
+	TI_STATUS SoftGemini_SetParams (TI_HANDLE hTWD, TSoftGeminiParams *pSgParams,ESoftGeminiEnableModes aSgMode );
+	
+	void prepareNextFwChunk ();
+
+	WHA::TStatus preparePktCtrlBlk ( TTxCtrlBlk **pPktCtrlBlk,
+                                              const void* aFrame,
+            								  TUint16 aLength,
+            								  WHA::TQueueId aQueueId,
+            								  TUint8 aTxRateClassId,
+            								  WHA::TRate aMaxTransmitRate,
+            								  TBool aMore,
+            								  WHA::TPacketId aPacketId,
+            								  WHA::TPowerLevel aPowerLevel,
+            								  TUint32 aExpiryTime);
+
+
+    WHA::TStatus AlignTxForTWD (void*& aFrame,TUint16& aLength);
+    void AlignTxSecurityForUMAC (TBool aQFull = FALSE);
+	
+	WHA::TStatus ConstructAddKey (	TSecurityKeys   *aSecurityKey,  /* structure to be filled               */
+							    WHA::TKeyType        aType,          /* Type of the key to be added          */
+							    const void      *aKey,          /* Pointer to buffer specifying the key */
+							                                    /* material, according to the key type  */
+							                                    /* (see specification for details).     */
+							    TUint8          aEntryIndex);    /* Key entry index. Valid range: 0-8.   */
+
+	/*Data*/
+	TIWlanHpaCB*                        iTiWlanHpaCb;
+	WHA::UCommandResponseParams         iUCommandResponseParams; 
+	TI_UINT8							iReabMibMem[TIWha_MAX_READ_MIB_BUFFER];
+	WHA::UCommandCompletionParams		iUCommandCompletionParams;
+	WHA::UIndicationParams				iUIndicationParams;
+	TI_BOOL								bErrorIndication;
+	TI_BOOL								bCallRelease;	
+	TI_BOOL								bFreeDriver;    	
+	TFileInfo           				iFwFile;
+    TI_UINT8*							ipNVSbuf;
+	TI_UINT32							iNVSlength;
+	TI_BOOL								bFailureIndication;	
+	TwdCtrl                    			iTwdCtrl; 
+    TAutoRadioIniParams                 iAutoRadioParams;   
+
+    TSmartReflexConfigParams            iSmartReflexParams;
+    TSmartReflexDebugParams             iSmartReflexDebugParams;
+
+    TI_UINT8                            iSecurityPadding;
+     
+    /* Add the Soft Gemini Parameters to TIWha */
+    TSoftGeminiParams					iSgParams;
+    TI_UINT32							iRxPacketsAllocated;
+
+#ifdef TI_TEST
+	WHA::TQueueId						iQueueId;
+	ACXRoamingStatisticsTable_t			roamingStatistics;
+#endif /* TI_TEST */
+
+    /* PDD create API */
+public:
+    TInt Install();
+    void GetCaps( TDes8& aDes ) const;
+    TInt Create( DBase *&aChannel, TInt aUnit, const TDesC* anInfo, const TVersion& aVer);
+    TInt Validate( TInt aUnit, const TDesC8 *aInfo, const TVersion &aVer );
+    TBool Attach( MWlanOsa& aWlanOsa, MWlanOsaExt& aWlanOsaExt );
+    WHA::Wha& Extract();
+    void GetCapabilities( SCapabilities*& aCapabilities );
+
+    /*
+	 * Hold the capability off the cashe memory
+	 */
+    SCapabilities*    aCapability;
+
+public:
+
+	TUint8								iNvsStart[24];
+	TUint8								iBipNvsBuffer[MAX_TLV_LENGTH];
+
+    TI_UINT32                           iPacketIdTable[CTRL_BLK_ENTRIES_NUM];
+	TUint16								aScanResultCount;
+	TUint16								SentScanResult;
+	TI_STATUS							aPsMode;
+	TI_STATUS							aScanStatus; 
+    TI_HANDLE							hConnectionTimer;           /* Timer for special rate management during connection */
+    static const TI_UINT32              uConnectionApproxTimeMs = 5000; /* After 5 seconds we will set back the original Tx fail rate */
+    TI_BOOL                             bConnectionTimerRunning;
+	
+    TI_HANDLE                           hInitializeTimer;     /* Holds the timer for initialize */
+    TI_HANDLE                           readDot11StationIdMibTmr;
+
+    TI_HANDLE                           hRxMemFailTimer;		/* Next parameters handle Rx memory allocation failure */
+	TI_BOOL								bRxMemFailTimerRunning;
+    TI_UINT32                           uRxMemFailCount;                    
+    static const TI_UINT32              MAX_CONSECUTIVE_RX_MEM_FAIL = 50; /* After this amount of failures we will start dropping packets */
+    static const TI_UINT32              RX_ALLOC_FAIL_TIME_OUT = 10;      /* time out for requesting a buffer again */
+
+	EFailureEvent 						ifailureEvent;
+
+    TMib								iTxRatePolicy;
+
+#ifdef HT_SUPPORT
+	TMacAddr							iJoinedMacAddress; 
+	TUint8 								iTxBlockAckUsageLast;
+    TUint8 								iRxBlockAckUsageLast;
+	WHA::THtMcsSet						iMcsRates;
+	TUint8								iBACounertRespone;	
+#endif /* HT_SUPPORT */
+    TI_UINT8                            bJoined;
+        
+    TI_UINT8                            iConnectionCounter;
+    const void*                         iData;
+    TI_UINT32                           iLength;
+
+    /* Holds the failure event number in order save it in the failure handling context switch */
+    EFailureEvent                       iFailureEvent;
+
+    /* Holds the other two optinal wlan DFC's context */
+    TIFailureDfcClient*                 pFailureDfcClient;
+    TIConnectDfcClient*                 pConnectDfcClient;
+    TBusDrvCfg                          BusDrvCfg;
+
+private:
+    TI_BOOL                       bDriverCreated;
+};
+
+#endif      // TIWha_H   
+
+
+