comparison src/gpf/inc/Ccdedit.h @ 5:1ea54a97e831

src/gpf: import of Magnetite src/gpf3
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 08:11:07 +0000
parents
children
comparison
equal deleted inserted replaced
4:6e457872f745 5:1ea54a97e831
1 /*
2 +-------------------------------------------------------------------------------
3 | Project :
4 | Modul : Ccdedit.h
5 +-------------------------------------------------------------------------------
6 | Copyright 2002 Texas Instruments Berlin, AG
7 | All rights reserved.
8 |
9 | This file is confidential and a trade secret of Texas
10 | Instruments Berlin, AG
11 | The receipt of or possession of this file does not convey
12 | any rights to reproduce or disclose its contents or to
13 | manufacture, use, or sell anything it may describe, in
14 | whole, or in part, without the specific written consent of
15 | Texas Instruments Berlin, AG.
16 +-------------------------------------------------------------------------------
17 | Purpose : Coder Decoder Edit functions
18 +-------------------------------------------------------------------------------
19 */
20
21 #ifndef __CCDEDIT_H__
22 #define __CCDEDIT_H__
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /*_cplusplus*/
27
28 /*
29 * The handle structure for primitives/messages
30 */
31 /*
32 * level of substructured elements in substructures
33 */
34 #define MAX_LEVELS 20
35
36 typedef enum
37 {
38 TRAVERSE_ARRAY,
39 TRAVERSE_STRUCTURE
40 } T_CTX_STATE;
41
42 typedef enum
43 {
44 NoArray,
45 FixArray,
46 VarArray
47 } T_ATYPE;
48
49 typedef enum
50 {
51 FromMsg, FromPrim
52 } T_ELM_SRC;
53
54 typedef struct
55 {
56 USHORT structIdx;
57 USHORT elemIdx;
58 UBYTE elemType;
59 T_CTX_STATE state;
60 USHORT arrayIndex;
61 USHORT repeats; /* valid repeats */
62 USHORT numElems;
63 U32 levelOffset;
64 T_ATYPE arrayType; /* elem is an fix or */
65 /* variable or no array */
66 } T_CCDE_CONTEXT;
67
68 typedef struct
69 {
70 UBYTE level;
71 BOOL canDescent;
72 T_ELM_SRC source;
73 U32 maxCSize;
74 USHORT lenVarPart; /* length of the variable
75 part e.g. a SDU */
76 T_CCDE_CONTEXT context[MAX_LEVELS];
77 } T_CCDE_HANDLE;
78
79 typedef enum
80 {
81 noptr,
82 usptr,
83 ctptr
84 } T_PTRTYPE;
85
86 /*
87 * The type of the C-structure component
88 */
89 typedef enum
90 {
91 T_none,
92 T_byte,
93 T_short,
94 T_long,
95 T_buffer,
96 T_struct,
97 T_union,
98 T_issdu,
99 T_ductrl
100 } T_BTYPE;
101
102 #define NO_REF 0xffff
103
104 #define SHORT_NAME_LENGTH 256
105 #define ALIAS_NAME_LENGTH 256
106 #define LONG_NAME_LENGTH 100
107 #define SYMBOLIC_VAL_LENGTH 150
108
109
110 typedef struct
111 {
112 T_ELM_SRC esource; /* source of element(MSG/PRIM)*/
113 T_BTYPE btype; /* C-type of element */
114 T_ATYPE arrayType; /* elem is an fix or */
115 T_PTRTYPE ptrtype; /* pointer type */
116 BOOL isOptional;
117 BOOL isValid;
118 U32 bytelen; /* length in byte */
119 U32 offset; /* byteoffs in C-Structure*/
120 /* variable or no array */
121 USHORT maxRepeat; /* max repeats if isArray */
122 USHORT validRepeats; /* valid repeats */
123 USHORT index; /* act. idx in array */
124 USHORT ccdIndex;
125 UBYTE level; /* level of descending */
126 BOOL u_member;
127 U32 u_ctrl; /* union tag */
128 USHORT elemref; /* elemref from [pm]elem.cdg */
129 USHORT bitstring; /* it is an ANS1_BITSTRINGS */
130 USHORT issigned; /* it is a signed variable */
131 USHORT c_implicit; /* counter c_xxx is generated */
132 char sname[SHORT_NAME_LENGTH+1];
133 char aname[ALIAS_NAME_LENGTH+1];
134 char lname[LONG_NAME_LENGTH+1];
135 char symbolicValue[SYMBOLIC_VAL_LENGTH+1];
136 int valcheck; /* indicates if value was in range */
137 } T_CCDE_ELEM_DESCR;
138
139 /*
140 * Definitions of returnvalues of the ccd_xxxx functions.
141 */
142
143 #define CCDEDIT_OK 0
144 #define CCDEDIT_PRIM_NOT_FOUND 1
145 #define CCDEDIT_END_OF_PRIM 2
146 #define CCDEDIT_PRIMITIVE_ERROR 3
147 #define CCDEDIT_MESSAGE_NOT_FOUND 1
148 #define CCDEDIT_END_OF_MSG 2
149 #define CCDEDIT_MESSAGE_ERROR 3
150 #define CCDEDIT_COMP_NOT_FOUND 1
151 #define CCDEDIT_END_OF_COMP 2
152 #define CCDEDIT_COMP_ERROR 3
153 #define CCDEDIT_UTAG_ERROR 1
154 #define CCDEDIT_DLL_ERROR 10
155 #define CCDEDIT_ERROR -2
156
157 /* and for the former tdc functions */
158 #define NO_ENTRY_FOUND 0xffffffff
159
160 #if !defined (CCDDATA_PREF)
161 #if defined (_TOOLS_) && defined (CCDDATA_LOAD)
162 #define CCDDATA_PREF(cde_fun) cddl_##cde_fun
163 #else
164 #define CCDDATA_PREF(cde_fun) cde_fun
165 #endif /* _TOOLS_ && CCDDATA_LOAD */
166 #endif /* !CCDDATA_PREF */
167
168 #ifndef CCDEDIT_C
169
170 /*
171 * Initialize the internal data of ccdedit. Must be called before any
172 * of the other functions.
173 */
174 extern void CCDDATA_PREF(cde_init) (void);
175
176 /*
177 * This function works with similar results like cde_comp_first,
178 * but not the whole comp table is searched for the name of the
179 * component. Instead the previous set elemref in the
180 * parameter edescr is taken to directly jump to the component.
181 * The component found is compared with the given name in
182 * edescr. If equal chandle is defined. Otherwise there is an error.
183 */
184 extern USHORT CCDDATA_PREF(cde_get_comp) (T_CCDE_HANDLE* chandle,
185 T_CCDE_ELEM_DESCR* edescr);
186
187 /*
188 * Selects the primitive for edit processing. The code of the
189 * primitive (primcode) must be passed to the function.
190 * The function returns a State and the primname in (*name)
191 * and a handle for this edit process (phandle).
192 * After a successful call the component maxCSize of the
193 * phandle contains the size of the C-Structure for this primitive.
194 */
195 extern USHORT CCDDATA_PREF(cde_prim_first) (T_CCDE_HANDLE * phandle,
196 ULONG primcode,
197 char * name);
198 /*
199 * Get the next element of the selected primitive. All informations
200 * of this element is stored into the element descriptor (pdescr).
201 */
202 extern USHORT CCDDATA_PREF(cde_prim_next) (T_CCDE_HANDLE * phandle,
203 UBYTE descent,
204 T_CCDE_ELEM_DESCR * pdescr);
205
206
207 /*
208 * Selects the message for edit processing. The message type (type),
209 * the (entity) and the (direction) must be passed to this function.
210 * The function returns a State and the messagename in (*name)
211 * and a handle for this edit process (mhandle).
212 * After a successful call the component maxCSize of the
213 * mhandle contains the size of the C-Structure for this message.
214 */
215 extern USHORT CCDDATA_PREF(cde_msg_first) (T_CCDE_HANDLE * mhandle,
216 UBYTE type,
217 UBYTE direction,
218 UBYTE entity,
219 char * name);
220
221
222 /*
223 * Get the next element of the selected primitive. All informations
224 * of this element is stored into the element descriptor (iedescr).
225 */
226 extern USHORT CCDDATA_PREF(cde_msg_next) (T_CCDE_HANDLE * mhandle,
227 UBYTE descent,
228 T_CCDE_ELEM_DESCR * iedescr);
229
230 /*
231 * Selects at COMPOSITION (structure) for edit processing.
232 * The short name (compname) of this composition must be passed
233 * to this function.
234 * The function returns a State and ahandle for this
235 * edit process (chandle).
236 * This function may be used for sub-structures (compositions)
237 * of primitives and messages.
238 * After a successful call the component maxCSize of the
239 * chandle contains the size of the C-Structure for this composition.
240 */
241 extern USHORT CCDDATA_PREF(cde_comp_first) (T_CCDE_HANDLE * chandle,
242 T_ELM_SRC source,
243 char * compname);
244
245 /*
246 * Get the next element of the selected composition. All informations
247 * of this element is stored into the element descriptor (cdescr).
248 */
249 extern USHORT CCDDATA_PREF(cde_comp_next) (T_CCDE_HANDLE * chandle,
250 UBYTE descent,
251 T_CCDE_ELEM_DESCR * descr);
252
253 /*
254 * Add the "Comment" of the SAP-/MSG-catalogues to the member symbolicValue
255 * of a given T_CCDE_ELEM_DESCR.
256 * This functionality was part of cde_read_elem and is now extracted
257 * to a dedicated function.
258 */
259 extern char* CCDDATA_PREF(cde_get_symval) (int elem_value,
260 T_CCDE_ELEM_DESCR* edescr);
261
262 /*
263 * Read the value of the element out of the C-Structure (cstruct)
264 * which containes a primitive or a decoded message. The infomations
265 * of the element is stored in the input parameter edescr, wich is
266 * previously assigned by a cde_xxxx_next () call. The value of this
267 * element is stored in the memory area addressed by (*value).
268 * After this call, the component symbolicValue of the edescr-struct
269 * is updated with a symbolic value string, (if any defined).
270 */
271 extern USHORT CCDDATA_PREF(cde_read_elem) (T_CCDE_HANDLE * handle,
272 void * cstruct,
273 T_CCDE_ELEM_DESCR * edescr,
274 UBYTE * value);
275
276
277 /*
278 * prepares the writing of elements, by setting valid flag,
279 * union controller and length of vaiable arrays if necessary.
280 * First version: union controller only.
281 */
282 extern void CCDDATA_PREF(cde_write_prepare) (T_CCDE_HANDLE * handle,
283 void * cstruct,
284 T_CCDE_ELEM_DESCR * edescr);
285
286 /*
287 * Store the value from the memory area which is addressed by (*value)
288 * into the corrensponding position into the C-Structure (cstruct)
289 * which containes a primitive or a decoded message. The infomations
290 * of the element is stored in the input parameter edescr, wich is
291 * previously assigned by a cde_xxxx_next () call.
292 */
293 extern USHORT CCDDATA_PREF(cde_write_elem) (T_CCDE_HANDLE * handle,
294 void * cstruct,
295 T_CCDE_ELEM_DESCR * edescr,
296 UBYTE * value);
297
298
299 /*
300 * This function requests if the given name is the name of
301 * a primitive or of a message. If the function returns
302 * CCDEDIT_OK the return parameter source is set to FromPrim
303 * or to FromMsg. Otherwise CCDEDIT_PRIM_NOT_FOUND/CCD_EDIT_MESSAGE_NOT_FOUND
304 * is returned.
305 */
306 extern USHORT CCDDATA_PREF(cde_get_type) (char * name,
307 T_ELM_SRC * source);
308
309 /*
310 * This function requests the opcode of a primitive. The
311 * name of the primitive is given by the input paramater name.
312 * If the function returns CCDEDIT_OK the parameter primcode
313 * contains the 16 bit opcode. Otherwise CCDEDIT_PRIM_NOT_FOUND
314 * is returned.
315 */
316 extern USHORT CCDDATA_PREF(cde_get_primcode) (char * name,
317 ULONG * primcode);
318
319
320
321 /*
322 * This function requests the opcode, the direction and the
323 * entity index of a message. The name of the message is given
324 * by the input paramater name.
325 * If the function returns CCDEDIT_OK the return parameters types,
326 * direction and entity contains the right values.
327 * Otherwise CCDEDIT_MESSAGE_NOT_FOUND is returned.
328 */
329 extern USHORT CCDDATA_PREF(cde_get_msgcode) (char * name,
330 UBYTE * type,
331 UBYTE * direction,
332 UBYTE * entity);
333
334 /*
335 * This function finds out if an AIM is a downlink or uplink.
336 */
337 extern int CCDDATA_PREF(cde_get_is_downlink) (ULONG comp_index);
338
339 /*
340 * This function searches the comp index in either pcomp or mcomp
341 */
342 extern ULONG CCDDATA_PREF(cde_get_comp_index) (CHAR* comp_name,
343 T_ELM_SRC table);
344
345 /*
346 * This function gets the element name for a given index + offset.
347 */
348 extern CHAR* CCDDATA_PREF(cde_get_element_name) (ULONG comp_index,
349 USHORT elem_off,
350 T_ELM_SRC table);
351
352 /*
353 * This function gets the array kind - e.g. the cSize of the
354 * arrays (byte, short og long).
355 */
356 extern ULONG CCDDATA_PREF(cde_get_array_kind) (CHAR* var_name, T_ELM_SRC table);
357
358 #endif /* !CCDEDIT_C */
359
360 #ifdef __cplusplus
361 }
362 #endif /*_cplusplus*/
363
364 #endif