FreeCalypso > hg > fc-magnetite
annotate src/gpf3/ccd/asn1_bitstr.c @ 125:d5bbfb9649d5
src/aci2/mfw: file renames to make filename case consistent
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Fri, 07 Oct 2016 05:33:56 +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 : | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
4 | Modul : asn1_bitstr.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 2002 Texas Instruments Berlin, AG | 
| 
 
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 Berlin, AG | 
| 
 
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 Berlin, AG. | 
| 
 
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 ASN1_BITSTRING | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
18 | elements | 
| 
 
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 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 * Prototypes of ccd (USE_DRIVER EQ undef) for prototypes only | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
30 * look at ccdapi.h | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
31 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
32 #undef USE_DRIVER | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
33 #include "ccdapi.h" | 
| 
 
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 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
36 * 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
 | 
37 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
38 #include "ccd_globs.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
39 #include "bitfun.h" | 
| 
 
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 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
42 * Prototypes of ccd internal functions | 
| 
 
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 #include "ccd.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
45 | 
| 
 
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 * Declaration of coder/decoder tables | 
| 
 
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 #include "ccdtable.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
50 #include "ccddata.h" | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
51 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
52 #ifndef RUN_INT_RAM | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
53 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
54 +--------------------------------------------------------------------+ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
55 | PROJECT : CCD (6144) MODULE : CDC_GSM | | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
56 | STATE : code ROUTINE : cdc_bitstring_decode | | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
57 +--------------------------------------------------------------------+ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
58 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
59 PURPOSE : UNALIGNED PER decoding of the bit string type (UMTS) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
60 The coded bits are preceded by a length indicator, if | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
61 they are not of fixed length. The length indicator is | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
62 decoded as an ASN1_INTEGER type. | 
| 
 
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 SHORT cdc_bitstring_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
 | 
66 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
67 ULONG repeat; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
68 U8 *old_pstruct = NULL; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
69 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
70 #ifdef DEBUG_CCD | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
71 #ifndef CCD_SYMBOLS | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
72 TRACE_CCD (globs, "cdc_asn1_bitstring_decode()"); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
73 #else | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
74 TRACE_CCD (globs, "cdc_asn1_bitstring_decode() '%s'", ccddata_get_alias((USHORT) e_ref, 1)); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
75 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
76 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
77 | 
| 
 
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 * Set pstrcutOffs and maxRep. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
80 * Check the valid flag in case of optional elements. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
81 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
82 if (PER_CommonBegin (e_ref, &repeat, globs) NEQ ccdOK) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
83 return 1; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
84 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
85 #ifdef DYNAMIC_ARRAYS | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
86 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
87 * Check for pointer types, and allocate memory if necessary. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
88 * May overwrite globs->pstruct (and initialize globs->pstructOffs to 0). | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
89 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
90 if ( is_pointer_type(e_ref) ) { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
91 old_pstruct = globs->pstruct; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
92 if ( PER_allocmem_and_update(e_ref, (USHORT) ((repeat >> 3) +1), globs) NEQ ccdOK) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
93 /* No memory - Return. Error already set in function call above. */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
94 return 1; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
95 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
96 #endif | 
| 
 
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 bf_readBitStr_PER ((USHORT) repeat, globs); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
99 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
100 #ifdef DYNAMIC_ARRAYS | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
101 if (old_pstruct NEQ NULL) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
102 globs->pstruct = old_pstruct; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
103 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
104 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
105 return 1; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
106 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
107 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
108 #endif /* !RUN_INT_RAM */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
109 #ifndef RUN_INT_RAM | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
110 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
111 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
112 +--------------------------------------------------------------------+ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
113 | PROJECT : CCD (6144) MODULE : CDC_GSM | | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
114 | STATE : code ROUTINE : cdc_bitstring_encode | | 
| 
 
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 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
117 PURPOSE : UNALIGNED PER encoding of the bit string type (UMTS) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
118 The coded bits are preceded by a length indicator, if | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
119 they are not of fixed length. The length indicator is | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
120 decoded as an ASN1_INTEGER type. | 
| 
 
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 SHORT cdc_bitstring_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
 | 
124 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
125 ULONG repeat; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
126 U8 *old_pstruct = NULL; | 
| 
 
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 #ifdef DEBUG_CCD | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
129 #ifndef CCD_SYMBOLS | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
130 TRACE_CCD (globs, "cdc_asn1_bitstring_encode()"); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
131 #else | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
132 TRACE_CCD (globs, "cdc_asn1_bitstring_encode() '%s'", ccddata_get_alias((USHORT) e_ref, 1)); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
133 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
134 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
135 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
136 /* | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
137 * Set pstructOffs and maxRep. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
138 * Check the valid flag in case of optional elements. | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
139 */ | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
140 if (PER_CommonBegin (e_ref, &repeat, globs) NEQ ccdOK) | 
| 
 
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 #ifdef DYNAMIC_ARRAYS | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
144 if ( is_pointer_type(e_ref) ) { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
145 old_pstruct = globs->pstruct; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
146 globs->pstruct = *(U8 **)(globs->pstruct + globs->pstructOffs); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
147 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
148 if (ccd_check_pointer(globs->pstruct) == ccdOK) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
149 { | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
150 globs->pstructOffs = 0; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
151 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
152 else | 
| 
 
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 ccd_recordFault (globs, ERR_INVALID_PTR, BREAK, (USHORT) e_ref, | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
155 &globs->pstruct[globs->pstructOffs]); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
156 return 1; | 
| 
 
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 } | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
159 #endif | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
160 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
161 bf_writeBitStr_PER ((USHORT) repeat, globs); | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
162 | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
163 #ifdef DYNAMIC_ARRAYS | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
164 if ( old_pstruct NEQ NULL ) | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
165 globs->pstruct = old_pstruct; | 
| 
 
c41a534f33c6
src/gpf3: preened GPF goo from TCS3.2
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
166 #endif | 
| 
 
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 return 1; | 
| 
 
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 #endif /* !RUN_INT_RAM */ | 
