utils/rate.h
changeset 0 10c42ec6c05f
equal deleted inserted replaced
-1:000000000000 0:10c42ec6c05f
       
     1 /*
       
     2  * rate.h
       
     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  rate.h
       
    41  *  \brief Rate conversion
       
    42  *
       
    43  *  \see   rate.c
       
    44  */
       
    45 
       
    46 
       
    47 
       
    48 
       
    49 #ifndef RATE_H
       
    50 #define RATE_H
       
    51 
       
    52 #include "TWDriver.h"
       
    53 
       
    54 
       
    55 typedef enum
       
    56 {
       
    57     NET_BASIC_MASK      = 0x80,
       
    58     NET_RATE_1M         = 0x02,
       
    59     NET_RATE_2M         = 0x04,
       
    60     NET_RATE_5_5M       = 0x0B,
       
    61     NET_RATE_11M        = 0x16,
       
    62     NET_RATE_22M        = 0x2C,
       
    63     NET_RATE_6M         = 0x0C,
       
    64     NET_RATE_9M         = 0x12,
       
    65     NET_RATE_12M        = 0x18,
       
    66     NET_RATE_18M        = 0x24,
       
    67     NET_RATE_24M        = 0x30,
       
    68     NET_RATE_36M        = 0x48,
       
    69     NET_RATE_48M        = 0x60,
       
    70     NET_RATE_54M        = 0x6C,
       
    71     NET_RATE_MCS0       = 0x0D, /* MCS0 6.5M */
       
    72     NET_RATE_MCS1       = 0x1A, /* MCS1 13M */
       
    73     NET_RATE_MCS2       = 0x27, /* MCS2 19.5M */
       
    74     NET_RATE_MCS3       = 0x34, /* MCS3 26M */
       
    75     NET_RATE_MCS4       = 0x4E, /* MCS4 39M */
       
    76     NET_RATE_MCS5       = 0x68, /* MCS5 52M */
       
    77     NET_RATE_MCS6       = 0x75, /* MCS6 58.5M */
       
    78     NET_RATE_MCS7       = 0x7F  /* MCS7 65M */
       
    79 
       
    80 } ENetRate;
       
    81 
       
    82 
       
    83 typedef enum 
       
    84 {
       
    85     NET_RATE_1M_BASIC   = (NET_RATE_1M   | NET_BASIC_MASK),
       
    86     NET_RATE_2M_BASIC   = (NET_RATE_2M   | NET_BASIC_MASK),
       
    87     NET_RATE_5_5M_BASIC = (NET_RATE_5_5M | NET_BASIC_MASK),
       
    88     NET_RATE_11M_BASIC  = (NET_RATE_11M  | NET_BASIC_MASK),
       
    89     NET_RATE_22M_BASIC  = (NET_RATE_22M  | NET_BASIC_MASK),
       
    90     NET_RATE_6M_BASIC   = (NET_RATE_6M   | NET_BASIC_MASK),
       
    91     NET_RATE_9M_BASIC   = (NET_RATE_9M   | NET_BASIC_MASK),
       
    92     NET_RATE_12M_BASIC  = (NET_RATE_12M  | NET_BASIC_MASK),
       
    93     NET_RATE_18M_BASIC  = (NET_RATE_18M  | NET_BASIC_MASK),
       
    94     NET_RATE_24M_BASIC  = (NET_RATE_24M  | NET_BASIC_MASK),
       
    95     NET_RATE_36M_BASIC  = (NET_RATE_36M  | NET_BASIC_MASK),
       
    96     NET_RATE_48M_BASIC  = (NET_RATE_48M  | NET_BASIC_MASK),
       
    97     NET_RATE_54M_BASIC  = (NET_RATE_54M  | NET_BASIC_MASK),
       
    98     NET_RATE_MCS0_BASIC  = (NET_RATE_MCS0  | NET_BASIC_MASK),
       
    99     NET_RATE_MCS1_BASIC  = (NET_RATE_MCS1  | NET_BASIC_MASK),
       
   100     NET_RATE_MCS2_BASIC  = (NET_RATE_MCS2  | NET_BASIC_MASK),
       
   101     NET_RATE_MCS3_BASIC  = (NET_RATE_MCS3  | NET_BASIC_MASK),
       
   102     NET_RATE_MCS4_BASIC  = (NET_RATE_MCS4  | NET_BASIC_MASK),
       
   103     NET_RATE_MCS5_BASIC  = (NET_RATE_MCS5  | NET_BASIC_MASK),
       
   104     NET_RATE_MCS6_BASIC  = (NET_RATE_MCS6  | NET_BASIC_MASK),
       
   105     NET_RATE_MCS7_BASIC  = (NET_RATE_MCS7  | NET_BASIC_MASK)
       
   106 
       
   107 } ENetRateBasic;
       
   108 
       
   109 
       
   110 typedef enum
       
   111 {
       
   112     BASIC_RATE_SET_1_2                  = 0,
       
   113     BASIC_RATE_SET_1_2_5_5_11           = 1,
       
   114     BASIC_RATE_SET_UP_TO_12             = 2,
       
   115     BASIC_RATE_SET_UP_TO_18             = 3,
       
   116     BASIC_RATE_SET_1_2_5_5_6_11_12_24   = 4,
       
   117     BASIC_RATE_SET_UP_TO_36             = 5,
       
   118     BASIC_RATE_SET_UP_TO_48             = 6,
       
   119     BASIC_RATE_SET_UP_TO_54             = 7,
       
   120     BASIC_RATE_SET_UP_TO_24             = 8,
       
   121     BASIC_RATE_SET_6_12_24              = 9,
       
   122     BASIC_RATE_SET_ALL_MCS_RATES        = 10
       
   123 } EBasicRateSet;
       
   124 
       
   125 
       
   126 /* Keep increasing define values - related to increasing suported rates */
       
   127 typedef enum
       
   128 {
       
   129     SUPPORTED_RATE_SET_1_2              = 0,
       
   130     SUPPORTED_RATE_SET_1_2_5_5_11       = 1,
       
   131     SUPPORTED_RATE_SET_1_2_5_5_11_22    = 2,
       
   132     SUPPORTED_RATE_SET_UP_TO_18         = 3,
       
   133     SUPPORTED_RATE_SET_UP_TO_24         = 4,
       
   134     SUPPORTED_RATE_SET_UP_TO_36         = 5,
       
   135     SUPPORTED_RATE_SET_UP_TO_48         = 6,
       
   136     SUPPORTED_RATE_SET_UP_TO_54         = 7,
       
   137     SUPPORTED_RATE_SET_ALL              = 8,
       
   138     SUPPORTED_RATE_SET_ALL_OFDM         = 9,
       
   139     SUPPORTED_RATE_SET_ALL_MCS_RATES    = 10
       
   140 
       
   141 } ESupportedRateSet;
       
   142 
       
   143 
       
   144 typedef enum
       
   145 {
       
   146     DRV_MODULATION_NONE     = 0,
       
   147     DRV_MODULATION_CCK      = 1,
       
   148     DRV_MODULATION_PBCC     = 2,
       
   149     DRV_MODULATION_QPSK     = 3,
       
   150     DRV_MODULATION_OFDM     = 4
       
   151 
       
   152 } EModulationType;
       
   153 
       
   154 
       
   155 #define NET_BASIC_RATE(rate)       ((rate) & NET_BASIC_MASK)
       
   156 #define NET_ACTIVE_RATE(rate)      (!NET_BASIC_RATE (rate))
       
   157 
       
   158 
       
   159 ERate     rate_NumberToDrv (TI_UINT32 rate);
       
   160 TI_UINT32 rate_DrvToNumber (ERate eRate);
       
   161 ERate     rate_NetToDrv (TI_UINT32 rate);
       
   162 ENetRate  rate_DrvToNet (ERate eRate);
       
   163 TI_STATUS rate_DrvBitmapToNetStr (TI_UINT32 uSuppRatesBitMap, TI_UINT32 uBasicRatesBitMap, TI_UINT8 *string, TI_UINT32 *len, TI_UINT32 *pFirstOfdmRate);
       
   164 TI_STATUS rate_NetStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string, TI_UINT32 len);
       
   165 TI_STATUS rate_NetBasicStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string, TI_UINT32 len);
       
   166 TI_STATUS rate_McsNetStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string);
       
   167 TI_STATUS rate_DrvBitmapToHwBitmap (TI_UINT32 uDrvBitmap, TI_UINT32 *pHwBitmap);
       
   168 TI_STATUS rate_PolicyToDrv (ETxRateClassId ePolicyRate, ERate *eAppRate);
       
   169 TI_UINT32 rate_BasicToDrvBitmap (EBasicRateSet eBasicRateSet, TI_BOOL bDot11a);
       
   170 TI_UINT32 rate_SupportedToDrvBitmap (ESupportedRateSet eSupportedRateSet, TI_BOOL bDot11a);
       
   171 
       
   172 ERate     rate_GetMaxFromDrvBitmap (TI_UINT32 uBitMap);
       
   173 ENetRate  rate_GetMaxBasicFromStr (TI_UINT8 *pRatesString, TI_UINT32 len, ENetRate eMaxRate);
       
   174 ENetRate  rate_GetMaxActiveFromStr (TI_UINT8 *pRatesString, TI_UINT32 len, ENetRate eMaxRate);
       
   175 
       
   176 TI_STATUS rate_ValidateVsBand (TI_UINT32 *pSupportedMask, TI_UINT32 *pBasicMask, TI_BOOL bDot11a);
       
   177 
       
   178 TI_UINT32 rate_GetDrvBitmapForDefaultBasicSet (void);
       
   179 TI_UINT32 rate_GetDrvBitmapForDefaultSupporteSet (void);
       
   180 
       
   181 #endif
       
   182 
       
   183