FreeCalypso > hg > tcs211-fcmodem
comparison gpf/INC/Ccdedit.h @ 0:509db1a7b7b8
initial import: leo2moko-r1
| author | Space Falcon <falcon@ivan.Harhan.ORG> | 
|---|---|
| date | Mon, 01 Jun 2015 03:24:05 +0000 | 
| parents | |
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| -1:000000000000 | 0:509db1a7b7b8 | 
|---|---|
| 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 | 
