diff src/gpf2/ccd/ccd.h @ 1:864b8cc0cf63

src/gpf2: preened GPF goo from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 25 Sep 2016 23:38:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gpf2/ccd/ccd.h	Sun Sep 25 23:38:58 2016 +0000
@@ -0,0 +1,413 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  
+|  Modul   : ccd.h
++----------------------------------------------------------------------------- 
+|  Copyright 2002 Texas Instruments Berlin, AG 
+|                 All rights reserved. 
+| 
+|                 This file is confidential and a trade secret of Texas 
+|                 Instruments Berlin, AG 
+|                 The receipt of or possession of this file does not convey 
+|                 any rights to reproduce or disclose its contents or to 
+|                 manufacture, use, or sell anything it may describe, in 
+|                 whole, or in part, without the specific written consent of 
+|                 Texas Instruments Berlin, AG. 
++----------------------------------------------------------------------------- 
+|  Purpose :  Condat Coder Decoder
+|             Global function prototypes
++----------------------------------------------------------------------------- 
+*/ 
+
+
+#ifndef CCD_H
+#define CCD_H
+
+/* Start addresses of ccddata tables */
+#ifndef CCD_C
+extern const T_CCD_VarTabEntry*   mvar;
+extern const T_CCD_SpareTabEntry* spare;
+extern const T_CCD_CalcTabEntry*  calc;
+extern const T_CCD_CompTabEntry*  mcomp;
+extern const T_CCD_ElemTabEntry*  melem;
+extern const T_CCD_CalcIndex*     calcidx;
+extern const T_CCD_ValTabEntry*   mval;
+#endif /* !CCD_C */
+
+/*
+ * Chain of error information.
+ */
+typedef struct ccd_error_list
+{
+  T_CCD_ERR_ENTRY entry;
+  struct ccd_error_list *next;
+} T_CCD_ERR_LIST;
+
+/*
+ * Head of the error information chain.
+ */
+typedef struct ccd_err_list_head
+{
+  T_CCD_ERR_LIST *first_error;
+  T_CCD_ERR_LIST **act_error;
+  int            num_errors;
+} T_CCD_ERR_LIST_HEAD;
+
+typedef struct ccd_store_list
+{
+  ULONG store[3];
+  /* for future use to extend register capacity  */
+  /* T_CCD_STORE_LIST *next; */
+} T_CCD_STORE_LIST;
+
+/*
+ * CCD list of all tasks
+ */
+typedef struct ccd_task_table
+{
+  T_CCD_Globs* ccd_globs;
+  U8* decmsgbuf;
+  T_CCD_ERR_LIST_HEAD* ccd_err_list;
+  T_CCD_STORE_LIST* ccd_store;
+} T_CCD_TASK_TABLE;
+
+/*
+ * Macros for forcing n-byte aligned addresses to byte arrays
+ */
+#ifndef BUFFER_ALIGNMENT
+  #define BUFFER_ALIGNMENT 3
+#endif
+
+#define ALIGN_BUF(uabuf) (UBYTE*) ((((U32)uabuf) + BUFFER_ALIGNMENT) & \
+                                   (~BUFFER_ALIGNMENT))
+
+/*
+ * Error behaviour to use with ccd_setError()
+ */
+#ifdef BREAK
+#undef BREAK
+#endif
+
+#define BREAK                0
+#define CONTINUE             1
+
+#define END_OF_COMPOSITION   0x7e
+
+/*
+ * Functions defined in ccd.c
+ */
+EXTERN BOOL   ccd_conditionOK       (const ULONG  e_ref,
+                                     T_CCD_Globs *globs);
+
+EXTERN BOOL   ccd_calculateRep      (const ULONG  e_ref,
+                                     ULONG       *repeat,
+                                     ULONG       *max_repeat,
+                                     T_CCD_Globs *globs);
+
+EXTERN void   ccd_performOperations (ULONG        num_of_ops,
+                                     ULONG        op_def_ref,
+                                     T_CCD_Globs *globs);
+
+EXTERN void   ccd_encodeComposition (const ULONG  c_ref,
+                                     T_CCD_Globs *globs);
+
+EXTERN void   ccd_decodeComposition (const ULONG  c_ref,
+                                     T_CCD_Globs *globs);
+extern int    ccd_check_pointer     (U8* ptr);
+
+/* from ccd_err.c */
+extern void   ccd_setError          (T_CCD_Globs *globs,
+                                     UBYTE      ErrCode,
+                                     UBYTE      Action,
+                                     USHORT     first_par, ...);
+extern void   ccd_recordFault       (T_CCD_Globs *globs,
+                                     UBYTE      ErrCode,
+                                     UBYTE      Action,
+                                     T_ERR_INFO error_info,
+                                     U8        *err_IEaddr);
+extern void   ccd_err_reset         (T_CCD_ERR_LIST_HEAD* eentry);
+extern void   ccd_err_free          (T_CCD_ERR_LIST_HEAD* eentry);
+extern int    ccd_err_init          (T_CCD_ERR_LIST_HEAD** eentry);
+extern void   ccd_err_exit          (void);
+extern T_CCD_Globs* ccd_GetGlobVars (T_CCD_ERR_LIST_HEAD** eentry, 
+                                     T_CCD_STORE_LIST** stoentry);
+extern void ccd_FreeGlobVars        (T_CCD_Globs* globs);
+extern void ccd_common_decode_init  (U16 l_buf,
+                                     U16 o_buf,
+                                     U8 *buf,
+                                     T_CCD_Globs *globs);
+extern void ccd_dump_msg            (U16 l_buf,
+                                     U16 o_buf,
+                                     U8 *buf,
+                                     T_CCD_Globs *globs);
+/* from ccd_store.c */
+extern void ccd_store_exit          (void);
+extern UBYTE ccd_writeStore         (T_CCD_Globs *globs, ULONG regNo, ULONG value);
+extern UBYTE ccd_getStore           (T_CCD_Globs *globs, ULONG regNo, ULONG *value);
+extern int   ccd_store_init         (T_CCD_STORE_LIST** stoentry);
+
+/* from ccd_patch.c */
+extern int ccd_patch (T_CCD_Globs* globs, int validflag);
+                                     /*
+ *
+ * Functions defined in cdc_std.c
+ */
+/*
+ * STANDARD codecs
+ */
+EXTERN SHORT  cdc_std_decode        (const ULONG  c_ref,
+                                     const ULONG  e_ref,
+                                     T_CCD_Globs *globs);
+
+EXTERN SHORT  cdc_std_encode        (const ULONG  c_ref,
+                                     const ULONG  e_ref,
+                                     T_CCD_Globs *globs);
+
+EXTERN void   cdc_decodeElemvalue   (ULONG        e_ref,
+                                     ULONG       *repeat, 
+                                     T_CCD_Globs *globs);
+
+EXTERN void   cdc_encodeElemvalue   (ULONG        e_ref,
+                                     ULONG        repeat, 
+                                     T_CCD_Globs *globs);
+
+#ifdef DEBUG_CCD
+EXTERN void   TRACE_CCD             (T_CCD_Globs  *globs,
+                                     char         *format, ...);
+#endif
+
+
+typedef struct
+{
+  BOOL gotTag;
+  BOOL gotLen; 
+} T_TLV_SORT;
+
+/* 
+ * Functions defined in cdc_com.c
+ */
+EXTERN void   cdc_BCD_decode        (const ULONG e_ref, 
+                                     UBYTE       startDigit, 
+                                     T_CCD_Globs *globs);
+
+EXTERN void   cdc_BCD_encode        (const ULONG e_ref, 
+                                     UBYTE       startDigit, 
+                                     T_CCD_Globs *globs);
+                                     
+EXTERN SHORT  cdc_tlv_decode        (const ULONG  c_ref,
+                                     const ULONG  e_ref,
+                                     const T_TLV_SORT  *tlv_inf,
+                                     T_CCD_Globs *globs);
+
+EXTERN void   cdc_tlv_encode        (const ULONG  e_ref,
+                                     UBYTE        lenT,
+                                     UBYTE        lenL, 
+                                     T_CCD_Globs *globs);
+
+EXTERN void   cdc_GSM_start         (T_CCD_Globs *globs);
+
+EXTERN U16    cdc_isPresent         (const ULONG  e_ref,
+                                     T_CCD_Globs *globs);
+
+EXTERN BOOL   is_pointer_type       (const ULONG  e_ref);
+EXTERN BOOL   is_variable_type      (const ULONG  e_ref);
+
+EXTERN SHORT  PER_CommonBegin       (const ULONG  e_ref,
+                                     ULONG       *maxRep, 
+                                     T_CCD_Globs *globs);
+
+EXTERN U8     *PER_allocmem         (const ULONG  e_ref,
+                                     ULONG        repeat,
+                                     T_CCD_Globs *globs);
+
+EXTERN USHORT PER_allocmem_and_update (const ULONG  e_ref,
+                                       ULONG        repeat, 
+                                       T_CCD_Globs *globs);
+
+/* 
+ * Rest of the CCD coding functions e.g. GSM4_TLV, CSN1_S1 
+ */
+
+/* 
+ * Functions used for standard IEs of GSM
+ */
+EXTERN SHORT cdc_gsm1v_decode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm1v_encode   (const ULONG c_Ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm1tv_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm1tv_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm2t_decode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm2t_encode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm3v_decode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm3v_encode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm3tv_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm3tv_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm4lv_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm4lv_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm4tlv_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm4tlv_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm5v_decode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm5v_encode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm5tv_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm5tv_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm5tlv_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm5tlv_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm6tlv_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm6tlv_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm7lv_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm7lv_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+/* 
+ * Functions used for BCD digits 
+ */
+EXTERN SHORT cdc_bcdodd_decode     (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bcdodd_encode     (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bcdeven_decode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bcdeven_encode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bcd_nofill_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bcd_nofill_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bcd_mnc_decode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bcd_mnc_encode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+/* 
+ * Functions used for ASN1 BER
+ */
+EXTERN SHORT cdc_gsm1asn_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_gsm1asn_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+/* 
+ * Functions used for rest octets
+ */
+EXTERN const UBYTE padding_bits[];
+EXTERN const UBYTE padding_bits_prev[];
+#define GET_HL(bit)     (padding_bits[globs->bitpos%8] ^ bit)
+#define GET_HL_PREV(bit) (padding_bits_prev[globs->bitpos%8] ^ bit)
+EXTERN SHORT cdc_csn1_s1_decode      (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_s1_encode      (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_s0_decode      (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_s0_encode      (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_shl_decode     (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_shl_encode     (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_padd_decode         (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_padd_encode         (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_padd_0_decode       (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_padd_0_encode       (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_hl_flag_decode      (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_hl_flag_encode      (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_concat_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_concat_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_break_cond_decode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_break_cond_encode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_choice1_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_choice1_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_choice2_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_choice2_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_shl_opt_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_shl_opt_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_s1_opt_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_s1_opt_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_s0_opt_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_csn1_s0_opt_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+/* 
+ * Functions used for fax and data
+ */
+EXTERN SHORT cdc_t30_ident_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_t30_ident_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+                                 
+/* 
+ * Functions and types used for decoding frequency lists, fdd_cell_information 
+ * and tdd_cell_information
+ */
+#if defined CCD_TEST
+#include <stdlib.h>
+#define  MALLOC(P,S) P = (void*)malloc(S)
+#define  MFREE(P)    free(P)
+#endif
+
+typedef struct
+{
+  U8 length;
+  U8 count;
+} T_W_PARAM;
+
+EXTERN const T_W_PARAM param_1024[];
+EXTERN const T_W_PARAM param_512[];
+
+#define BITOFFSET_LIST          1024
+#define T_LIST_MAX_SIZE 128 /* 1024/8 = 128 */
+
+typedef struct
+{
+  U8 channels [T_LIST_MAX_SIZE];
+} T_LIST;
+
+#define FDD_CI_LIST     1
+#define TDD_CI_LIST     2
+#define FREQUENCY_LIST  3
+EXTERN U8 ByteBitMask[];
+EXTERN long for_modulo (long a, long b);
+EXTERN void cdc_decode_param       (const T_W_PARAM *param,short *w, U16 ListLength, T_CCD_Globs *globs);
+EXTERN void cdc_decode_frequencies (short original_range, short *w, short offset, U8 callerID, T_CCD_Globs *globs);
+EXTERN SHORT cdc_freq_list_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_freq_list_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_fdd_ci_decode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_fdd_ci_encode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_tdd_ci_decode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_tdd_ci_encode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+/* 
+ * Functions used for ASN1 PER
+ */
+EXTERN void  PER_Decode_ASN1_CHOICE_alterative (const ULONG e_ref, T_ENUM UnionTag, T_CCD_Globs *globs);
+EXTERN void  PER_Encode_ASN1_CHOICE_alterative (const ULONG e_ref, T_ENUM UnionTag, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_choice_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_choice_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_integ_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_integ_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_octet_encode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_octet_decode  (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_seq_decode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_seq_encode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bitstring_decode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_bitstring_encode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+/* 
+ * Functions used for ASN1 PER extensible
+ */
+EXTERN const UBYTE bitSize[];
+EXTERN U32   Read_NormallySmallNonNegativeWholeNr (T_CCD_Globs *globs);
+EXTERN void  Write_NormallySmallNonNegativeWholeNr (U32 Value, T_CCD_Globs *globs);
+EXTERN U32   Read_OpenTpye_Length (T_CCD_Globs *globs);
+EXTERN void  Write_OpenTpye_Length (U32 Value, T_CCD_Globs *globs);
+
+EXTERN SHORT cdc_asn1_choice_ext_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_choice_ext_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+EXTERN void  Read_unique_Integer (const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_integ_ext_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_integ_ext_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+EXTERN void  Read_SEQ_BitMap  (const ULONG first_elem, const ULONG last_elem, T_CCD_Globs *globs);
+EXTERN void  Write_SEQ_BitMap (const ULONG first_elem, const ULONG last_elem, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_seq_ext_decode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_seq_ext_encode   (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+                                       
+EXTERN SHORT cdc_asn1_obj_id_decode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_obj_id_encode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+EXTERN SHORT cdc_asn1_open_type_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_asn1_open_type_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+/* 
+ * Extra functions
+ */
+EXTERN SHORT cdc_no_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_no_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+
+/* 
+ * Functions used for umts message extensions
+ */
+EXTERN SHORT cdc_noncritical_ext_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_noncritical_ext_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_critical_ext_decode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+EXTERN SHORT cdc_critical_ext_encode    (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs);
+#endif