1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : pcon.h
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose : Condat Coder Decoder For Primitives
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | Global function prototypes
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #ifndef PCON_H
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #define PCON_H
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #define PCON_LITTLE 1
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 #define PCON_BIG 2
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #define PCON_OK 0
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #define PCON_INVALID_OPC 1 /* operation code of primitive not defined */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #define PCON_INVALID_CNT 2 /* wrong number of entries of an variable long array */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #define PCON_INVALID_OFFS 3 /* wrong sum of l_buf and o_buf of an sdu */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #define PCON_INVALID_TYPE 4 /* wrong entry in pvar table */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #define PCON_INVALID_INIT 5 /* wrong initialization */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #define PCON_INVALID_UTAG 6 /* union controller too large */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #define PCON_NO_MEM 7 /* out of memory */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #define PCON_CCDDATA_ERROR 8 /* wrong ccddata format */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #define PCON_INVALID_PTR 9 /* user supplied null pointer for a
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 mandatory element */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #define PCON_INVALID_VALFLAG 10 /* user supplied valid flag that is neither
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 1 nor 0 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #define PCON_INVALID_VALUE 11 /* user supplied value for basetype not
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 defined in specification */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #define PCON_INVALID_PATH 12 /* component path for prim not found */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #define PCON_CONFIG_PRIM 23 /* primitive was for internal use of PCON,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 * not to be relayed to stack
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 #define PCON_DLLFUNC_ERROR 24 /* could not find a function in pcon.dll */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 #define PCON_STRING_END 25 /* command string end reached */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 #endif /* _TOOLS_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 #define PCON_NOT_PRES 0xFFFF
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 #define PCON_NOT_INCL 0xFFFE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 #if !defined (CCDDATA_PREF)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 #if defined (_TOOLS_) && defined (CCDDATA_LOAD)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 #define CCDDATA_PREF(pcon_fun) cddl_##pcon_fun
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 #define CCDDATA_PREF(pcon_fun) pcon_fun
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 #endif /* _TOOLS_ && CCDDATA_LOAD */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 #endif /* !CCDDATA_PREF */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 typedef struct
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 ULONG (*init_prim_coding) (T_HANDLE, UBYTE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 ULONG (*decode_prim) (ULONG, void **, void *, ULONG *, ULONG);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 ULONG (*code_prim) (ULONG, void *, void **, ULONG *, ULONG, char*);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 ULONG (*make_filter) (char *, void **);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 ULONG (*init_prim_coding) (T_HANDLE, UBYTE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 ULONG (*decode_prim) (ULONG, void **, void *, ULONG *, ULONG);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 ULONG (*code_prim) (ULONG, void *, void **, ULONG *, ULONG, char*);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 ULONG (*pcheck) (ULONG, void *);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 int stack_offset;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 } T_PCON_PROPERTIES;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 typedef struct
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 USHORT struct_level; /* the substructure level within the structure, where
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 * the counting started from */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 USHORT cnt_sub_elems; /* the counter of structure subelements */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 BOOL count_subs ; /* flag whether sub elements should be counted */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 } T_SUB_ELEM_COUNT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 #define PCON_STACK_OFFSET 3072
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 #ifndef PCON_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 * function prototypes
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 extern ULONG CCDDATA_PREF(pcon_init_prim_coding)(T_HANDLE caller, UBYTE format);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 extern ULONG CCDDATA_PREF(pcon_decodePrim) (ULONG opc,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 void ** decoded_prim,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 void * coded_prim,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 ULONG * length,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 ULONG woff);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 extern ULONG CCDDATA_PREF(pcon_codePrim) (ULONG opc,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 void * decoded_prim,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 void ** coded_prim,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 ULONG * length,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 ULONG woff,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 char* receiver);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 extern ULONG CCDDATA_PREF(pcon_init_ccddata)(void);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 * The format for the command string in pcon_make_filter is:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 * [<receiver> [<opc>|<primname> [+|-<elem_pathnames>]]]
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 * With <elem_pathnames>: <elem_pathname>[,<elem_pathnames]
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 * and <elem_pathname> is the unique path of and element in a
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 * primitive, with the structure member names separated by '.'.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 * Examples:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 * "TAP ENT_FOO_IND +struct_3.elem_2,struct_1.substruct_0.elem_1" - Set filter
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 * if primitive ENT_FOO_IND if sent to TAP for the two elements elem_2 in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 * struct_3 and elem_1 in substruct_0 in struct_1.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 * "TAP 800000AF1 +struct_3.elem_2,struct_1.substruct_0.elem_1" - same for given
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 * opc instead of prim name.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 * "TAP ENT_FOO_IND -struct_3.elem_2,struct_1.substruct_0.elem_1" - Set filter
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 * for all other elements than two given here
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 * "TAP ENT_FOO_IND" - Delete filter setting for primitive ENT_FOO_IND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 * sent to TAP
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 * "TAP" - Delete all filter settings for any primitive sent to TAP
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 * "" - Delete all filter settings
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 extern ULONG CCDDATA_PREF(pcon_make_filter)(char* string, void** prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 extern ULONG CCDDATA_PREF(pcon_filter_decode_prim) (ULONG opc,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 void** decoded_prim,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 void* coded_prim,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 ULONG* length,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 ULONG woff,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 void** shadow_prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 extern ULONG pcon_pcheck (ULONG opc, void * decoded_prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 #endif /* _TOOLS_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 #endif /* !PCON_C */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 #endif
|