platforms/os/Symbian/WVSS/src/wha/TIWhaUtils.cpp
changeset 0 10c42ec6c05f
equal deleted inserted replaced
-1:000000000000 0:10c42ec6c05f
       
     1 /*
       
     2  * TIWhaUtils.cpp
       
     3  *
       
     4  * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.      
       
     5  * All rights reserved.      
       
     6  * 
       
     7  * This program and the accompanying materials are made available under the 
       
     8  * terms of the Eclipse Public License v1.0 or BSD License which accompanies
       
     9  * this distribution. The Eclipse Public License is available at
       
    10  * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.                                   
       
    11  *                                                                       
       
    12  * Redistribution and use in source and binary forms, with or without    
       
    13  * modification, are permitted provided that the following conditions    
       
    14  * are met:                                                              
       
    15  *                                                                       
       
    16  *  * Redistributions of source code must retain the above copyright     
       
    17  *    notice, this list of conditions and the following disclaimer.      
       
    18  *  * Redistributions in binary form must reproduce the above copyright  
       
    19  *    notice, this list of conditions and the following disclaimer in    
       
    20  *    the documentation and/or other materials provided with the         
       
    21  *    distribution.                                                      
       
    22  *  * Neither the name Texas Instruments nor the names of its            
       
    23  *    contributors may be used to endorse or promote products derived    
       
    24  *    from this software without specific prior written permission.      
       
    25  *                                                                       
       
    26  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   
       
    27  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     
       
    28  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
       
    29  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  
       
    30  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
       
    31  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      
       
    32  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
       
    33  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
       
    34  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   
       
    35  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
       
    36  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       
    37  */
       
    38 
       
    39 
       
    40 /** \file  TIWhaUtils.cpp 
       
    41  *  \brief  Utilities used by TIWha layer only
       
    42  *
       
    43  *  \see   
       
    44 */
       
    45 
       
    46 #include "TIWhaUtils.h"
       
    47 #define __FILE_ID__								FILE_ID_148
       
    48 
       
    49 /** 
       
    50 * \fn     WhaToTwdFrameType
       
    51 *  
       
    52 * \return   
       
    53 * \sa     
       
    54 */ 
       
    55 EMibTemplateType TIWhaUtils::WhaToTwdFrameType(WHA::TTemplateType aFrameType) 
       
    56 {
       
    57     switch (aFrameType)
       
    58     {
       
    59         case WHA::KBeaconTemplate: return TEMPLATE_TYPE_BEACON;
       
    60         case WHA::KProbeRequestTemplate: return TEMPLATE_TYPE_PROBE_REQUEST;
       
    61         case WHA::KNullDataTemplate: return TEMPLATE_TYPE_NULL_FRAME;
       
    62         case WHA::KProbeResponseTemplate: return TEMPLATE_TYPE_PROBE_RESPONSE;
       
    63         case WHA::KQosNullDataTemplate: return TEMPLATE_TYPE_QOS_NULL_FRAME;
       
    64         case WHA::KPSPollTemplate: return TEMPLATE_TYPE_PS_POLL;
       
    65         default:
       
    66             WLAN_OS_REPORT (("ERROR: %s aFrameType = %d\n",__FUNCTION__,aFrameType)); 
       
    67             return  TEMPLATE_TYPE_BEACON;
       
    68     }
       
    69 }
       
    70 
       
    71 /** 
       
    72 * \fn     WhaToTwdRate
       
    73 *  
       
    74 * \return   
       
    75 * \sa     
       
    76 */ 
       
    77 ERate TIWhaUtils::WhaToTwdRate (WHA::TRate aRate)
       
    78 {
       
    79     /*Important Note: aRate = 0 - means don't care. Use 1M rate same as the default rate.
       
    80 	UMAC sets probe req template with rate = 0, as it doesn't care for probe req rate*/
       
    81     switch (aRate)
       
    82     {
       
    83 		case 0:
       
    84         case WHA::KRate1Mbits:   return  DRV_RATE_1M; 
       
    85         case WHA::KRate2Mbits:   return  DRV_RATE_2M;  
       
    86         case WHA::KRate5_5Mbits: return  DRV_RATE_5_5M;
       
    87         case WHA::KRate6Mbits:   return  DRV_RATE_6M; 
       
    88         case WHA::KRate9Mbits:   return  DRV_RATE_9M; 
       
    89         case WHA::KRate11Mbits:  return  DRV_RATE_11M;  
       
    90         case WHA::KRate12Mbits:  return  DRV_RATE_12M;  
       
    91         case WHA::KRate18Mbits:  return  DRV_RATE_18M;  
       
    92         case WHA::KRate22Mbits:  return  DRV_RATE_22M;  
       
    93         case WHA::KRate24Mbits:  return  DRV_RATE_24M;  
       
    94         case WHA::KRate36Mbits:  return  DRV_RATE_36M;  
       
    95         case WHA::KRate48Mbits:  return  DRV_RATE_48M;  
       
    96         case WHA::KRate54Mbits:  return  DRV_RATE_54M;  
       
    97         default:      
       
    98             WLAN_OS_REPORT (("ERROR: %s aRate = %d\n",__FUNCTION__,aRate)); 
       
    99             return  DRV_RATE_1M;
       
   100     }
       
   101 }
       
   102 
       
   103 /** 
       
   104 * \fn     PolicyToWhaRate
       
   105 *  
       
   106 * \param ePolicyRate 
       
   107 * \return  TRate 
       
   108 * \sa     
       
   109 */ 
       
   110 WHA::TRate TIWhaUtils::PolicyToWhaRate (ETxRateClassId ePolicyRate)
       
   111 {
       
   112     switch (ePolicyRate)
       
   113     {
       
   114 #ifdef HT_SUPPORT
       
   115         case     txPolicyMcs7:      return  WHA::KRate1Mbits;
       
   116         case     txPolicyMcs6:      return  WHA::KRate1Mbits;
       
   117         case     txPolicyMcs5:      return  WHA::KRate1Mbits;
       
   118         case     txPolicyMcs4:      return  WHA::KRate1Mbits;
       
   119         case     txPolicyMcs3:      return  WHA::KRate1Mbits;
       
   120         case     txPolicyMcs2:      return  WHA::KRate1Mbits;
       
   121         case     txPolicyMcs1:      return  WHA::KRate1Mbits;
       
   122         case     txPolicyMcs0:      return  WHA::KRate1Mbits;
       
   123 #endif /* HT_SUPPORT */
       
   124         case     txPolicy54:        return  WHA::KRate54Mbits;  
       
   125         case     txPolicy48:        return  WHA::KRate48Mbits;  
       
   126         case     txPolicy36:        return  WHA::KRate36Mbits;  
       
   127         case     txPolicy24:        return  WHA::KRate24Mbits;  
       
   128         case     txPolicy22:        return  WHA::KRate22Mbits;  
       
   129         case     txPolicy18:        return  WHA::KRate18Mbits;  
       
   130         case     txPolicy12:        return  WHA::KRate12Mbits;  
       
   131         case     txPolicy11:        return  WHA::KRate11Mbits;  
       
   132         case     txPolicy9:     return  WHA::KRate9Mbits; 
       
   133         case     txPolicy6:     return  WHA::KRate6Mbits; 
       
   134         case     txPolicy5_5:       return  WHA::KRate5_5Mbits;
       
   135         case     txPolicy2:     return  WHA::KRate2Mbits;  
       
   136         case     txPolicy1:     return  WHA::KRate1Mbits;
       
   137 
       
   138         default:      
       
   139             WLAN_OS_REPORT (("ERROR: %s aRate = %d\n",__FUNCTION__,ePolicyRate)); 
       
   140             return  WHA::KRate1Mbits;
       
   141     }
       
   142 }
       
   143 
       
   144 /** 
       
   145  * \fn     WhaToMaskRate
       
   146  * \brief  Rate mask to convert the TIWha rates
       
   147  * 
       
   148  *  
       
   149  * 
       
   150  * \note    
       
   151  * \param  TIWhaRate 
       
   152   * \return  rateNask_e - corosponding aRate
       
   153  * \sa      
       
   154  */ 
       
   155 TI_UINT32  TIWhaUtils::WhaToMaskRate (WHA::TRate aRate)
       
   156 {
       
   157 
       
   158     TI_UINT32 rateMask =0;
       
   159     
       
   160         
       
   161     (aRate& WHA::KRate1Mbits )  ? rateMask |= DRV_RATE_MASK_1_BARKER :   NULL;
       
   162     (aRate& WHA::KRate2Mbits )  ? rateMask |= DRV_RATE_MASK_2_BARKER :   NULL;
       
   163     (aRate& WHA::KRate5_5Mbits )? rateMask |= DRV_RATE_MASK_5_5_CCK  :   NULL;
       
   164     (aRate& WHA::KRate6Mbits )  ? rateMask |= DRV_RATE_MASK_6_OFDM   :   NULL;
       
   165     (aRate& WHA::KRate9Mbits )  ? rateMask |= DRV_RATE_MASK_9_OFDM   :   NULL;
       
   166     (aRate& WHA::KRate11Mbits ) ? rateMask |= DRV_RATE_MASK_11_CCK   :   NULL;
       
   167     (aRate& WHA::KRate12Mbits ) ? rateMask |= DRV_RATE_MASK_12_OFDM  :   NULL;
       
   168     (aRate& WHA::KRate18Mbits ) ? rateMask |= DRV_RATE_MASK_18_OFDM  :   NULL;
       
   169     (aRate& WHA::KRate22Mbits ) ? rateMask |= DRV_RATE_MASK_22_PBCC  :   NULL;
       
   170     (aRate& WHA::KRate24Mbits ) ? rateMask |= DRV_RATE_MASK_24_OFDM  :   NULL;
       
   171     (aRate& WHA::KRate33Mbits ) ? rateMask |= DRV_RATE_MASK_1_BARKER :   NULL;
       
   172     (aRate& WHA::KRate36Mbits ) ? rateMask |= DRV_RATE_MASK_36_OFDM  :   NULL;
       
   173     (aRate& WHA::KRate48Mbits ) ? rateMask |= DRV_RATE_MASK_48_OFDM  :   NULL;
       
   174     (aRate& WHA::KRate54Mbits ) ? rateMask |= DRV_RATE_MASK_54_OFDM  :   NULL;
       
   175 
       
   176     if (rateMask == 0)
       
   177 	{
       
   178                  WLAN_OS_REPORT (("ERROR: %s aRate = %d\n",__FUNCTION__,aRate)); 
       
   179         rateMask|= DRV_RATE_MASK_1_BARKER; // as default
       
   180 }
       
   181 
       
   182     return rateMask;
       
   183  }
       
   184 
       
   185 
       
   186 /** 
       
   187  * \fn     HTWhaToMaskRate
       
   188  * \brief  HT Rate mask to convert the TIWha rates
       
   189  * 
       
   190  *  
       
   191  * 
       
   192  * \note    
       
   193  * \param  TIWhaRate 
       
   194  * \param  THtMcsSet
       
   195   * \return  rateNask_e - corosponding aRate
       
   196  * \sa      
       
   197  */ 
       
   198 #ifdef HT_SUPPORT
       
   199 TI_UINT32  TIWhaUtils::HTWhaToMaskRate (WHA::TRate aRate,WHA::THtMcsSet	aMcsRates)
       
   200 {
       
   201 	TI_UINT32 rateMask =0;
       
   202     
       
   203         
       
   204     (aRate& WHA::KRate1Mbits )  ? rateMask |= DRV_RATE_MASK_1_BARKER :   NULL;
       
   205     (aRate& WHA::KRate2Mbits )  ? rateMask |= DRV_RATE_MASK_2_BARKER :   NULL;
       
   206     (aRate& WHA::KRate5_5Mbits )? rateMask |= DRV_RATE_MASK_5_5_CCK  :   NULL;
       
   207     (aRate& WHA::KRate6Mbits )  ? rateMask |= DRV_RATE_MASK_6_OFDM   :   NULL;
       
   208     (aRate& WHA::KRate9Mbits )  ? rateMask |= DRV_RATE_MASK_9_OFDM   :   NULL;
       
   209     (aRate& WHA::KRate11Mbits ) ? rateMask |= DRV_RATE_MASK_11_CCK   :   NULL;
       
   210     (aRate& WHA::KRate12Mbits ) ? rateMask |= DRV_RATE_MASK_12_OFDM  :   NULL;
       
   211     (aRate& WHA::KRate18Mbits ) ? rateMask |= DRV_RATE_MASK_18_OFDM  :   NULL;
       
   212     (aRate& WHA::KRate22Mbits ) ? rateMask |= DRV_RATE_MASK_22_PBCC  :   NULL;
       
   213     (aRate& WHA::KRate24Mbits ) ? rateMask |= DRV_RATE_MASK_24_OFDM  :   NULL;
       
   214     (aRate& WHA::KRate33Mbits ) ? rateMask |= DRV_RATE_MASK_1_BARKER :   NULL;
       
   215     (aRate& WHA::KRate36Mbits ) ? rateMask |= DRV_RATE_MASK_36_OFDM  :   NULL;
       
   216     (aRate& WHA::KRate48Mbits ) ? rateMask |= DRV_RATE_MASK_48_OFDM  :   NULL;
       
   217     (aRate& WHA::KRate54Mbits ) ? rateMask |= DRV_RATE_MASK_54_OFDM  :   NULL;
       
   218 
       
   219 	/* MCS Rates */
       
   220 	(aMcsRates[0] & WHA_MCS_0)	? rateMask |= DRV_RATE_MASK_MCS_0_OFDM : NULL;
       
   221 	(aMcsRates[0] & WHA_MCS_1)	? rateMask |= DRV_RATE_MASK_MCS_1_OFDM : NULL;
       
   222 	(aMcsRates[0] & WHA_MCS_2)	? rateMask |= DRV_RATE_MASK_MCS_2_OFDM : NULL;
       
   223 	(aMcsRates[0] & WHA_MCS_3)	? rateMask |= DRV_RATE_MASK_MCS_3_OFDM : NULL;
       
   224 	(aMcsRates[0] & WHA_MCS_4)	? rateMask |= DRV_RATE_MASK_MCS_4_OFDM : NULL;
       
   225 	(aMcsRates[0] & WHA_MCS_5)	? rateMask |= DRV_RATE_MASK_MCS_5_OFDM : NULL;
       
   226 	(aMcsRates[0] & WHA_MCS_6)	? rateMask |= DRV_RATE_MASK_MCS_6_OFDM : NULL;
       
   227 	(aMcsRates[0] & WHA_MCS_7)	? rateMask |= DRV_RATE_MASK_MCS_7_OFDM : NULL;
       
   228 
       
   229 	if (rateMask == 0)
       
   230 	{
       
   231         WLAN_OS_REPORT (("ERROR: %s aRate = %d\n",__FUNCTION__,aRate)); 
       
   232         rateMask|= DRV_RATE_MASK_1_BARKER; // as default
       
   233 	}
       
   234 	return rateMask;
       
   235 }
       
   236 #endif /* HT_SUPPORT */
       
   237 
       
   238 
       
   239 TI_UINT32 TIWhaUtils::WhaRateToRatePolicy(WHA::StxAutoRatePolicy* pTxAutoRatePolicy)
       
   240 {
       
   241 	TI_UINT32	aRateMask = 0;
       
   242 	/* B/G Rates */
       
   243 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate1Mbits) 	? aRateMask |= HW_BIT_RATE_1MBPS	: NULL;
       
   244 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate2Mbits) 	? aRateMask |= HW_BIT_RATE_2MBPS	: NULL;
       
   245 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate5_5Mbits)	? aRateMask |= HW_BIT_RATE_5_5MBPS	: NULL;
       
   246 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate6Mbits) 	? aRateMask |= HW_BIT_RATE_6MBPS	: NULL;
       
   247 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate9Mbits) 	? aRateMask |= HW_BIT_RATE_9MBPS	: NULL;
       
   248 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate11Mbits) 	? aRateMask |= HW_BIT_RATE_11MBPS	: NULL;
       
   249 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate12Mbits) 	? aRateMask |= HW_BIT_RATE_12MBPS	: NULL;
       
   250 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate18Mbits) 	? aRateMask |= HW_BIT_RATE_18MBPS	: NULL;
       
   251 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate22Mbits) 	? aRateMask |= HW_BIT_RATE_22MBPS	: NULL;
       
   252 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate24Mbits) 	? aRateMask |= HW_BIT_RATE_24MBPS	: NULL;
       
   253 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate36Mbits) 	? aRateMask |= HW_BIT_RATE_36MBPS	: NULL;
       
   254 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate48Mbits) 	? aRateMask |= HW_BIT_RATE_48MBPS	: NULL;
       
   255 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate54Mbits) 	? aRateMask |= HW_BIT_RATE_54MBPS	: NULL;
       
   256     
       
   257 	return aRateMask;
       
   258 }
       
   259 
       
   260 #ifdef HT_SUPPORT
       
   261 TI_UINT32 TIWhaUtils::HTWhaRateToRatePolicy(WHA::StxAutoRatePolicy* pTxAutoRatePolicy)
       
   262 {
       
   263 	TI_UINT32	aRateMask = 0;
       
   264 	/* B/G Rates */
       
   265 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate1Mbits) 	? aRateMask |= HW_BIT_RATE_1MBPS	: NULL;
       
   266 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate2Mbits) 	? aRateMask |= HW_BIT_RATE_2MBPS	: NULL;
       
   267 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate5_5Mbits)	? aRateMask |= HW_BIT_RATE_5_5MBPS	: NULL;
       
   268 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate6Mbits) 	? aRateMask |= HW_BIT_RATE_6MBPS	: NULL;
       
   269 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate9Mbits) 	? aRateMask |= HW_BIT_RATE_9MBPS	: NULL;
       
   270 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate11Mbits) 	? aRateMask |= HW_BIT_RATE_11MBPS	: NULL;
       
   271 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate12Mbits) 	? aRateMask |= HW_BIT_RATE_12MBPS	: NULL;
       
   272 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate18Mbits) 	? aRateMask |= HW_BIT_RATE_18MBPS	: NULL;
       
   273 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate22Mbits) 	? aRateMask |= HW_BIT_RATE_22MBPS	: NULL;
       
   274 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate24Mbits) 	? aRateMask |= HW_BIT_RATE_24MBPS	: NULL;
       
   275 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate36Mbits) 	? aRateMask |= HW_BIT_RATE_36MBPS	: NULL;
       
   276 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate48Mbits) 	? aRateMask |= HW_BIT_RATE_48MBPS	: NULL;
       
   277 	(pTxAutoRatePolicy->iBAndGRates & WHA::KRate54Mbits) 	? aRateMask |= HW_BIT_RATE_54MBPS	: NULL;
       
   278 
       
   279 	/* 11n Rates */
       
   280 	(pTxAutoRatePolicy->iMcsSet[0] & WHA_MCS_0) 			? aRateMask |= HW_BIT_RATE_MCS_0	: NULL;
       
   281 	(pTxAutoRatePolicy->iMcsSet[0] & WHA_MCS_1) 			? aRateMask |= HW_BIT_RATE_MCS_1	: NULL;
       
   282 	(pTxAutoRatePolicy->iMcsSet[0] & WHA_MCS_2) 			? aRateMask |= HW_BIT_RATE_MCS_2	: NULL;
       
   283 	(pTxAutoRatePolicy->iMcsSet[0] & WHA_MCS_3) 	   	 	? aRateMask |= HW_BIT_RATE_MCS_3	: NULL;
       
   284 	(pTxAutoRatePolicy->iMcsSet[0] & WHA_MCS_4) 	   	 	? aRateMask |= HW_BIT_RATE_MCS_4	: NULL;
       
   285 	(pTxAutoRatePolicy->iMcsSet[0] & WHA_MCS_5) 			? aRateMask |= HW_BIT_RATE_MCS_5	: NULL;
       
   286 	(pTxAutoRatePolicy->iMcsSet[0] & WHA_MCS_6) 			? aRateMask |= HW_BIT_RATE_MCS_6	: NULL;
       
   287 	(pTxAutoRatePolicy->iMcsSet[0] & WHA_MCS_7) 			? aRateMask |= HW_BIT_RATE_MCS_7	: NULL;
       
   288 
       
   289 	return aRateMask;
       
   290 }
       
   291 #endif /* HT_SUPPORT */