FreeCalypso > hg > fc-magnetite
comparison src/g23m-gprs/grlc/grlc_tpcg.c @ 183:219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 13 Oct 2016 04:24:13 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 182:f02d0a0e1849 | 183:219afcfc6250 |
|---|---|
| 1 /* | |
| 2 +----------------------------------------------------------------------------- | |
| 3 | Project : GPRS (8441) | |
| 4 | Modul : GRLC | |
| 5 +----------------------------------------------------------------------------- | |
| 6 | Copyright 2002 Texas Instruments Berlin, AG | |
| 7 | All rights reserved. | |
| 8 | | |
| 9 | This file is confidential and a trade secret of Texas | |
| 10 | Instruments Berlin, AG | |
| 11 | The receipt of or possession of this file does not convey | |
| 12 | any rights to reproduce or disclose its contents or to | |
| 13 | manufacture, use, or sell anything it may describe, in | |
| 14 | whole, or in part, without the specific written consent of | |
| 15 | Texas Instruments Berlin, AG. | |
| 16 +----------------------------------------------------------------------------- | |
| 17 | Purpose : This module implements local functions for service | |
| 18 | TPC of entity GRLC. | |
| 19 +----------------------------------------------------------------------------- | |
| 20 */ | |
| 21 | |
| 22 /* | |
| 23 * !!!ATTENTION!!!ATTENTION!!!ATTENTION!!!ATTENTION!!!ATTENTION!!!ATTENTION!!! | |
| 24 * | |
| 25 * This file was previously named grlc_tpcf.c. | |
| 26 * | |
| 27 * A renaming was necessary due to an ClearCase evil twin problem across the | |
| 28 * TCS2/TCS3/TCS4 and the TCS5 programs. | |
| 29 * | |
| 30 * The same applied for the file grlc_tpcf.h. | |
| 31 * | |
| 32 * !!!ATTENTION!!!ATTENTION!!!ATTENTION!!!ATTENTION!!!ATTENTION!!!ATTENTION!!! | |
| 33 */ | |
| 34 | |
| 35 #ifndef GRLC_TPCG_C | |
| 36 #define GRLC_TPCG_C | |
| 37 #endif /* #ifndef GRLC_TPCG_C */ | |
| 38 | |
| 39 #define ENTITY_GRLC | |
| 40 | |
| 41 /*==== INCLUDES =============================================================*/ | |
| 42 | |
| 43 #include <string.h> | |
| 44 #include "typedefs.h" | |
| 45 #include "vsi.h" | |
| 46 #include "macdef.h" | |
| 47 #include "gprs.h" | |
| 48 #include "gsm.h" | |
| 49 #include "ccdapi.h" | |
| 50 #include "prim.h" | |
| 51 #include "message.h" | |
| 52 #include "grlc.h" | |
| 53 | |
| 54 /*==== CONST ================================================================*/ | |
| 55 | |
| 56 #define MIN_PCL_GSM900 31 /* minimum power control level GSM 900 */ | |
| 57 #define MAX_PCL_GSM900 0 /* maximum power control level GSM 900 */ | |
| 58 #define MIN_PCL_DCS1800 28 /* minimum power control level DCS 1800 */ | |
| 59 #define MAX_PCL_DCS1800 29 /* maximum power control level DCS 1800 */ | |
| 60 #define MIN_PCL_PCS1900 21 /* minimum power control level PCS 1900 */ | |
| 61 #define MAX_PCL_PCS1900 22 /* maximum power control level PCS 1900 */ | |
| 62 | |
| 63 #define GAMMA_0_GSM900 39 | |
| 64 #define GAMMA_0_DCS1800 36 | |
| 65 #define GAMMA_0_PCS1900 36 | |
| 66 | |
| 67 #define MAX_PCL 32 | |
| 68 | |
| 69 /*==== DIAGNOSTICS ==========================================================*/ | |
| 70 | |
| 71 /*==== LOCAL VARS ===========================================================*/ | |
| 72 /* | |
| 73 * The following tables converts the air-interface coding of | |
| 74 * the system information parameter MAX_TXPWR_CCCH to a value | |
| 75 * in dBm depending on the frequency standard (GSM, DCS or PCS). | |
| 76 */ | |
| 77 const UBYTE pcl_to_dbm_gsm [MAX_PCL] = | |
| 78 { 39, /* 0 -> 39 dBm */ | |
| 79 39, /* 1 -> 39 dBm */ | |
| 80 39, /* 2 -> 39 dBm */ | |
| 81 37, /* 3 -> 37 dBm */ | |
| 82 35, /* 4 -> 35 dBm */ | |
| 83 33, /* 5 -> 33 dBm */ | |
| 84 31, /* 6 -> 31 dBm */ | |
| 85 29, /* 7 -> 29 dBm */ | |
| 86 27, /* 8 -> 27 dBm */ | |
| 87 25, /* 9 -> 25 dBm */ | |
| 88 23, /* 10 -> 23 dBm */ | |
| 89 21, /* 11 -> 21 dBm */ | |
| 90 19, /* 12 -> 19 dBm */ | |
| 91 17, /* 13 -> 17 dBm */ | |
| 92 15, /* 14 -> 15 dBm */ | |
| 93 13, /* 15 -> 13 dBm */ | |
| 94 11, /* 16 -> 11 dBm */ | |
| 95 9, /* 17 -> 9 dBm */ | |
| 96 7, /* 18 -> 7 dBm */ | |
| 97 5, /* 19 -> 5 dBm */ | |
| 98 5, /* 20 -> 5 dBm */ | |
| 99 5, /* 21 -> 5 dBm */ | |
| 100 5, /* 22 -> 5 dBm */ | |
| 101 5, /* 23 -> 5 dBm */ | |
| 102 5, /* 24 -> 5 dBm */ | |
| 103 5, /* 25 -> 5 dBm */ | |
| 104 5, /* 26 -> 5 dBm */ | |
| 105 5, /* 27 -> 5 dBm */ | |
| 106 5, /* 28 -> 5 dBm */ | |
| 107 5, /* 29 -> 5 dBm */ | |
| 108 5, /* 30 -> 5 dBm */ | |
| 109 5 /* 31 -> 5 dBm */ | |
| 110 }; | |
| 111 | |
| 112 const UBYTE pcl_to_dbm_dcs [MAX_PCL] = | |
| 113 { 30, /* 0 -> 30 dBm */ | |
| 114 28, /* 1 -> 28 dBm */ | |
| 115 26, /* 2 -> 26 dBm */ | |
| 116 24, /* 3 -> 24 dBm */ | |
| 117 22, /* 4 -> 22 dBm */ | |
| 118 20, /* 5 -> 20 dBm */ | |
| 119 18, /* 6 -> 18 dBm */ | |
| 120 16, /* 7 -> 16 dBm */ | |
| 121 14, /* 8 -> 14 dBm */ | |
| 122 12, /* 9 -> 12 dBm */ | |
| 123 10, /* 10 -> 10 dBm */ | |
| 124 8, /* 11 -> 8 dBm */ | |
| 125 6, /* 12 -> 6 dBm */ | |
| 126 4, /* 13 -> 4 dBm */ | |
| 127 2, /* 14 -> 2 dBm */ | |
| 128 0, /* 15 -> 0 dBm */ | |
| 129 0, /* 16 -> 0 dBm */ | |
| 130 0, /* 17 -> 0 dBm */ | |
| 131 0, /* 18 -> 0 dBm */ | |
| 132 0, /* 19 -> 0 dBm */ | |
| 133 0, /* 20 -> 0 dBm */ | |
| 134 0, /* 21 -> 0 dBm */ | |
| 135 0, /* 22 -> 0 dBm */ | |
| 136 0, /* 23 -> 0 dBm */ | |
| 137 0, /* 24 -> 0 dBm */ | |
| 138 0, /* 25 -> 0 dBm */ | |
| 139 0, /* 26 -> 0 dBm */ | |
| 140 0, /* 27 -> 0 dBm */ | |
| 141 0, /* 28 -> 0 dBm */ | |
| 142 36, /* 29 -> 36 dBm */ | |
| 143 34, /* 30 -> 34 dBm */ | |
| 144 32 /* 31 -> 32 dBm */ | |
| 145 }; | |
| 146 | |
| 147 const UBYTE pcl_to_dbm_pcs [MAX_PCL] = | |
| 148 { 30, /* 0 -> 30 dBm */ | |
| 149 28, /* 1 -> 28 dBm */ | |
| 150 26, /* 2 -> 26 dBm */ | |
| 151 24, /* 3 -> 24 dBm */ | |
| 152 22, /* 4 -> 22 dBm */ | |
| 153 20, /* 5 -> 20 dBm */ | |
| 154 18, /* 6 -> 18 dBm */ | |
| 155 16, /* 7 -> 16 dBm */ | |
| 156 14, /* 8 -> 14 dBm */ | |
| 157 12, /* 9 -> 12 dBm */ | |
| 158 10, /* 10 -> 10 dBm */ | |
| 159 8, /* 11 -> 8 dBm */ | |
| 160 6, /* 12 -> 6 dBm */ | |
| 161 4, /* 13 -> 4 dBm */ | |
| 162 2, /* 14 -> 2 dBm */ | |
| 163 0, /* 15 -> 0 dBm */ | |
| 164 0, /* 16 -> 0 dBm */ | |
| 165 0, /* 17 -> 0 dBm */ | |
| 166 0, /* 18 -> 0 dBm */ | |
| 167 0, /* 19 -> 0 dBm */ | |
| 168 0, /* 20 -> 0 dBm */ | |
| 169 0, /* 21 -> 0 dBm */ | |
| 170 33, /* 22 -> 33 dBm */ | |
| 171 33, /* 23 -> 33 dBm */ | |
| 172 33, /* 24 -> 33 dBm */ | |
| 173 33, /* 25 -> 33 dBm */ | |
| 174 33, /* 26 -> 33 dBm */ | |
| 175 33, /* 27 -> 33 dBm */ | |
| 176 33, /* 28 -> 33 dBm */ | |
| 177 33, /* 29 -> 33 dBm */ | |
| 178 33, /* 30 -> 33 dBm */ | |
| 179 32 /* 31 -> 32 dBm */ | |
| 180 }; | |
| 181 | |
| 182 /*==== PRIVATE FUNCTIONS ====================================================*/ | |
| 183 | |
| 184 /*==== PUBLIC FUNCTIONS =====================================================*/ | |
| 185 /* | |
| 186 +------------------------------------------------------------------------------ | |
| 187 | Function : tpc_get_ms_pwr_cap | |
| 188 +------------------------------------------------------------------------------ | |
| 189 | Description : | |
| 190 | | |
| 191 | Parameters : | |
| 192 | | |
| 193 +------------------------------------------------------------------------------ | |
| 194 */ | |
| 195 GLOBAL void tpc_get_ms_pwr_cap ( UBYTE band_indicator, | |
| 196 T_MS_PWR_CAP *ms_pwr_cap ) | |
| 197 { | |
| 198 TRACE_FUNCTION( "tpc_get_ms_pwr_cap" ); | |
| 199 | |
| 200 switch( band_indicator ) | |
| 201 { | |
| 202 default: | |
| 203 case CGRLC_GSM_400: | |
| 204 case CGRLC_GSM_850: | |
| 205 case CGRLC_GSM_900: | |
| 206 ms_pwr_cap->p_control = pcl_to_dbm_gsm; | |
| 207 ms_pwr_cap->pwr_min = pcl_to_dbm_gsm[MIN_PCL_GSM900]; | |
| 208 ms_pwr_cap->gamma_0 = GAMMA_0_GSM900; | |
| 209 break; | |
| 210 | |
| 211 case CGRLC_DCS_1800: | |
| 212 ms_pwr_cap->p_control = pcl_to_dbm_dcs; | |
| 213 ms_pwr_cap->pwr_min = pcl_to_dbm_dcs[MIN_PCL_DCS1800]; | |
| 214 ms_pwr_cap->gamma_0 = GAMMA_0_DCS1800; | |
| 215 break; | |
| 216 | |
| 217 case CGRLC_PCS_1900: | |
| 218 ms_pwr_cap->p_control = pcl_to_dbm_pcs; | |
| 219 ms_pwr_cap->pwr_min = pcl_to_dbm_pcs[MIN_PCL_PCS1900]; | |
| 220 ms_pwr_cap->gamma_0 = GAMMA_0_PCS1900; | |
| 221 break; | |
| 222 } | |
| 223 | |
| 224 } /* tpc_get_ms_pwr_cap() */ | |
| 225 | |
| 226 /* | |
| 227 +------------------------------------------------------------------------------ | |
| 228 | Function : tpc_get_pcl | |
| 229 +------------------------------------------------------------------------------ | |
| 230 | Description : This function is used to convert the nominal output power to | |
| 231 | the power control level | |
| 232 | | |
| 233 | Parameters : p_ctrl - pointer to table of power control levels | |
| 234 | nop - nominal output power | |
| 235 | | |
| 236 +------------------------------------------------------------------------------ | |
| 237 */ | |
| 238 GLOBAL UBYTE tpc_get_pcl ( UBYTE const *p_ctrl, SHORT nop ) | |
| 239 { | |
| 240 UBYTE pcl = 0; /* power control level */ | |
| 241 | |
| 242 TRACE_FUNCTION( "tpc_get_pcl" ); | |
| 243 | |
| 244 /* get power control level */ | |
| 245 while( nop < (SHORT)p_ctrl[pcl] - 1 OR nop >= (SHORT)p_ctrl[pcl] + 1 ) pcl++; | |
| 246 | |
| 247 return( pcl ); | |
| 248 | |
| 249 } /* tpc_get_pcl() */ | |
| 250 |
