1/* 2 * rate.h 3 * 4 * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * * Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * * Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * * Neither the name Texas Instruments nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 35/** \file rate.h 36 * \brief Rate conversion 37 * 38 * \see rate.c 39 */ 40 41#ifndef RATE_H 42#define RATE_H 43 44#include "TWDriver.h" 45 46 47typedef enum 48{ 49 NET_BASIC_MASK = 0x80, 50 NET_RATE_1M = 0x02, 51 NET_RATE_2M = 0x04, 52 NET_RATE_5_5M = 0x0B, 53 NET_RATE_11M = 0x16, 54 NET_RATE_22M = 0x2C, 55 NET_RATE_6M = 0x0C, 56 NET_RATE_9M = 0x12, 57 NET_RATE_12M = 0x18, 58 NET_RATE_18M = 0x24, 59 NET_RATE_24M = 0x30, 60 NET_RATE_36M = 0x48, 61 NET_RATE_48M = 0x60, 62 NET_RATE_54M = 0x6C, 63 NET_RATE_MCS0 = 0x0D, /* MCS0 6.5M */ 64 NET_RATE_MCS1 = 0x1A, /* MCS1 13M */ 65 NET_RATE_MCS2 = 0x27, /* MCS2 19.5M */ 66 NET_RATE_MCS3 = 0x34, /* MCS3 26M */ 67 NET_RATE_MCS4 = 0x4E, /* MCS4 39M */ 68 NET_RATE_MCS5 = 0x68, /* MCS5 52M */ 69 NET_RATE_MCS6 = 0x75, /* MCS6 58.5M */ 70 NET_RATE_MCS7 = 0x7F /* MCS7 65M */ 71 72} ENetRate; 73 74 75typedef enum 76{ 77 NET_RATE_1M_BASIC = (NET_RATE_1M | NET_BASIC_MASK), 78 NET_RATE_2M_BASIC = (NET_RATE_2M | NET_BASIC_MASK), 79 NET_RATE_5_5M_BASIC = (NET_RATE_5_5M | NET_BASIC_MASK), 80 NET_RATE_11M_BASIC = (NET_RATE_11M | NET_BASIC_MASK), 81 NET_RATE_22M_BASIC = (NET_RATE_22M | NET_BASIC_MASK), 82 NET_RATE_6M_BASIC = (NET_RATE_6M | NET_BASIC_MASK), 83 NET_RATE_9M_BASIC = (NET_RATE_9M | NET_BASIC_MASK), 84 NET_RATE_12M_BASIC = (NET_RATE_12M | NET_BASIC_MASK), 85 NET_RATE_18M_BASIC = (NET_RATE_18M | NET_BASIC_MASK), 86 NET_RATE_24M_BASIC = (NET_RATE_24M | NET_BASIC_MASK), 87 NET_RATE_36M_BASIC = (NET_RATE_36M | NET_BASIC_MASK), 88 NET_RATE_48M_BASIC = (NET_RATE_48M | NET_BASIC_MASK), 89 NET_RATE_54M_BASIC = (NET_RATE_54M | NET_BASIC_MASK), 90 NET_RATE_MCS0_BASIC = (NET_RATE_MCS0 | NET_BASIC_MASK), 91 NET_RATE_MCS1_BASIC = (NET_RATE_MCS1 | NET_BASIC_MASK), 92 NET_RATE_MCS2_BASIC = (NET_RATE_MCS2 | NET_BASIC_MASK), 93 NET_RATE_MCS3_BASIC = (NET_RATE_MCS3 | NET_BASIC_MASK), 94 NET_RATE_MCS4_BASIC = (NET_RATE_MCS4 | NET_BASIC_MASK), 95 NET_RATE_MCS5_BASIC = (NET_RATE_MCS5 | NET_BASIC_MASK), 96 NET_RATE_MCS6_BASIC = (NET_RATE_MCS6 | NET_BASIC_MASK), 97 NET_RATE_MCS7_BASIC = (NET_RATE_MCS7 | NET_BASIC_MASK) 98 99} ENetRateBasic; 100 101 102typedef enum 103{ 104 BASIC_RATE_SET_1_2 = 0, 105 BASIC_RATE_SET_1_2_5_5_11 = 1, 106 BASIC_RATE_SET_UP_TO_12 = 2, 107 BASIC_RATE_SET_UP_TO_18 = 3, 108 BASIC_RATE_SET_1_2_5_5_6_11_12_24 = 4, 109 BASIC_RATE_SET_UP_TO_36 = 5, 110 BASIC_RATE_SET_UP_TO_48 = 6, 111 BASIC_RATE_SET_UP_TO_54 = 7, 112 BASIC_RATE_SET_UP_TO_24 = 8, 113 BASIC_RATE_SET_6_12_24 = 9, 114 BASIC_RATE_SET_ALL_MCS_RATES = 10 115} EBasicRateSet; 116 117 118/* Keep increasing define values - related to increasing suported rates */ 119typedef enum 120{ 121 SUPPORTED_RATE_SET_1_2 = 0, 122 SUPPORTED_RATE_SET_1_2_5_5_11 = 1, 123 SUPPORTED_RATE_SET_1_2_5_5_11_22 = 2, 124 SUPPORTED_RATE_SET_UP_TO_18 = 3, 125 SUPPORTED_RATE_SET_UP_TO_24 = 4, 126 SUPPORTED_RATE_SET_UP_TO_36 = 5, 127 SUPPORTED_RATE_SET_UP_TO_48 = 6, 128 SUPPORTED_RATE_SET_UP_TO_54 = 7, 129 SUPPORTED_RATE_SET_ALL = 8, 130 SUPPORTED_RATE_SET_ALL_OFDM = 9, 131 SUPPORTED_RATE_SET_ALL_MCS_RATES = 10 132 133} ESupportedRateSet; 134 135 136typedef enum 137{ 138 DRV_MODULATION_NONE = 0, 139 DRV_MODULATION_CCK = 1, 140 DRV_MODULATION_PBCC = 2, 141 DRV_MODULATION_QPSK = 3, 142 DRV_MODULATION_OFDM = 4 143 144} EModulationType; 145 146 147#define NET_BASIC_RATE(rate) ((rate) & NET_BASIC_MASK) 148#define NET_ACTIVE_RATE(rate) (!NET_BASIC_RATE (rate)) 149 150 151ERate rate_NumberToDrv (TI_UINT32 rate); 152TI_UINT32 rate_DrvToNumber (ERate eRate); 153ERate rate_NetToDrv (TI_UINT32 rate); 154ENetRate rate_DrvToNet (ERate eRate); 155TI_STATUS rate_DrvBitmapToNetStr (TI_UINT32 uSuppRatesBitMap, TI_UINT32 uBasicRatesBitMap, TI_UINT8 *string, TI_UINT32 *len, TI_UINT32 *pFirstOfdmRate); 156TI_STATUS rate_NetStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string, TI_UINT32 len); 157TI_STATUS rate_NetBasicStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string, TI_UINT32 len); 158TI_STATUS rate_McsNetStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string); 159TI_STATUS rate_DrvBitmapToHwBitmap (TI_UINT32 uDrvBitmap, TI_UINT32 *pHwBitmap); 160TI_STATUS rate_PolicyToDrv (ETxRateClassId ePolicyRate, ERate *eAppRate); 161TI_UINT32 rate_BasicToDrvBitmap (EBasicRateSet eBasicRateSet, TI_BOOL bDot11a); 162TI_UINT32 rate_SupportedToDrvBitmap (ESupportedRateSet eSupportedRateSet, TI_BOOL bDot11a); 163 164ERate rate_GetMaxFromDrvBitmap (TI_UINT32 uBitMap); 165ENetRate rate_GetMaxBasicFromStr (TI_UINT8 *pRatesString, TI_UINT32 len, ENetRate eMaxRate); 166ENetRate rate_GetMaxActiveFromStr (TI_UINT8 *pRatesString, TI_UINT32 len, ENetRate eMaxRate); 167 168TI_STATUS rate_ValidateVsBand (TI_UINT32 *pSupportedMask, TI_UINT32 *pBasicMask, TI_BOOL bDot11a); 169 170TI_UINT32 rate_GetDrvBitmapForDefaultBasicSet (void); 171TI_UINT32 rate_GetDrvBitmapForDefaultSupporteSet (void); 172 173#endif 174 175 176