FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/ccd/asn1_seq_ext.c @ 927:48969469d961
gsm-fw: l1_dyn_dwl code compiles and links
| author | Mychaela Falconia <falcon@ivan.Harhan.ORG> | 
|---|---|
| date | Thu, 22 Oct 2015 19:04:36 +0000 | 
| parents | 970d6199f2c5 | 
| children | 
| rev | line source | 
|---|---|
| 
648
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
2 +----------------------------------------------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
3 | Project : | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
4 | Modul : asn1_seq_ext.c | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
5 +----------------------------------------------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
6 | Copyright 2002 Texas Instruments Berlin, AG | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
7 | All rights reserved. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
8 | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
9 | This file is confidential and a trade secret of Texas | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
10 | Instruments Berlin, AG | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
11 | The receipt of or possession of this file does not convey | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
12 | any rights to reproduce or disclose its contents or to | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
13 | manufacture, use, or sell anything it may describe, in | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
14 | whole, or in part, without the specific written consent of | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
15 | Texas Instruments Berlin, AG. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
16 +----------------------------------------------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
17 | Purpose : Encoding and decoding functions for ASN1_SEQ_EXTENSIBLE type | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
18 | This module has some issues in common with asn1_seq.c. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
19 +----------------------------------------------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
20 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
21 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
22 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
23 * Standard definitions like UCHAR, ERROR etc. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
24 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
25 #include "typedefs.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
26 #include "header.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
27 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
28 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
29 * Prototypes of ccd (USE_DRIVER EQ undef) for prototypes only | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
30 * look at ccdapi.h | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
31 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
32 #undef USE_DRIVER | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
33 #include "ccdapi.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
34 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
35 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
36 * Types and functions for bit access and manipulation | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
37 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
38 #include "ccd_globs.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
39 #include "bitfun.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
40 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
41 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
42 * Prototypes and constants in the common part of ccd | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
43 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
44 #include "ccd.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
45 #include "ccd_codingtypes.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
46 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
47 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
48 * Declaration of coder/decoder tables | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
49 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
50 #include "ccdtable.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
51 #include "ccddata.h" | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
52 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
53 EXTERN T_FUNC_POINTER codec[MAX_CODEC_ID+1][2]; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
54 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
55 #ifndef RUN_INT_RAM | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
56 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
57 +------------------------------------------------------------------------+ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
58 | PROJECT : CCD (6144) MODULE : asn1_seq_ext | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
59 | STATE : code ROUTINE : cdc_asn1_seq_ext_decode | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
60 +------------------------------------------------------------------------+ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
61 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
62 PURPOSE : Decode basic UNALIGNED PER for extensible SEQUENCE type and | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
63 SEQUENCE OF. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
64 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
65 The element can be a field of fixed or variable length. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
66 It can contain OPTIONAL elements or integer elements with | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
67 a DEFAULT value. The so called nonCriticalExtensions or empty | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
68 sequences belong to the category of bit strings of fixed length | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
69 which is set to 0. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
70 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
71 First the extension bit is decoded, then the elements of the | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
72 extension root. Finally the elements of the extension addition. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
73 See also comments to the encoding function. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
74 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
75 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
76 SHORT cdc_asn1_seq_ext_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
77 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
78 ULONG repeat=1, max_rep=1, first_elem, last_elem, elem, ext_begin; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
79 ULONG c_size; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
80 UBYTE *old_pstruct; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
81 BOOL extPresent=FALSE; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
82 ULONG calc_ref = calcidx[melem[e_ref].calcIdxRef].condCalcRef; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
83 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
84 #ifdef DEBUG_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
85 #ifndef CCD_SYMBOLS | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
86 TRACE_CCD (globs, "cdc_asn1_seq_ext_decode()"); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
87 #else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
88 TRACE_CCD (globs, "cdc_asn1_seq_ext_decode() %s", mcomp[melem[e_ref].elemRef].name); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
89 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
90 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
91 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
92 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
93 * This function is called as an equivalent to ccd_decodeComposition. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
94 * Hence the increment on globs->ccd_recurs_level. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
95 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
96 globs->ccd_recurs_level ++; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
97 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
98 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
99 * Set pstrcutOffs and max_rep. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
100 * Check the valid flag in case of optional elements. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
101 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
102 if (PER_CommonBegin (e_ref, &max_rep, globs) NEQ ccdOK) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
103 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
104 globs->ccd_recurs_level --; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
105 return 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
106 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
107 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
108 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
109 * Prepare for decoding of the same sequence type up to max_rep times. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
110 * Set the upper and lower bound of elemRef for processing of each repeatition. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
111 * Read the C-size to go ahead in the C-structure after each repeatition. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
112 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
113 switch (melem[e_ref].elemType) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
114 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
115 case 'C': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
116 case 'D': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
117 case 'E': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
118 case 'P': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
119 case 'Q': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
120 elem = (ULONG) melem[e_ref].elemRef; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
121 first_elem = (ULONG) mcomp[elem].componentRef; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
122 last_elem = first_elem + mcomp[elem].numOfComponents; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
123 c_size = (ULONG) mcomp[elem].cSize; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
124 break; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
125 case 'F': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
126 case 'R': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
127 first_elem = e_ref; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
128 last_elem = e_ref + 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
129 c_size = mvar[e_ref].cSize; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
130 break; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
131 default: | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
132 ccd_setError (globs, ERR_DEFECT_CCDDATA, BREAK, | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
133 (USHORT) (globs->bitpos), (USHORT) -1); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
134 return 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
135 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
136 }; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
137 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
138 #ifdef WIN32 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
139 if (calc_ref EQ NO_REF OR calc[calc_ref].operation NEQ 'P') | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
140 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
141 ccd_recordFault (globs, ERR_DEFECT_CCDDATA, BREAK, (USHORT) e_ref, | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
142 globs->pstruct+globs->pstructOffs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
143 return 0; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
144 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
145 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
146 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
147 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
148 * Get max index for elements within the extension root. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
149 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
150 ext_begin = (ULONG) calc[calc_ref].operand; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
151 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
152 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
153 * Store the current value of the C-structure pointer. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
154 * After decoding the SEQUENCE component we will set the pointer | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
155 * to this stored value. Then we will use pstructOffs for pointing | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
156 * to the next element. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
157 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
158 old_pstruct = globs->pstruct; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
159 #ifdef DYNAMIC_ARRAYS | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
160 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
161 * Allocate memory for this whole composition, if elemType is | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
162 * one of the pointer types. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
163 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
164 if ( is_pointer_type(e_ref)) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
165 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
166 if ( PER_allocmem_and_update(e_ref, max_rep, globs) NEQ ccdOK ) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
167 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
168 /* No memory - Return. Error already set in function call above. */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
169 globs->ccd_recurs_level --; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
170 return 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
171 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
172 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
173 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
174 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
175 globs->pstruct += globs->pstructOffs; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
176 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
177 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
178 * Decode all elements of the field for SEQUENCE (SIZE) OF . | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
179 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
180 while (repeat <= max_rep) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
181 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
182 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
183 * Read the extensinon bit for each array SEQUENCE. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
184 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
185 if (bf_readBit (globs) EQ 1) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
186 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
187 extPresent = TRUE; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
188 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
189 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
190 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
191 * Decode the bit-map preamble for the extension root. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
192 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
193 Read_SEQ_BitMap (first_elem, ext_begin, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
194 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
195 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
196 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
197 * Decode elements in the extension root for each array SEQUENCE. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
198 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
199 for (elem = first_elem; elem < ext_begin; elem++) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
200 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
201 #ifdef ERR_TRC_STK_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
202 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
203 * Save the value for tracing in error case. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
204 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
205 globs->error_stack[globs->ccd_recurs_level] = (USHORT) elem; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
206 #endif /* ERR_TRC_STK_CCD */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
207 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
208 #ifdef DEBUG_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
209 #ifndef CCD_SYMBOLS | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
210 TRACE_CCD (globs, "decoding level %d element %d", globs->ccd_recurs_level, elem - first_elem); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
211 #else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
212 TRACE_CCD (globs, "decoding level %d element %d '%s'",globs->ccd_recurs_level, elem - first_elem, ccddata_get_alias((USHORT) elem, 1)); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
213 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
214 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
215 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
216 * Use the jump-table for selecting the decode function. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
217 * Possible types are 0, BITSTRING, ASN1_OCTET, ASN1_INTEGER(_EXTENSIBLE), | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
218 * ASN1_CHOICE(_EXTENSIBLE) andASN1_SEQUENCE(_EXTENSIBLE). | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
219 * In case of 0 function cdc_STD_decode will be called. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
220 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
221 (void) codec[melem[elem].codingType][DECODE_FUN] | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
222 (c_ref, elem, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
223 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
224 /* ############################################### */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
225 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
226 * Decode extension elements if anyone present | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
227 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
228 if (extPresent) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
229 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
230 int unknownExt_nr=0; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
231 ULONG bmp_len=0; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
232 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
233 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
234 * Read length of bit-map for the encoded extension additions. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
235 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
236 bmp_len = Read_NormallySmallNonNegativeWholeNr (globs) + 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
237 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
238 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
239 * Decode the bit-map for the encoded extension additions. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
240 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
241 for (elem = ext_begin; elem < last_elem AND unknownExt_nr < (int)bmp_len; elem++) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
242 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
243 if (melem[elem].optional) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
244 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
245 unknownExt_nr++; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
246 if (melem[elem].elemType < 'P' OR melem[elem].elemType > 'R') | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
247 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
248 globs->pstruct[melem[elem].structOffs] = (UBYTE) bf_readBit(globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
249 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
250 else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
251 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
252 if(bf_readBit(globs)) /*elemType P, Q or R*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
253 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
254 *(void**) &globs->pstruct[melem[elem].structOffs] = (void *) 0xFFFF; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
255 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
256 else /*Not present set the pointer to NULL*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
257 *(void**) &globs->pstruct[melem[elem].structOffs] = NULL; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
258 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
259 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
260 else if (melem[elem].codingType EQ CCDTYPE_ASN1_INTEGER) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
261 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
262 if (mval[mvar[melem[elem].elemRef].valueDefs+1].isDefault EQ 2) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
263 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
264 unknownExt_nr++; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
265 globs->pstruct[melem[elem].structOffs] = (UBYTE) bf_readBit(globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
266 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
267 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
268 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
269 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
270 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
271 * Decode the bit-map part for unknown extension additions. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
272 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
273 if ((unknownExt_nr = (int) bmp_len - (last_elem - ext_begin)) > 0) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
274 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
275 UBYTE tmp_bmp_len=0; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
276 while (unknownExt_nr--) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
277 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
278 if (bf_readBit(globs)) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
279 tmp_bmp_len++; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
280 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
281 unknownExt_nr = (int)tmp_bmp_len; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
282 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
283 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
284 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
285 * Decode elements in the extension root for each array SEQUENCE | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
286 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
287 for (elem = ext_begin; elem < last_elem; elem ++) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
288 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
289 U32 finalBP; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
290 #ifdef ERR_TRC_STK_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
291 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
292 * Save the value for tracing in error case. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
293 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
294 globs->error_stack[globs->ccd_recurs_level] = (USHORT) elem; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
295 #endif /* ERR_TRC_STK_CCD */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
296 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
297 #ifdef DEBUG_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
298 #ifndef CCD_SYMBOLS | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
299 TRACE_CCD (globs, "decoding level %d element %d", globs->ccd_recurs_level, elem - first_elem); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
300 #else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
301 TRACE_CCD (globs, "decoding level %d element %d '%s'",globs->ccd_recurs_level, elem - first_elem, ccddata_get_alias((USHORT) elem, 1)); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
302 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
303 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
304 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
305 /* Decode only present extensions. */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
306 globs->pstructOffs = melem[elem].structOffs; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
307 if ( cdc_isPresent(elem, globs) ) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
308 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
309 finalBP = 8*Read_OpenTpye_Length (globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
310 finalBP += globs->bitpos; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
311 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
312 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
313 * Use the jump-table for selecting the decode function. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
314 * Possible types are 0, BITSTRING, ASN1_OCTET, ASN1_INTEGER(_EXTENSIBLE), | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
315 * ASN1_CHOICE(_EXTENSIBLE) andASN1_SEQUENCE(_EXTENSIBLE). | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
316 * In case of 0 function cdc_STD_decode will be called. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
317 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
318 (void) codec[melem[elem].codingType][DECODE_FUN] | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
319 (c_ref, elem, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
320 if (globs->bitpos > finalBP) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
321 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
322 /* ccd_recordFault (globs, ERR_ASN1_ENCODING, BREAK, (USHORT) e_ref, | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
323 globs->pstruct+melem[e_ref].structOffs);*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
324 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
325 bf_setBitpos (finalBP, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
326 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
327 } /* for: SEQUENCE extensions */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
328 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
329 /* For unknown extensions skip over open type and its length determinant */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
330 while (unknownExt_nr--) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
331 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
332 U32 opLen = Read_OpenTpye_Length (globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
333 bf_incBitpos (8 * opLen, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
334 #ifdef DEBUG_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
335 TRACE_CCD (globs, "Unknown extension for SEQUENCE type...skipped over %ld bytes", opLen); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
336 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
337 } /*if: unknown extension */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
338 } /*if: extPresent*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
339 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
340 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
341 * Set the pointer of the C-structure on the next element. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
342 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
343 globs->pstruct += c_size; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
344 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
345 extPresent = FALSE; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
346 repeat ++; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
347 } /* while: SEQUENCE field*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
348 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
349 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
350 * Prepare for decoding the next element. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
351 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
352 globs->pstruct = old_pstruct; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
353 globs->ccd_recurs_level--; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
354 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
355 return 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
356 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
357 #endif /* !RUN_INT_RAM */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
358 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
359 #ifndef RUN_INT_RAM | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
360 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
361 +------------------------------------------------------------------------+ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
362 | PROJECT : CCD (6144) MODULE : asn1_seq_ext | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
363 | STATE : code ROUTINE : cdc_asn1_seq_ext_encode | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
364 +------------------------------------------------------------------------+ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
365 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
366 PURPOSE : Encode basic UNALIGNED PER for extensible SEQUENCE type and | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
367 SEQUENCE OF. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
368 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
369 The element can be a field of fixed or variable length. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
370 It can contain OPTIONAL elements or integer elements with | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
371 a DEFAULT value. The so called nonCriticalExtensions or empty | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
372 sequences belong to the category of bit strings of fixed length | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
373 which is set to 0. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
374 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
375 First the extension bit is encoded, then the elements of the | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
376 extension root, finally the elements of the extension addition. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
377 One of the following scenarios is possible: | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
378 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
379 ---------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
380 | extension | encoded extension root of | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
381 | bit = 0 | including bitmap preamble | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
382 ---------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
383 ----------------------------------------------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
384 | extension | | encoded | encoded elment | encoded elment | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
385 | bit = 1 | | bitmap | x of the | y of the | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
386 | | | including | extension part | extension part | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
387 | | | its | as an open type | as an open type | ... | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
388 | | | length | including | including | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
389 | | | | its length | its length | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
390 ----------------------------------------------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
391 ----------------------------------------------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
392 | extension | encoded | encoded | encoded elment | encoded elment | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
393 | bit = 1 | extension | bitmap | x of the | y of the | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
394 | | root | including | extension part | extension part | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
395 | | including | its | as an open type | as an open type | ... | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
396 | | bitmap | length | including | including | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
397 | | preamble | | its length | its length | | | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
398 ----------------------------------------------------------------------------- | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
399 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
400 SHORT cdc_asn1_seq_ext_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
401 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
402 ULONG repeat=1, max_rep=1, first_elem, last_elem, elem, ext_begin; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
403 U16 ext_BitPos, ext_bmpLenBP, ext_bmpEndBP; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
404 ULONG c_size, Len; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
405 UBYTE *old_pstruct; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
406 ULONG calc_ref = calcidx[melem[e_ref].calcIdxRef].condCalcRef; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
407 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
408 #ifdef DEBUG_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
409 #ifndef CCD_SYMBOLS | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
410 TRACE_CCD (globs, "cdc_asn1_seq_ext_encode()"); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
411 #else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
412 TRACE_CCD (globs, "cdc_asn1_seq_ext_encode() %s", mcomp[melem[e_ref].elemRef].name); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
413 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
414 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
415 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
416 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
417 * SEQUENCE contains nested elements. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
418 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
419 globs->ccd_recurs_level ++; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
420 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
421 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
422 * Set pstrcutOffs and max_rep. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
423 * Check the valid flag in case of optional elements. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
424 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
425 if (PER_CommonBegin (e_ref, &max_rep, globs) NEQ ccdOK) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
426 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
427 globs->ccd_recurs_level --; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
428 return 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
429 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
430 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
431 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
432 * Prepare for encoding of the same sequence type up to max_rep times. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
433 * Set the upper and lower bound of elemRef for processing of each repeatition. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
434 * Read the C-size to go ahead in the C-structure after each repeatition. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
435 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
436 switch (melem[e_ref].elemType) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
437 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
438 case 'C': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
439 case 'D': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
440 case 'E': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
441 case 'P': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
442 case 'Q': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
443 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
444 elem = (ULONG) melem[e_ref].elemRef; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
445 first_elem = (ULONG) mcomp[elem].componentRef; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
446 last_elem = first_elem + mcomp[elem].numOfComponents; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
447 c_size = (ULONG) mcomp[elem].cSize; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
448 break; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
449 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
450 case 'F': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
451 case 'R': | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
452 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
453 first_elem = e_ref; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
454 last_elem = e_ref + 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
455 c_size = mvar[e_ref].cSize; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
456 break; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
457 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
458 default: | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
459 ccd_setError (globs, ERR_DEFECT_CCDDATA, BREAK, | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
460 (USHORT) (globs->bitpos), (USHORT) -1); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
461 return 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
462 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
463 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
464 * Store the current value of the C-structure pointer. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
465 * After encoding the SEQUENCE component we will set the pointer | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
466 * to this stored value. Then we will use pstructOffs for pointing | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
467 * to the next element. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
468 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
469 old_pstruct = globs->pstruct; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
470 globs->pstruct += globs->pstructOffs; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
471 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
472 #ifdef DYNAMIC_ARRAYS | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
473 if ( is_pointer_type(e_ref) ) { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
474 if ( ccd_check_pointer(*(U8 **)globs->pstruct) == ccdOK ) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
475 globs->pstruct = *(U8 **) globs->pstruct; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
476 else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
477 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
478 ccd_recordFault (globs, ERR_INVALID_PTR, BREAK, (USHORT) e_ref, | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
479 &globs->pstruct[globs->pstructOffs]); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
480 return 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
481 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
482 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
483 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
484 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
485 #ifdef WIN32 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
486 if (calc_ref EQ NO_REF OR calc[calc_ref].operation NEQ 'P') | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
487 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
488 ccd_recordFault (globs, ERR_DEFECT_CCDDATA, BREAK, (USHORT) e_ref, | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
489 globs->pstruct+globs->pstructOffs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
490 return 0; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
491 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
492 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
493 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
494 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
495 * Get max index for elements within the extension root. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
496 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
497 ext_begin = (ULONG) calc[calc_ref].operand; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
498 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
499 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
500 * Decode all elements of the field for SEQUENCE (SIZE) OF. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
501 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
502 while (repeat <= max_rep) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
503 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
504 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
505 * Prepare for a later encoding of the extension bit. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
506 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
507 ext_BitPos = globs->bitpos; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
508 bf_incBitpos (1, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
509 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
510 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
511 * Encode the bit-map preamble for elements with the extension root. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
512 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
513 Write_SEQ_BitMap (first_elem, ext_begin, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
514 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
515 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
516 * Encode present elements of the extension root. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
517 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
518 for (elem = first_elem; elem < ext_begin; elem++) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
519 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
520 #ifdef ERR_TRC_STK_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
521 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
522 * Save the value for tracing in error case. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
523 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
524 globs->error_stack[globs->ccd_recurs_level] = (USHORT) elem; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
525 #endif /* ERR_TRC_STK_CCD */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
526 #ifdef DEBUG_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
527 #ifndef CCD_SYMBOLS | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
528 TRACE_CCD (globs, "encoding level %d element %d", globs->ccd_recurs_level, elem - first_elem); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
529 #else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
530 TRACE_CCD (globs, "encoding level %d element %d '%s'", globs->ccd_recurs_level, elem - first_elem ,ccddata_get_alias((USHORT) elem, 1)); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
531 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
532 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
533 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
534 #if defined _TOOLS_ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
535 if (!ccd_patch (globs, 0)) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
536 #endif /* _TOOLS_ */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
537 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
538 * Use the jump-table for selecting the code function. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
539 * Possible types are 0, ASN1_INTEGER, BITSTRING, ASN1_CHOICE and | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
540 * ASN1_SEQUENCE. In case of 0 function cdc_STD_encode will be called. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
541 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
542 (void) codec[melem[elem].codingType][ENCODE_FUN] | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
543 (c_ref, elem, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
544 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
545 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
546 ext_bmpLenBP = globs->bitpos; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
547 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
548 * Set the extension bit to 0, if extension part is empty. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
549 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
550 if (ext_begin EQ last_elem) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
551 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
552 bf_setBitpos (ext_BitPos, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
553 bf_writeBit (0, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
554 bf_setBitpos (ext_bmpLenBP, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
555 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
556 else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
557 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
558 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
559 * Prepare for a later encoding of the bitmap length. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
560 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
561 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
562 bf_incBitpos (7, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
563 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
564 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
565 * Write the bitmap preamble for the extension part. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
566 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
567 Write_SEQ_BitMap (ext_begin, last_elem, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
568 ext_bmpEndBP = globs->bitpos; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
569 Len = last_elem - ext_begin; // equivalent to: globs->bitpos - ext_bmpLenBP -7; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
570 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
571 /* Check any of the extension elements is present. */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
572 bf_setBitpos (ext_bmpLenBP+7, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
573 if (bf_getBits (Len, globs) EQ 0) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
574 { /* Hint: the following two lines can be deleted because of ccd general memset. */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
575 bf_setBitpos (ext_BitPos, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
576 bf_writeBit (0, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
577 bf_setBitpos (ext_bmpLenBP, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
578 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
579 else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
580 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
581 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
582 * Write the extension bit. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
583 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
584 bf_setBitpos (ext_BitPos, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
585 bf_writeBit (1, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
586 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
587 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
588 * Write the bitmap length assuming small bitmaps as common case. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
589 * Lower bound of the length is 1. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
590 / | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
591 if (Len < 64) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
592 { */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
593 bf_setBitpos (ext_bmpLenBP, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
594 Write_NormallySmallNonNegativeWholeNr (Len-1, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
595 bf_setBitpos (ext_bmpEndBP, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
596 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
597 } else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
598 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
599 encode_bmp_len_as_NormallySmallNonNegativeWholeNr (...); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
600 shift_the_bitStr (...); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
601 }*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
602 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
603 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
604 * Encode present elements of the extension part. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
605 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
606 for (elem = ext_begin; elem < last_elem; elem++) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
607 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
608 U16 startBitPos, endBitPos; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
609 #ifdef ERR_TRC_STK_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
610 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
611 * Save the value for tracing in error case. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
612 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
613 globs->error_stack[globs->ccd_recurs_level] = (USHORT) elem; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
614 #endif /* ERR_TRC_STK_CCD */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
615 #ifdef DEBUG_CCD | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
616 #ifndef CCD_SYMBOLS | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
617 TRACE_CCD (globs, "encoding level %d element %d", globs->ccd_recurs_level, elem - first_elem); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
618 #else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
619 TRACE_CCD (globs, "encoding level %d element %d '%s'", globs->ccd_recurs_level, elem - first_elem ,ccddata_get_alias((USHORT) elem, 1)); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
620 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
621 #endif | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
622 /* Decode only present extensions. */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
623 globs->pstructOffs = melem[elem].structOffs; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
624 if ( cdc_isPresent(elem, globs) ) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
625 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
626 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
627 * Prepare for a later encoding of the length for each open type | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
628 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
629 bf_incBitpos (8, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
630 startBitPos = globs->bitpos; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
631 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
632 #if defined _TOOLS_ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
633 if (!ccd_patch (globs, 0)) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
634 #endif /* _TOOLS_ */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
635 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
636 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
637 * Use the jump-table for selecting the code function. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
638 * Possible types are 0, ASN1_INTEGER, BITSTRING, ASN1_CHOICE and | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
639 * ASN1_SEQUENCE. In case of 0 function cdc_STD_encode will be called. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
640 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
641 (void) codec[melem[elem].codingType][ENCODE_FUN] | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
642 (c_ref, elem, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
643 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
644 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
645 * Complete open type encoding. Check if zero padding bits | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
646 * are necessary. If encoding consumed no bits, insert a | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
647 * zero-octet in the bit string. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
648 * Then calculate length of the encoded open type in octets. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
649 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
650 if ((Len = globs->bitpos - startBitPos) EQ 0) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
651 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
652 bf_writeVal (0, 8, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
653 Len = 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
654 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
655 else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
656 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
657 if ((Len&7) NEQ 0) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
658 bf_incBitpos (8 - (Len&7), globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
659 Len = (U32)(globs->bitpos - startBitPos) >> 3; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
660 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
661 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
662 endBitPos = globs->bitpos; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
663 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
664 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
665 * Encode the length determinant. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
666 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
667 if (Len < 128) | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
668 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
669 bf_setBitpos (startBitPos-8, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
670 Write_OpenTpye_Length ((U32)Len, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
671 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
672 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
673 * This case does not seem to happen very often. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
674 * We could let an error report lead us to the need for total implementation. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
675 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
676 else | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
677 { | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
678 /*ccd_recordFault (globs, ERR_ASN1_ENCODING, BREAK,(USHORT) e_ref, | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
679 globs->pstruct+globs->pstructOffs);*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
680 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
681 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
682 * Encoding for the sequence sub element is finished. For further encoding | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
683 * set the bit position pointer to the end of the encoded open type. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
684 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
685 bf_setBitpos (endBitPos, globs); | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
686 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
687 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
688 }/* if ext present or not */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
689 } /* if any extension defined or not*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
690 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
691 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
692 * Set the pointer of the C-structure on the next element. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
693 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
694 globs->pstruct += c_size; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
695 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
696 repeat ++; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
697 } /* while: SEQUENCE field*/ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
698 | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
699 /* | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
700 * Prepare for encoding the next element. | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
701 */ | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
702 globs->pstruct = old_pstruct; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
703 globs->ccd_recurs_level--; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
704 return 1; | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
705 } | 
| 
 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
706 #endif /* !RUN_INT_RAM */ | 
