FreeCalypso > hg > fc-selenite
annotate src/gpf/ccd/s_padding_0.c @ 208:68184e15d92c
src/cs: sync with Magnetite (TI_PROFILER support)
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Fri, 16 Oct 2020 05:20:43 +0000 | 
| parents | 1ea54a97e831 | 
| children | 
| rev | line source | 
|---|---|
| 
5
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
2 +----------------------------------------------------------------------------- | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
3 | Project : CCD | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
4 | Modul : s_padding_0.c | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
5 +----------------------------------------------------------------------------- | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
6 | Copyright 2002 Texas Instruments Berlin, AG | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
7 | All rights reserved. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
8 | | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
9 | This file is confidential and a trade secret of Texas | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
10 | Instruments Berlin, AG | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
11 | The receipt of or possession of this file does not convey | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
12 | any rights to reproduce or disclose its contents or to | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
13 | manufacture, use, or sell anything it may describe, in | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
14 | whole, or in part, without the specific written consent of | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
15 | Texas Instruments Berlin, AG. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
16 +----------------------------------------------------------------------------- | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
17 | Purpose : Definition of encoding and decoding functions for S_PADDING_0 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
18 +----------------------------------------------------------------------------- | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
19 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
20 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
21 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
22 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
23 * standard definitions like GLOBAL, UCHAR, ERROR etc. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
24 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
25 #include "typedefs.h" | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
26 #include "header.h" | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
27 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
28 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
29 * Prototypes of ccd (USE_DRIVER EQ undef) for prototypes only | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
30 * look at ccdapi.h | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
31 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
32 #undef USE_DRIVER | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
33 #include "ccdapi.h" | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
34 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
35 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
36 * Types and functions for bit access and manipulation | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
37 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
38 #include "ccd_globs.h" | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
39 #include "bitfun.h" | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
40 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
41 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
42 * Prototypes of ccd internal functions | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
43 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
44 #include "ccd.h" | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
45 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
46 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
47 * Declaration of coder/decoder tables | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
48 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
49 #include "ccdtable.h" | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
50 #include "ccddata.h" | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
51 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
52 #ifndef RUN_FLASH | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
53 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
54 +--------------------------------------------------------------------+ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
55 | PROJECT : CCD MODULE : s_padding_0 | | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
56 | STATE : code ROUTINE : cdc_padd_0_decode | | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
57 +--------------------------------------------------------------------+ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
58 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
59 PURPOSE : Decoding of the GSM Type CSN1 spare padding which is | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
60 preceded by a 0 bit. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
61 If that bit is read as 1 then a protocol extension is | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
62 assumed by CCD. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
63 This function does not evaluate the encoded bits, since | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
64 their content is irrelevant. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
65 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
66 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
67 SHORT cdc_padd_0_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
68 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
69 U16 cixRef; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
70 #ifdef DEBUG_CCD | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
71 TRACE_CCD (globs, "cdc_padd_0_decode()"); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
72 #endif | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
73 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
74 if (bf_readBit(globs) == 1) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
75 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
76 ccd_recordFault (globs, ERR_PROTOCOL_EXTENSION, CONTINUE, (USHORT) e_ref, NULL); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
77 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
78 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
79 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
80 * Do not decode padding bits. They are not relevant. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
81 * Just adjust the position pointer in the bit stream buffer. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
82 * Either to the next octet boundary or to the message end, if necessary. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
83 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
84 bf_incBitpos (8-(globs->bitpos & 7), globs); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
85 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
86 /* First assume padding bits up to an octet boundary. In this case | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
87 * message extension could be made of T, TV or TLV types. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
88 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
89 globs->SeekTLVExt = TRUE; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
90 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
91 cixRef = melem[e_ref].calcIdxRef; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
92 if (calcidx[cixRef].numPrologSteps > 0) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
93 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
94 U16 msgEnd = (USHORT) calc[calcidx[cixRef].prologStepRef].operand * 8; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
95 if (msgEnd) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
96 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
97 msgEnd += globs->bitoffs; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
98 msgEnd = (USHORT)MINIMUM(globs->maxBitpos, msgEnd); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
99 bf_setBitpos (msgEnd, globs); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
100 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
101 * Padding bytes exclude the presence of message extension. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
102 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
103 globs->SeekTLVExt = FALSE; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
104 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
105 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
106 return 1; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
107 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
108 #endif /* !RUN_FLASH */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
109 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
110 #ifndef RUN_FLASH | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
111 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
112 +--------------------------------------------------------------------+ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
113 | PROJECT : CCD MODULE : s_padding_0.c | | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
114 | STATE : code ROUTINE : cdc_padd_0_encode | | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
115 +--------------------------------------------------------------------+ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
116 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
117 PURPOSE : Encoding of the GSM Type CSN1 spare padding which is | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
118 preceded by a 0 bit. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
119 Supported padding values are 0x00 and 0x2B. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
120 If the first prologue step is a value msg_len, padding | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
121 is done until globs->bitpos is msg_len*8. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
122 Otherwise until the octet boundary. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
123 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
124 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
125 SHORT cdc_padd_0_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
126 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
127 U8 padd_bit = 0; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
128 U16 cixRef; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
129 U16 msgLen = globs->buflen; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
130 BOOL paddingOctets = FALSE; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
131 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
132 #ifdef DEBUG_CCD | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
133 TRACE_CCD (globs, "cdc_padd_0_encode()"); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
134 #endif | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
135 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
136 cixRef = melem[e_ref].calcIdxRef; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
137 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
138 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
139 * if this element is conditional, check the condition | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
140 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
141 if (calcidx[cixRef].numCondCalcs NEQ 0 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
142 AND ! ccd_conditionOK (e_ref, globs)) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
143 return 1; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
144 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
145 if (calcidx[cixRef].numPrologSteps > 0) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
146 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
147 if (calc[calcidx[cixRef].prologStepRef].operation NEQ 'P') | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
148 ccd_setError (globs, ERR_INTERNAL_ERROR, BREAK, (USHORT) -1); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
149 else | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
150 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
151 msgLen = (USHORT)(calc[calcidx[cixRef].prologStepRef].operand * 8); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
152 paddingOctets = TRUE; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
153 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
154 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
155 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
156 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
157 * If there is some space left for spare padding, we will code them. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
158 * If the bit pos pointer goes beyond the message border, ccd will detect | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
159 * this later and bring a warning. But not here. Reason: saving room. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
160 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
161 if (globs->bitpos - globs->bitoffs < msgLen ) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
162 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
163 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
164 * The IE should be present in the message so we code 0 bit. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
165 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
166 bf_writeBit (0, globs); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
167 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
168 if (melem[e_ref].elemType EQ 'S' AND spare[melem[e_ref].elemRef].bSize EQ 8) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
169 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
170 ULONG spareVal = spare[melem[e_ref].elemRef].value; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
171 /* | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
172 * Element is a SPARE of length 8. | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
173 */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
174 while (globs->bitpos % 8 NEQ 0) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
175 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
176 switch(spareVal) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
177 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
178 case 0: | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
179 break; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
180 case 0x2B: | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
181 padd_bit = (UBYTE)GET_HL(0); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
182 break; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
183 default: | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
184 ccd_setError (globs, ERR_INTERNAL_ERROR, | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
185 BREAK, | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
186 (USHORT) (globs->bitpos), | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
187 (USHORT) -1); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
188 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
189 bf_writeBit (padd_bit, globs); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
190 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
191 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
192 /* Write spare padding octets. */ | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
193 if (paddingOctets) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
194 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
195 while (globs->bitpos - globs->bitoffs < msgLen ) | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
196 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
197 bf_codeLongNumber (8, spareVal, globs); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
198 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
199 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
200 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
201 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
202 else | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
203 { | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
204 ccd_setError (globs, ERR_INVALID_TYPE, | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
205 BREAK, | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
206 (USHORT) (globs->bitpos), | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
207 (USHORT) -1); | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
208 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
209 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
210 | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
211 return 1; | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
212 } | 
| 
 
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
213 #endif /* !RUN_FLASH */ | 
