FreeCalypso > hg > fc-selenite
annotate src/gpf/ccd/ccd_elem.c @ 134:7d50d8d13711
FFS code sync with Magnetite + gcc version fix
This change brings the new flash autodetection for FC and Pirelli targets
from Magnetite, and should also fix the gcc version for C1xx and gtamodem
targets, which were previously broken because they used TI's original
flash autodetect code (which operates at address 0) while the boot ROM
is mapped there.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Tue, 11 Dec 2018 08:43:25 +0000 |
| parents | 1ea54a97e831 |
| children |
| rev | line source |
|---|---|
|
5
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +----------------------------------------------------------------------------- |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project : |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : ccd_elem.c |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +----------------------------------------------------------------------------- |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 | |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +----------------------------------------------------------------------------- |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose : Condat Conder Decoder - |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | Definition of encoding and decoding functions of |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 | information elements of air interface messages |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 +----------------------------------------------------------------------------- |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #define CCD_ELEM_C |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 #include <stdio.h> |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #include <string.h> |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #include "typedefs.h" |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "ccd_globs.h" |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "ccd.h" |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "ccdtable.h" |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "ccddata.h" |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "ccdapi.h" |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "bitfun.h" |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #ifndef RUN_INT_RAM |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 +--------------------------------------------------------------------+ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 | PROJECT : CCD (6144) MODULE : ccd_elem | |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 | STATE : code ROUTINE : ccd_decodeElem | |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 +--------------------------------------------------------------------+ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 PARAMETERS: ULONG ccdid |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 - Enumeration of the information element to be |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 decoded in the file ccdid.h. This number is also |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 the reference number of the IE in the melem table. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 USHORT l_buf |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 - Number of bits in the encoded IE. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 USHORT o_buf |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 - Offset of the bitstream buffer in bits. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 U8 *buf |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 - Bitstream buffer of the encoded IE. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 U8 *eStruct |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 - reference to the C-Structure containing the |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 C-Representation of the decoded IE. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 PURPOSE: decodes a bitstream containing an encoded information |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 element. The results are written to a corresponding |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 C-Structure, the C-Representation of the IE. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 int CCDDATA_PREF(ccd_decodeElem) (ULONG ccdid, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 USHORT l_buf, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 USHORT o_buf, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 UCHAR* buf, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 UCHAR* eStruct) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 int jmp_ret; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 USHORT mcompRef; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 T_CCD_Globs *globs; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 T_CCD_ERR_LIST_HEAD* eentry; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 T_CCD_STORE_LIST* stoentry; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 globs = ccd_GetGlobVars (&eentry, &stoentry); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 ccd_dump_msg(l_buf, o_buf, buf, globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 * setup the structure-buffer. */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 globs->pstruct = eStruct; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 globs->pstructOffs = 0; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 ccd_common_decode_init(l_buf, o_buf, buf, globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 ccd_err_reset (eentry); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 globs->ccd_recurs_level =1; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 if ((mcompRef = melem[ccdid].elemRef) EQ NO_REF) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 ccd_recordFault (globs, ERR_INVALID_CCDID, BREAK, ccdid, NULL); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 ccd_FreeGlobVars (globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 ccd_err_free (eentry); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 return (BYTE)globs->CCD_Error; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 #ifdef CCD_SYMBOLS |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 TRACE_CCD (globs, "CCD decode: Element = %s", |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 mcomp[mcompRef].name); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 #else |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 TRACE_CCD (globs, "CCD decode: CCD_Id = %x", ccdid); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 #ifdef ERR_TRC_STK_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 /* save the value for tracing in error case */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 globs->error_stack[0] = mcompRef; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 #endif /* ERR_TRC_STK_CCD */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 * Clean up the entite C-structure before decoding. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 * Do not overwrite the MsgId (1. Byte) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 TRACE_CCD (globs, "CCD Cleaning struct %ld bytes", |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 mcomp[mcompRef].cSize); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 memset ((UBYTE *) globs->pstruct, 0, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 (size_t)(mcomp[mcompRef].cSize)); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 * clear the UPN stack |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 globs->SP=0; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 globs->StackOvfl=FALSE; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 globs->KeepReg[0] = 0; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 * inform the GSM-CODEC about the begin of a new message |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 cdc_GSM_start (globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 jmp_ret = setjmp (globs->jmp_mark); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 if (jmp_ret EQ 0) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 globs->jmp_mark_set = TRUE; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 ccd_decodeComposition ((ULONG) mcompRef, globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 TRACE_CCD (globs, "CCD-ERROR = %d", globs->CCD_Error); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 TRACE_CCD (globs, "-------------------------------------------------"); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 #endif /* DEBUG_CCD */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 ccd_FreeGlobVars (globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 ccd_err_free (eentry); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 return (BYTE) globs->CCD_Error; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 #endif /* !RUN_INT_RAM */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 #ifndef RUN_INT_RAM |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 +--------------------------------------------------------------------+ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 | PROJECT : CCD (6144) MODULE : ccd_elem | |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 | STATE : code ROUTINE : ccd_encodeElem | |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 +--------------------------------------------------------------------+ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 PARAMETERS: ULONG ccdid |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 - Enumeration of the information element to be |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 encoded in the file ccdid.h. This number is also |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 the reference number of the IE in the melem table |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 USHORT l_buf |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 - Number of bits in the encoded IE. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 USHORT o_buf |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 - Offset of the bitstream buffer in bits. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 U8 *buf |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 - Bitstream buffer of the encoded IE. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 UBYTE * eStruct |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 - reference to the C-Structure containing the |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 C-Representation of the decoded IE. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 PURPOSE: encodes a C-Structure containing the C-Representation of |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 an information element to a bitstream. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 int CCDDATA_PREF(ccd_encodeElem) (ULONG ccdid, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 USHORT* l_buf, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 USHORT o_buf, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 UCHAR* buf, |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 UCHAR* eStruct) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 int jmp_ret; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 USHORT maxBytes, mcompRef; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 T_CCD_Globs *globs; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 T_CCD_ERR_LIST_HEAD* eentry; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 T_CCD_STORE_LIST* stoentry; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 globs = ccd_GetGlobVars (&eentry, &stoentry); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 ccd_err_reset (eentry); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 /* to avoid the vsprintf if the traces won't appear anyhow */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 ULONG mask; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 if (vsi_gettracemask (globs->me, globs->me, &mask) != VSI_ERROR) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 globs->TraceIt = mask & TC_CCD; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 * Set a sign that no call to setjmp() is done. So ccd_setError |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 * performs no longjmp in case of an error. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 globs->jmp_mark_set = FALSE; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 /* Setup the bitbuffer. */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 globs->bitbuf = buf; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 globs->bitpos = 0; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 /* Setup the structure-buffer. */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 globs->pstruct = eStruct; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 globs->pstructOffs = 0; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 /* Cleanup the read-caches. */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 globs->lastbytepos16 = globs->lastbytepos32 = 0xffff; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 /* Setup the bitoffset. */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 globs->bitoffs = o_buf; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 bf_incBitpos (o_buf, globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 globs->bitbuf[globs->bytepos] = 0; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 globs->CCD_Error = ccdOK; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 globs->ccd_recurs_level =1; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 if ((mcompRef = melem[ccdid].elemRef) EQ NO_REF) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 ccd_recordFault (globs, ERR_INVALID_CCDID, BREAK, ccdid, NULL); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 ccd_FreeGlobVars (globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 ccd_err_free (eentry); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 return (BYTE)globs->CCD_Error; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 #ifdef CCD_SYMBOLS |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 TRACE_CCD (globs, "CCD encode: Element = %s", |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 mcomp[mcompRef].name); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 #else |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 TRACE_CCD (globs, "CCD encode: CCD_Id = %x", ccdid); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 #ifdef ERR_TRC_STK_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 /* Save the value for tracing in error case. */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 globs->error_stack[0] = mcompRef; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 maxBytes = (USHORT) (mcomp[mcompRef].bSize+7)>>3; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 TRACE_CCD (globs, "-------------------------------------------------"); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 TRACE_CCD (globs, "CCD: Code Elem"); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 TRACE_CCD (globs, "Cleaning %d bits (%d bytes) of the bitstream", |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 mcomp[mcompRef].bSize, maxBytes); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 * Clean up the bit buffer for the encoded message before encoding. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 memset ((U8 *) &buf[o_buf>>3], 0, (size_t) maxBytes); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 /* Store the length of ereased buffer to support error handling. */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 globs->buflen = (USHORT) mcomp[mcompRef].bSize; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 * Clear the UPN stack. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 globs->SP=0; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 globs->StackOvfl=FALSE; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 globs->KeepReg[0] = 0; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 /* |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 * Inform the GSM-CODEC about the begin of a new message. |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 cdc_GSM_start (globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 jmp_ret = setjmp (globs->jmp_mark); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 if (jmp_ret EQ 0) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 globs->jmp_mark_set = TRUE; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 ccd_encodeComposition ((ULONG) mcompRef, globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 *l_buf = (USHORT)(globs->bitpos - globs->bitoffs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 int i, j, buflen; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 char s[64], c[4]; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 buflen = (*l_buf + o_buf + 7) >> 3; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 TRACE_CCD (globs, "-------------------------------------------------"); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 TRACE_CCD (globs, " After ENCODING: lbuf= %d, obuf= %d", *l_buf, o_buf); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 TRACE_CCD (globs, " Hex dump of encoded message:"); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 s[0] = '\0'; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 for (i = o_buf >> 3; i < buflen; i+=16) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 for (j = 0; j < 16; j++) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 if ((i+j) < buflen) |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 { |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 sprintf(c, " %02x", buf[i+j]); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 strcat (s, c); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 TRACE_CCD (globs, "%s", s); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 s[0] = '\0'; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 #endif |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 #ifdef DEBUG_CCD |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 TRACE_CCD (globs, "CCD-ERROR = %d", globs->CCD_Error); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 TRACE_CCD (globs, "-------------------------------------------------"); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 #endif /* DEBUG_CCD */ |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 ccd_FreeGlobVars (globs); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 ccd_err_free (eentry); |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 return (BYTE) globs->CCD_Error; |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 } |
|
1ea54a97e831
src/gpf: import of Magnetite src/gpf3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 #endif /* !RUN_INT_RAM */ |
