FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/ccd/csn1_choice_x.c @ 831:549b7ac60300
gsm-fw/g23m-glue/gdi/*.c: import from Leonardo source
| author | Space Falcon <falcon@ivan.Harhan.ORG> | 
|---|---|
| date | Thu, 23 Apr 2015 06:42:53 +0000 | 
| parents | 970d6199f2c5 | 
| children | 
| rev | line source | 
|---|---|
| 648 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 2 +----------------------------------------------------------------------------- | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 3 | Project : CCD | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 4 | Modul : csn1_choice_x.c | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 5 +----------------------------------------------------------------------------- | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 6 | Copyright 2002 Texas Instruments Berlin, AG | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 7 | All rights reserved. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 8 | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 9 | This file is confidential and a trade secret of Texas | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 10 | Instruments Berlin, AG | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 11 | The receipt of or possession of this file does not convey | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 12 | any rights to reproduce or disclose its contents or to | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 13 | manufacture, use, or sell anything it may describe, in | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 14 | whole, or in part, without the specific written consent of | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 15 | Texas Instruments Berlin, AG. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 16 +----------------------------------------------------------------------------- | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 17 | Purpose : Definition of encoding and decoding functions for CSN1_CHOICE2 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 18 | elements | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 19 +----------------------------------------------------------------------------- | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 20 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 21 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 22 * standard definitions like GLOBAL, UCHAR, ERROR etc. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 23 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 24 #include "typedefs.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 25 #include "header.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 26 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 27 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 28 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 29 * Prototypes of ccd (USE_DRIVER EQ undef) for prototypes only | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 30 * look at ccdapi.h | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 31 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 32 #undef USE_DRIVER | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 33 #include "ccdapi.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 34 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 35 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 36 * Types and functions for bit access and manipulation | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 37 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 38 #include "ccd_globs.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 39 #include "bitfun.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 40 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 41 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 42 * Prototypes of ccd internal functions | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 43 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 44 #include "ccd.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 45 #include "ccd_codingtypes.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 46 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 47 * Declaration of coder/decoder tables | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 48 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 49 #include "ccdtable.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 50 #include "ccddata.h" | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 51 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 52 EXTERN T_FUNC_POINTER codec[MAX_CODEC_ID+1][2]; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 53 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 54 #ifndef RUN_INT_RAM | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 55 /* Attention for RUN_...: static function */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 56 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 57 static void decode_csn1_choice_alternative(const ULONG e_ref, T_ENUM union_tag, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 58 T_CCD_Globs *globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 59 static void encode_csn1_choice_alternative(const ULONG e_ref, T_ENUM union_tag, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 60 T_CCD_Globs *globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 61 #endif /* !RUN_INT_RAM */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 62 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 63 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 64 #ifndef RUN_INT_RAM | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 65 /* Attention for RUN_...: static function */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 66 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 67 +--------------------------------------------------------------------+ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 68 | PROJECT : CCD (6144) MODULE : csn1_choice1 | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 69 | STATE : code ROUTINE : decode_csn1_choice_alternative | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 70 +--------------------------------------------------------------------+ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 71 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 72 PURPOSE : Decode a chosen alternative of a CSN.1 CHOICE type | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 73 Use the parameter union_tag to read the CHOICE index. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 74 Because of union_tag it is easy to calculate the elemRef | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 75 for the chosen element which is to be decoded. Then the | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 76 appropriate decoding function for the chosen element is | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 77 called. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 78 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 79 static void decode_csn1_choice_alternative(const ULONG e_ref, T_ENUM union_tag, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 80 T_CCD_Globs *globs) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 81 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 82 ULONG elem_ref, mcomp_ref; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 83 UBYTE *act_structpos; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 84 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 85 mcomp_ref= melem[e_ref].elemRef; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 86 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 87 * Write the CHOICE tag value in the C-structure. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 88 * Calculate the elem_ref for the chosen element. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 89 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 90 *(T_ENUM *) (globs->pstruct+globs->pstructOffs) = union_tag; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 91 elem_ref = mcomp[mcomp_ref].componentRef + (ULONG) union_tag; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 92 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 93 #ifdef DEBUG_CCD | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 94 #ifndef CCD_SYMBOLS | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 95 TRACE_CCD (globs, "decode_csn1_choice_alternative()"); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 96 #else | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 97 TRACE_CCD (globs, "decode_csn1_choice_alternative() %s", ccddata_get_alias((USHORT)e_ref, 1)); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 98 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 99 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 100 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 101 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 102 * Store the actual structure position. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 103 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 104 act_structpos = globs->pstruct; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 105 globs->pstruct += (globs->pstructOffs + sizeof(T_ENUM)); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 106 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 107 * Use the jump-table for selecting the decode function | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 108 * Call the decode function for the chosen element. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 109 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 110 (void) codec[melem[elem_ref].codingType][DECODE_FUN] | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 111 (mcomp_ref, elem_ref, globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 112 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 113 * Restore the write pointer to prepare decoding of the next element | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 114 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 115 globs->pstruct = act_structpos; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 116 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 117 #endif /* !RUN_INT_RAM */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 118 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 119 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 120 #ifndef RUN_INT_RAM | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 121 /* Attention for RUN_...: static function */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 122 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 123 +--------------------------------------------------------------------+ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 124 | PROJECT : CCD (6144) MODULE : csn1_choice1 | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 125 | STATE : code ROUTINE : encode_csn1_choice_alternative | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 126 +--------------------------------------------------------------------+ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 127 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 128 PURPOSE : Encode a chosen alternative of a CSN.1 CHOICE type. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 129 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 130 Because of union_tag it is easy to calculate the e_ref for | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 131 the chosen element to be encoded. Then the appropriate | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 132 encoding function for the chosen element is called. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 133 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 134 static void encode_csn1_choice_alternative (const ULONG e_ref, T_ENUM union_tag, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 135 T_CCD_Globs *globs) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 136 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 137 ULONG elem_ref, mcomp_ref; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 138 UBYTE *act_structpos; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 139 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 140 mcomp_ref= melem[e_ref].elemRef; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 141 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 142 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 143 * Calculate the elem_ref for the chosen element. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 144 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 145 elem_ref = mcomp[mcomp_ref].componentRef + (ULONG) union_tag; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 146 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 147 #ifdef DEBUG_CCD | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 148 #ifndef CCD_SYMBOLS | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 149 TRACE_CCD (globs, "encode_csn1_choice_alternative()"); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 150 #else | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 151 TRACE_CCD (globs, "encode_csn1_choice_alternative() %s", ccddata_get_alias((USHORT)e_ref, 1)); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 152 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 153 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 154 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 155 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 156 * Store the actual structure position. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 157 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 158 act_structpos = globs->pstruct; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 159 globs->pstruct += (globs->pstructOffs + sizeof(T_ENUM)); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 160 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 161 * Use the jump-table for selecting the encode function | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 162 * Call the encode function for the chosen element. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 163 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 164 (void) codec[melem[elem_ref].codingType][ENCODE_FUN] | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 165 (mcomp_ref, elem_ref, globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 166 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 167 * Restore the write pointer to prepare decoding of the next element | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 168 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 169 globs->pstruct = act_structpos; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 170 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 171 #endif /* !RUN_INT_RAM */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 172 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 173 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 174 #ifndef RUN_INT_RAM/* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 175 +-----------------------------------------------------------------------+ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 176 | PROJECT : CCD (6144) MODULE : CCD | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 177 | STATE : code ROUTINE : cdc_csn1_choice_x_decode | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 178 +-----------------------------------------------------------------------+ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 179 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 180 PURPOSE : Decode CSN.1 CHOICE type | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 181 In the header file the structure containing an element of | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 182 coding type CSN1_CHOICE is represented by a structure | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 183 type declaration. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 184 This structure type is composed at least of a control item | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 185 preceding an item of an union type. The control item | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 186 indicates the CHOICE index. The item of the union type | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 187 represents the CHOICE alternatives. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 188 The CHOICE index is "num" bits long. It is read from the | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 189 message bit string and the result is written to the control | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 190 item. CCD determes "elemRef" depending on this control item | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 191 and processes the union element according to table entry | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 192 of "elemRef" . | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 193 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 194 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 195 SHORT cdc_csn1_choice_x_decode (const ULONG c_ref, const ULONG e_ref, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 196 ULONG num, T_CCD_Globs *globs) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 197 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 198 ULONG union_tag, num_of_alt, num_of_comps; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 199 ULONG cix_ref, num_prolog_steps, prolog_step_ref; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 200 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 201 #ifdef DEBUG_CCD | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 202 #ifndef CCD_SYMBOLS | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 203 TRACE_CCD (globs, "cdc_csn1_choice1_decode()"); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 204 #else | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 205 TRACE_CCD (globs, "cdc_csn1_choice1_decode() %s", ccddata_get_alias((USHORT)e_ref, 1)); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 206 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 207 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 208 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 209 cix_ref = melem[e_ref].calcIdxRef; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 210 num_prolog_steps = calcidx[cix_ref].numPrologSteps; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 211 prolog_step_ref = calcidx[cix_ref].prologStepRef; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 212 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 213 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 214 * If this element is conditional, check the condition. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 215 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 216 if (calcidx[cix_ref].numCondCalcs NEQ 0 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 217 AND ! ccd_conditionOK (e_ref, globs)) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 218 return 1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 219 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 220 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 221 * If this element has a defined prologue | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 222 * we have to process it before decoding the bitstream. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 223 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 224 if (num_prolog_steps) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 225 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 226 ccd_performOperations (num_prolog_steps, prolog_step_ref, globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 227 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 228 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 229 globs->pstructOffs = melem[e_ref].structOffs; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 230 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 231 if (melem[e_ref].optional) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 232 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 233 /* Postpone optional flag setting for non-code transparent | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 234 * pointer types ('P', 'Q', 'R'). | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 235 * For these types, the optional flag is the pointer itself. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 236 * These types cannot be set yet, as the pointer may be | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 237 * preceeded by a counter octet, a union tag id octet etc. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 238 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 239 if (melem[e_ref].elemType < 'P' OR melem[e_ref].elemType > 'R') | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 240 globs->pstruct[globs->pstructOffs++] = (UBYTE) TRUE; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 241 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 242 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 243 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 244 * Get the number of alternatives from the C-structure. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 245 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 246 num_of_comps = mcomp[melem[e_ref].elemRef].numOfComponents; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 247 /* Determine number of possible alternatives */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 248 num_of_alt = num <<1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 249 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 250 /* read the bit representing the CHOICE index*/ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 251 union_tag = bf_getBits(num, globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 252 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 253 /* Check number of alternatives */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 254 if (!num_of_comps) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 255 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 256 /* Don't do anything for empty choices */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 257 return 1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 258 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 259 else if (num_of_comps != num_of_alt) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 260 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 261 /* if the number of components doesn't match to number of possible | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 262 * examine whether the CHOICE index demands an impossible alternative | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 263 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 264 if (union_tag > num_of_comps) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 265 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 266 /* if CHOICE index demands an impossible alternative | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 267 * return an error and break decoding | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 268 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 269 ccd_recordFault (globs, ERR_CSN1_CHOICE, BREAK, (USHORT) e_ref, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 270 globs->pstruct+globs->pstructOffs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 271 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 272 else | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 273 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 274 ccd_recordFault (globs, ERR_CSN1_CHOICE, CONTINUE, (USHORT) e_ref, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 275 globs->pstruct+globs->pstructOffs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 276 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 277 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 278 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 279 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 280 * Decode a chosen alternative of an CSN.1 CHOICE type | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 281 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 282 decode_csn1_choice_alternative(e_ref, (T_ENUM) union_tag, globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 283 return 1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 284 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 285 #endif /* !RUN_INT_RAM */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 286 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 287 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 288 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 289 #ifndef RUN_INT_RAM | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 290 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 291 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 292 +----------------------------------------------------------------------+ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 293 | PROJECT : CCD (6144) MODULE : csn1_choice1 | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 294 | STATE : code ROUTINE : cdc_csn1_choice_x_encode | | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 295 +----------------------------------------------------------------------+ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 296 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 297 PURPOSE : Encoding of CHOICE1 type for UMTS | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 298 In the header file the structure containing an element of | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 299 coding type CSN1_CHOICE is represented by a structure | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 300 type declaration. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 301 This structure type is composed at least of a control item | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 302 preceding an item of an union type. The control item | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 303 indicates the CHOICE index. The item of the union type | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 304 represents the CHOICE alternatives. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 305 The CHOICE index is "num" bit long. Tts value is read | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 306 from the message structureand the result is written to the | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 307 bit string. CCD determines "elemRef" depending on this index | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 308 and processes the union element according to table entry | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 309 of "elemRef" . | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 310 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 311 SHORT cdc_csn1_choice_x_encode (const ULONG c_ref, const ULONG e_ref, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 312 ULONG num, T_CCD_Globs *globs) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 313 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 314 ULONG union_tag, num_of_alt, num_of_comps; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 315 ULONG cix_ref, num_prolog_steps, prolog_step_ref; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 316 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 317 #ifdef DEBUG_CCD | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 318 #ifndef CCD_SYMBOLS | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 319 TRACE_CCD (globs, "cdc_csn1_choice_encode()"); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 320 #else | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 321 TRACE_CCD (globs, "cdc_csn1_choice_encode() %s", | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 322 mcomp[melem[e_ref].elemRef].name); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 323 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 324 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 325 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 326 cix_ref = melem[e_ref].calcIdxRef; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 327 num_prolog_steps = calcidx[cix_ref].numPrologSteps; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 328 prolog_step_ref = calcidx[cix_ref].prologStepRef; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 329 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 330 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 331 * If this element is conditional, check the condition. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 332 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 333 if (calcidx[cix_ref].numCondCalcs NEQ 0 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 334 AND ! ccd_conditionOK (e_ref, globs)) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 335 return 1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 336 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 337 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 338 * If this element has a defined prologue | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 339 * we have to process it before decoding the bitstream. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 340 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 341 if (num_prolog_steps) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 342 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 343 ccd_performOperations (num_prolog_steps, prolog_step_ref, globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 344 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 345 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 346 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 347 * Setup the offset into the C-structure for this element | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 348 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 349 globs->pstructOffs = melem[e_ref].structOffs; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 350 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 351 if (melem[e_ref].optional) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 352 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 353 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 354 * For optional elements check the valid-flag in the C-struct. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 355 * Postpone optional flag setting for non-code transparent | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 356 * pointer types ('P', 'Q', 'R'). | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 357 * For these types, the optional flag is the pointer itself. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 358 * These types cannot be set yet, as the pointer may be | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 359 * preceeded by a counter octet, a union tag id octet etc. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 360 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 361 if (melem[e_ref].elemType < 'P' OR melem[e_ref].elemType > 'R') | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 362 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 363 if (globs->pstruct[globs->pstructOffs++] EQ FALSE) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 364 return 1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 365 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 366 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 367 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 368 * Get the number of alternatives from the C-structure. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 369 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 370 num_of_comps = mcomp[melem[e_ref].elemRef].numOfComponents; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 371 /* Determine number of possible alternatives */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 372 num_of_alt = num <<1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 373 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 374 * Get the value of CHOICE index (= union controller) from the C-structure. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 375 * Check its correctness. Write it in the air message. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 376 * Afterwards encode the chosen CHOICE altervative. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 377 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 378 union_tag = (ULONG) globs->pstruct[globs->pstructOffs]; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 379 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 380 * Check its correctness. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 381 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 382 if (union_tag >= num_of_alt) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 383 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 384 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 385 * CHOICE index goes beyond the number of alternatives determined by | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 386 * selected coding type => return Error and break encoding process | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 387 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 388 ccd_recordFault (globs, ERR_CSN1_CHOICE, BREAK, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 389 (USHORT) e_ref, globs->pstruct+globs->pstructOffs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 390 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 391 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 392 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 393 * Write the CHOICE tag value in the C-structure. | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 394 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 395 bf_writeVal (union_tag, num, globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 396 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 397 /* Check number of alternatives */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 398 if (!num_of_comps) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 399 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 400 /* Don't do anything for empty choices */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 401 return 1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 402 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 403 else if (num_of_comps != num_of_alt) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 404 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 405 /* if the number of components doesn't match to number of possible | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 406 alternatives return a warning */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 407 ccd_recordFault (globs, ERR_CSN1_CHOICE, CONTINUE, | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 408 (USHORT) e_ref, globs->pstruct+globs->pstructOffs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 409 if (union_tag > num_of_comps) | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 410 { | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 411 /* if the CHOICE index demands an impossible one handle this choice | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 412 as no_code element */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 413 #ifdef DEBUG_CCD | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 414 #ifndef CCD_SYMBOLS | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 415 TRACE_CCD (globs, "cdc_No_encode()"); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 416 #else | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 417 TRACE_CCD (globs, "cdc_No_encode() %s", ccddata_get_alias((USHORT) e_ref, 1)); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 418 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 419 #endif | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 420 return 1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 421 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 422 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 423 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 424 /* | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 425 * Encode a chosen alternative of an CSN.1 CHOICE type | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 426 */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 427 encode_csn1_choice_alternative (e_ref, (T_ENUM) union_tag, globs); | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 428 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 429 return 1; | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 430 } | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 431 #endif /* !RUN_INT_RAM */ | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 432 | 
| 
970d6199f2c5
gsm-fw/ccd/*.[ch]: initial import from the LoCosto source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 433 | 
