annotate src/gpf/ccd/asn1_bitstr.c @ 112:fdecfb3bd860

.../drv_app/r2d/r2d_*.c: LCD include case fixes from Magnetite R2D is not used in Selenite, but we strive to keep the two source trees in sync as much as possible to reduce the diffs.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 13 Oct 2018 16:56:22 +0000
parents 1ea54a97e831
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 :
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 | Modul : asn1_bitstr.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 ASN1_BITSTRING
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 | elements
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 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_INT_RAM
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 (6144) MODULE : CDC_GSM |
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 | STATE : code ROUTINE : cdc_bitstring_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 : UNALIGNED PER decoding of the bit string type (UMTS)
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 The coded bits are preceded by a length indicator, if
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 they are not of fixed length. The length indicator is
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 decoded as an ASN1_INTEGER type.
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 */
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
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)
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 ULONG repeat;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 U8 *old_pstruct = NULL;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69
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 #ifndef CCD_SYMBOLS
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 TRACE_CCD (globs, "cdc_asn1_bitstring_decode()");
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 #else
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 TRACE_CCD (globs, "cdc_asn1_bitstring_decode() '%s'", ccddata_get_alias((USHORT) e_ref, 1));
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 #endif
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 #endif
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 * Set pstrcutOffs and maxRep.
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 * Check the valid flag in case of optional elements.
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 */
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 if (PER_CommonBegin (e_ref, &repeat, globs) NEQ ccdOK)
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 return 1;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 #ifdef DYNAMIC_ARRAYS
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 /*
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 * Check for pointer types, and allocate memory if necessary.
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 * May overwrite globs->pstruct (and initialize globs->pstructOffs to 0).
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 */
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 if ( is_pointer_type(e_ref) ) {
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 old_pstruct = globs->pstruct;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 if ( PER_allocmem_and_update(e_ref, (USHORT) ((repeat >> 3) +1), globs) NEQ ccdOK)
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 /* No memory - Return. Error already set in function call above. */
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 return 1;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 }
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 #endif
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 bf_readBitStr_PER ((USHORT) repeat, globs);
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 #ifdef DYNAMIC_ARRAYS
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 if (old_pstruct NEQ NULL)
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 globs->pstruct = old_pstruct;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 #endif
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 return 1;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 }
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_INT_RAM */
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 #ifndef RUN_INT_RAM
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110
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 (6144) MODULE : CDC_GSM |
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 | STATE : code ROUTINE : cdc_bitstring_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 : UNALIGNED PER encoding of the bit string type (UMTS)
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 The coded bits are preceded by a length indicator, if
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 they are not of fixed length. The length indicator is
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 decoded as an ASN1_INTEGER type.
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 */
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
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)
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 ULONG repeat;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 U8 *old_pstruct = NULL;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 #ifdef DEBUG_CCD
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 #ifndef CCD_SYMBOLS
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 TRACE_CCD (globs, "cdc_asn1_bitstring_encode()");
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 #else
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 TRACE_CCD (globs, "cdc_asn1_bitstring_encode() '%s'", ccddata_get_alias((USHORT) e_ref, 1));
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 #endif
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 /*
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 * Set pstructOffs and maxRep.
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 * Check the valid flag in case of optional elements.
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 */
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 if (PER_CommonBegin (e_ref, &repeat, globs) NEQ ccdOK)
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 return 1;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 #ifdef DYNAMIC_ARRAYS
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 if ( is_pointer_type(e_ref) ) {
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 old_pstruct = globs->pstruct;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 globs->pstruct = *(U8 **)(globs->pstruct + globs->pstructOffs);
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 if (ccd_check_pointer(globs->pstruct) == ccdOK)
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 {
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 globs->pstructOffs = 0;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 }
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 else
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 ccd_recordFault (globs, ERR_INVALID_PTR, BREAK, (USHORT) e_ref,
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 &globs->pstruct[globs->pstructOffs]);
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 return 1;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 }
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 }
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 #endif
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 bf_writeBitStr_PER ((USHORT) repeat, globs);
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 #ifdef DYNAMIC_ARRAYS
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 if ( old_pstruct NEQ NULL )
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 globs->pstruct = old_pstruct;
1ea54a97e831 src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 #endif
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 return 1;
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 #endif /* !RUN_INT_RAM */