FreeCalypso > hg > fc-magnetite
annotate src/gpf3/ccd/fdd_ci.c @ 110:49254db81128
implemented fix for the L1/ETM boot time race condition bug
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 06 Oct 2016 00:13:12 +0000 | 
| parents | c41a534f33c6 | 
| children | 
| rev | line source | 
|---|---|
| 
2
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
2 +----------------------------------------------------------------------------- | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
3 | Project : CCD | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
4 | Modul : fdd_ci.c | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
5 +----------------------------------------------------------------------------- | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
6 | Copyright 2004 Texas Instruments Deutschland GmbH | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
7 | All rights reserved. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
8 | | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
9 | This file is confidential and a trade secret of Texas | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
10 | Instruments Deutschland GmbH | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
11 | The receipt of or possession of this file does not convey | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
12 | any rights to reproduce or disclose its contents or to | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
13 | manufacture, use, or sell anything it may describe, in | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
14 | whole, or in part, without the specific written consent of | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
15 | Texas Instruments Deutschland GmbH. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
16 +----------------------------------------------------------------------------- | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
17 | Purpose : Definition of encoding and decoding functions for FDD_CI type | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
18 +----------------------------------------------------------------------------- | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
19 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
20 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
21 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
22 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
23 * standard definitions like GLOBAL, UCHAR, ERROR etc. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
24 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
25 #include "typedefs.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
26 #include "header.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
27 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
28 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
29 * Types and functions for bit access and manipulation | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
30 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
31 #include "ccd_globs.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
32 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
33 * Function prototypes of CCD-CCDDATA interface | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
34 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
35 #include "ccddata.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
36 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
37 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
38 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
39 * Prototypes of ccd internal functions | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
40 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
41 #include "ccd.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
42 #include "bitfun.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
43 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
44 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
45 * Declaration of coder/decoder tables | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
46 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
47 #include "ccdtable.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
48 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
49 #if !(defined (CCD_TEST)) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
50 #include "vsi.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
51 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
52 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
53 #ifndef RUN_INT_RAM | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
54 /* Attention: static data, only used in cdc_fdd_ci_decode */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
55 static const U8 params_bSize[17] = | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
56 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
57 0, | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
58 10, | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
59 19, 28, | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
60 36, 44, 52, 60, | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
61 67, 74, 81, 88, 95, 102, 109, 116, | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
62 122 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
63 }; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
64 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
65 +--------------------------------------------------------------------+ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
66 | PROJECT : CCD MODULE : cdc_fdd_ci_decode | | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
67 +--------------------------------------------------------------------+ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
68 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
69 PURPOSE : Decoding of the FDD_CELL_INFORMATION Field reusing | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
70 RANGE 1024 format of frequency list information. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
71 The IE is preceded by FDD_Indic0(1 bit) and made of the | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
72 following two IEs: | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
73 1) NR_OF_FDD_CELLS(5 bit field), | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
74 2) FDD_CELL_INFORMATION information parameters | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
75 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
76 FDD_Indic0 indicates if the parameter value '0000000000' | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
77 is a member of the set. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
78 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
79 FDD_CELL_INFORMATION or "Scrambling Codes and Diversity | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
80 Field" is a bit filed of length | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
81 p(Number_of_Scrambling_Codes_and_Diversity), | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
82 whereas the function p(x) is defined by the table below | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
83 with n = Number_of_Scrambling_Codes_and_Diversity. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
84 n p n p n p n p | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
85 0 0 5 44 10 81 15 116 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
86 1 10 6 52 11 88 16 122 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
87 2 19 7 60 12 95 17-31 0 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
88 3 28 8 67 13 102 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
89 4 36 9 74 14 109 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
90 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
91 The message is sent from net to MS and a MS supporting | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
92 enhanced measurements has to understand it. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
93 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
94 The space this IE takes in the C-structure is made of a | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
95 counter for the number of decoded parameter and an array | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
96 of them. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
97 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
98 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
99 SHORT cdc_fdd_ci_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
100 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
101 U8 ListSize = 0; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
102 U16 ListBitLen = 0; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
103 ULONG cix_ref, num_prolog_steps, prolog_step_ref; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
104 short *w; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
105 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
106 #ifdef DEBUG_CCD | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
107 TRACE_CCD (globs, "cdc_fdd_ci_decode()"); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
108 #ifdef CCD_SYMBOLS | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
109 TRACE_CCD (globs, "decoding list %s with range 1024 format", | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
110 ccddata_get_alias((USHORT) e_ref, 1)); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
111 #else | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
112 TRACE_CCD (globs, "decoding elem %d with range 1024 format", melem[e_ref].elemRef); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
113 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
114 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
115 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
116 globs->SeekTLVExt = FALSE; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
117 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
118 cix_ref = melem[e_ref].calcIdxRef; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
119 num_prolog_steps = calcidx[cix_ref].numPrologSteps; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
120 prolog_step_ref = calcidx[cix_ref].prologStepRef; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
121 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
122 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
123 * if this element have a defined Prolog | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
124 * we have to process it before decoding the bitstream | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
125 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
126 if (num_prolog_steps) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
127 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
128 ccd_performOperations (num_prolog_steps, prolog_step_ref, globs); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
129 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
130 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
131 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
132 * First read NR_OF_FDD_CELLS (5 bits). | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
133 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
134 globs->pstructOffs = melem[e_ref].structOffs;; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
135 bf_readBits (5, globs); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
136 ListSize = globs->pstruct[globs->pstructOffs++]; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
137 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
138 /* If n=0 there is nothing to do for this IE. */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
139 if (!ListSize) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
140 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
141 return 1; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
142 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
143 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
144 /* Read the corresponding bit number or suppose the maximum length. */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
145 if (ListSize <= 16) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
146 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
147 ListBitLen = params_bSize [ListSize]; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
148 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
149 else | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
150 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
151 /* If n>17 there is nothing to do for this IE. */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
152 return 1; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
153 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
154 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
155 * Bit size for params is bigger than the size of unread bits in the | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
156 * message buffer. Danger: buffer overwriting! | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
157 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
158 if ( ListBitLen > globs->maxBitpos - globs->bitpos) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
159 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
160 ccd_recordFault (globs, ERR_ELEM_LEN, BREAK, (USHORT) e_ref, | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
161 globs->pstruct + globs->pstructOffs); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
162 ListBitLen = (U16)(globs->maxBitpos - globs->bitpos); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
163 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
164 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
165 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
166 * Use dynamic memory for calculation instead of global memory or stack. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
167 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
168 MALLOC (w, 257 * sizeof (U16)); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
169 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
170 /* Decode the W-parameter. */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
171 cdc_decode_param (param_1024, w, ListBitLen, globs); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
172 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
173 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
174 * Decode and set the remaining channel number according the | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
175 * algorithm described in GSM 4.08. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
176 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
177 cdc_decode_frequencies (1023, &w[0], 0, FDD_CI_LIST, globs); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
178 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
179 /* Free the dynamic allocated memory. */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
180 MFREE (w); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
181 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
182 return 1; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
183 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
184 #endif /* !RUN_INT_RAM */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
185 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
186 #ifndef RUN_INT_RAM | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
187 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
188 +--------------------------------------------------------------------+ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
189 | PROJECT : CCD MODULE : cdc_fdd_ci_encode | | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
190 +--------------------------------------------------------------------+ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
191 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
192 PURPOSE : Encoding function is not needed, since this message is | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
193 sent only from net to MS. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
194 It could be only useful for testing procedure if there | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
195 were an encoder function at this place. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
196 This will be a future work. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
197 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
198 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
199 SHORT cdc_fdd_ci_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
200 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
201 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
202 #ifdef DEBUG_CCD | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
203 TRACE_CCD (globs, "cdc_fdd_ci_encode()"); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
204 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
205 #ifdef TARGET_WIN32 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
206 /* TBD */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
207 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
208 return 1; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
209 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
210 #endif /* !RUN_INT_RAM */ | 
