104
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3 | Project : GSM-PS (6147)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4 | Modul : CC_CFK
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 5 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 6 | Copyright 2002 Texas Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 7 | All rights reserved.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 8 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 9 | This file is confidential and a trade secret of Texas
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 10 | Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 11 | The receipt of or possession of this file does not convey
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 12 | any rights to reproduce or disclose its contents or to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 13 | manufacture, use, or sell anything it may describe, in
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 14 | whole, or in part, without the specific written consent of
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 15 | Texas Instruments Berlin, AG.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 16 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 17 | Purpose : This Modul defines the functions called by the primitive
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 18 | processing functions of the SDL process CC.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 19 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 20 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 21
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 22 #ifndef CC_CFK_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 23 #define CC_CFK_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 24
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 25 #define ENTITY_CC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 26 /*==== INCLUDES ===================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 27
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 28 #include <string.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 29 #include "typedefs.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 30 #include "pcm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 31 #include "vsi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 32 #include "custom.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 33 #include "gsm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 34 #include "message.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 35 #include "ccdapi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 36 #include "prim.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 37 #include "cnf_cc.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 38 #include "mon_cc.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 39 #include "pei.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 40 #include "tok.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 41 #include "cc.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 42
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 43 /*==== EXPORT =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 44
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 45 /*==== PROTOTYPE ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 46 /* Implements Measure# 21 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 47 LOCAL void cc_set_neg_bearer_cap (const T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 48 T_MNCC_bcpara * bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 49 T_M_CC_bearer_cap * neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 50 EF_MSCAP mscap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 51 /* Implements Measure# 15 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 52 LOCAL void cc_fill_struct (UBYTE is_num_pres,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 53 T_MNCC_calling_party *calling_party,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 54 const T_M_CC_calling_num *calling_num);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 55 /* Implements Measure# 24, 25 and 26 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 56 LOCAL void cc_fill_sub_struct (UBYTE is_num_pres,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 57 T_MNCC_connected_number_sub *connected_number_sub,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 58 const T_M_CC_connect_subaddr *connect_subaddr);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 59 /*==== PRIVAT =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 60
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 61 /*==== VARIABLES ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 62
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 63 /*==== FUNCTIONS ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 64
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 65 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 66 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 67 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 68 | STATE : code ROUTINE : cc_voice_capability |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 69 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 70
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 71 PURPOSE : This function returns TRUE if the mobile has voice
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 72 cababilities (support for any speech codec).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 73
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 74 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 75
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 76 GLOBAL BOOL cc_voice_capability (void)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 77 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 78 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 79 TRACE_FUNCTION ("cc_voice_capability()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 80
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 81 return (FldGet (cc_data->mscap.chnMode, spchSupV1) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 82 FldGet (cc_data->mscap.chnMode, AHS) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 83 FldGet (cc_data->mscap.chnMode, AFS));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 84 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 85
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 86
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 87 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 88 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 89 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 90 | STATE : code ROUTINE : cc_bcs_compatible |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 91 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 92
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 93 PURPOSE : Compare of two bearer capabilities.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 94
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 95 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 96
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 97 GLOBAL BOOL cc_bcs_compatible (const T_M_CC_bearer_cap * bc1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 98 const T_M_CC_bearer_cap * bc2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 99 BOOL full)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 100 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 101 BOOL itc_chg = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 102
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 103 TRACE_FUNCTION ("cc_bcs_compatible()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 104
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 105 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 106 * Compare Octett 3, Coding Standard
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 107 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 108 if (bc1->code NEQ bc2->code)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 109 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 110
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 111 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 112 * Compare Transfer Mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 113 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 114 if (bc1->trans_mode NEQ bc2->trans_mode)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 115 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 116
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 117 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 118 * Compare Information Transfer Capability
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 119 * Note: The combination UDI <-> AUDIO is allowed
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 120 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 121 if (bc1->trans_cap NEQ bc2->trans_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 122 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 123 itc_chg = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 124
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 125 if (((bc1->trans_cap NEQ M_CC_ITC_DIGITAL_UNRESTRICTED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 126 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 127 (bc1->trans_cap NEQ M_CC_ITC_AUDIO))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 128 OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 129 ((bc2->trans_cap NEQ M_CC_ITC_DIGITAL_UNRESTRICTED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 130 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 131 (bc2->trans_cap NEQ M_CC_ITC_AUDIO)))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 132 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 133 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 134
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 135 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 136 * if speech is used the compare is successfull
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 137 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 138 if (bc1->trans_cap EQ M_CC_ITC_SPEECH OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 139 bc1->trans_cap EQ M_CC_ITC_AUXILIARY_SPEECH)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 140 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 141
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 142 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 143 * Octett 4, Check Existence
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 144 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 145 if (bc1->v_compress NEQ bc2->v_compress)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 146 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 147
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 148 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 149 * Compare Compression
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 150 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 151 if (bc1->compress NEQ bc2->compress)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 152 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 153
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 154 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 155 * Compare Duplex Mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 156 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 157 if (bc1->duplex NEQ bc2->duplex)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 158 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 159
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 160 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 161 * Compare Configuration
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 162 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 163 if (bc1->config NEQ bc2->config)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 164 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 165
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 166 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 167 if (bc1->v_nirr != bc2->v_nirr)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 168 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 169 if (bc1->v_nirr AND (bc1->nirr != bc2->nirr))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 170 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 171 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 172
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 173
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 174
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 175 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 176 * Compare Establishment
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 177 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 178 if (bc1->establish NEQ bc2->establish)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 179 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 180
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 181 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 182 * Octett 5, Check Existence
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 183 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 184 if (bc1->v_access_ident NEQ bc2->v_access_ident)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 185 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 186
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 187 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 188 * Compare Rate Adaption
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 189 * Note: Error if same ITC but different rate adaption
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 190 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 191 if (bc1->rate_adapt NEQ bc2->rate_adapt)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 192 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 193 if (itc_chg EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 194 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 195 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 196
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 197 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 198 * Compare Signalling Access Protocol
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 199 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 200 if (bc1->sig_access_prot NEQ bc2->sig_access_prot)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 201 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 202
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 203 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 204 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 205 * Octet 5a, Check Existence and contents
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 206 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 207 if (bc1->v_other_itc != bc2->v_other_itc)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 208 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 209 if (bc1->v_other_itc AND (bc1->other_itc != bc2->other_itc))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 210 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 211 if (bc1->v_other_ra != bc2->v_other_ra)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 212 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 213 if (bc1->v_other_ra AND (bc1->other_ra != bc2->other_ra))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 214 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 215 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 216
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 217 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 218 * Octett 6, Check Existence
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 219 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 220 if (bc1->v_l1_ident NEQ bc2->v_l1_ident)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 221 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 222
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 223 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 224 * Compare User Information Layer 1 Protocol
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 225 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 226 if (bc1->v_user_inf_l1_prot NEQ bc2->v_user_inf_l1_prot)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 227 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 228
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 229 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 230 * Compare Synchronous / Asynchronous
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 231 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 232 if (bc1->sync_async NEQ bc2->sync_async)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 233 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 234
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 235 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 236 * Octett 6a, Check Existence
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 237 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 238 if (bc1->v_num_stop NEQ bc2->v_num_stop)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 239 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 240
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 241 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 242 * Compare negotiation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 243 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 244 if (bc1->negotiate NEQ bc2->negotiate)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 245 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 246
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 247 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 248 * Compare User Rate
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 249 * Note: For Fax the user rate is unimportant
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 250 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 251 if (bc1->user_rate NEQ bc2->user_rate)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 252 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 253 if (bc1->trans_cap NEQ M_CC_ITC_FAX_GROUP_3)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 254 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 255 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 256
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 257 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 258 * Octett 6b, Check Existence
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 259 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 260 if (bc1->v_intermed_rate NEQ bc2->v_intermed_rate)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 261 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 262
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 263 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 264 * Compare Network Independent Clock TX
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 265 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 266 if (bc1->nic_tx NEQ bc2->nic_tx)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 267 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 268
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 269 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 270 * Compare Network Independent Clock RX
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 271 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 272 if (bc1->nic_rx NEQ bc2->nic_rx)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 273 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 274
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 275 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 276 * Octett 6c, Check Existence
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 277 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 278 if (bc1->v_conn_elem NEQ bc2->v_conn_elem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 279 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 280
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 281 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 282 * Compare Connection Element
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 283 * Note: The combination transparent and non-transparent
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 284 * is not allowed.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 285 * For transparent the structure must be UNSTRUCTED.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 286 * For non-transparent the structure must be DATA UNIT INTEGRITY.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 287 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 288 if (((bc1->conn_elem EQ M_CC_CE_TRANSPA) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 289 (bc2->conn_elem EQ M_CC_CE_RLP)) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 290 ((bc1->conn_elem EQ M_CC_CE_RLP) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 291 (bc2->conn_elem EQ M_CC_CE_TRANSPA)))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 292 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 293
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 294 if (bc1->v_structure AND bc1->v_conn_elem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 295 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 296 if (bc1->conn_elem EQ M_CC_CE_TRANSPA)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 297 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 298 if (bc1->structure NEQ M_CC_STRC_UNSTRUCTURED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 299 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 300 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 301 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 302 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 303 if (bc1->structure NEQ M_CC_STRC_SERV_DATA_INTEG)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 304 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 305 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 306 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 307
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 308 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 309 * Compare Modem Type
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 310 * Note: Error if no change in information
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 311 * Transfer Capability.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 312 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 313 if (bc1->modem_type NEQ bc2->modem_type)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 314 if (itc_chg EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 315 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 316
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 317 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 318 * Compare of all parameters ?
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 319 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 320 if (full EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 321 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 322
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 323 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 324 * Compare Number of Stop Bits
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 325 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 326 if (bc1->num_stop NEQ bc2->num_stop)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 327 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 328
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 329 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 330 * Compare Number of Data Bits
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 331 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 332 if (bc1->num_data NEQ bc2->num_data)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 333 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 334
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 335 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 336 * Compare Intermediate Rate
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 337 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 338 if (bc1->intermed_rate NEQ bc2->intermed_rate)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 339 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 340
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 341 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 342 * Compare Parity
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 343 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 344 if (bc1->parity NEQ bc2->parity)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 345 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 346
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 347 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 348 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 349 * Octet 6d, Compare Existence only
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 350 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 351 /*(subject to negotiation)*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 352 if (bc1->v_modem_type_2 != bc2->v_modem_type_2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 353 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 354 /*(subject to negotiation)*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 355 if (bc1->v_fnur != bc2->v_fnur)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 356 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 357
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 358
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 359 if(bc1->v_fnur)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 360 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 361 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 362 * Octet 6e, Compare Existence and contents
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 363 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 364 if (bc1->v_acc != bc2->v_acc)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 365 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 366 if (bc1->v_acc AND (bc1->acc != bc2->acc))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 367 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 368 if (bc1->v_mTch != bc2->v_mTch)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 369 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 370 if (bc1->v_mTch AND (bc1->mTch != bc2->mTch))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 371 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 372
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 373 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 374 * Theres a extra condition here with MO NT pref negotiated to T because
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 375 * according to 24.008 Octet 6e (UIMI+WAIUR) is not sent in T Bearer Cap
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 376 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 377 if(bc1->conn_elem != M_CC_CE_TRANSPA && bc2->conn_elem != M_CC_CE_TRANSPA)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 378 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 379 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 380 * Octet 6f, Compare Existence and contents
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 381 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 382 if (bc1->v_uimi != bc2->v_uimi)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 383 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 384 if (bc1->v_uimi AND (bc1->uimi != bc2->uimi))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 385 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 386 if (bc1->v_waiur != bc2->v_waiur)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 387 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 388 if (bc1->v_waiur AND (bc1->waiur != bc2->waiur))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 389 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 390 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 391
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 392
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 393
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 394 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 395 * Octet 6g, Compare Existence and contents
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 396 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 397 if (bc1->v_acc_ext_288 != bc2->v_acc_ext_288)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 398 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 399 if (bc1->v_acc_ext_288 AND (bc1->acc_ext_288 != bc2->acc_ext_288))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 400 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 401 if (bc1->v_acc_ext_320 != bc2->v_acc_ext_320)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 402 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 403 if (bc1->v_acc_ext_320 AND (bc1->acc_ext_320 != bc2->acc_ext_320))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 404 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 405 if (bc1->v_acc_ext_432 != bc2->v_acc_ext_432)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 406 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 407 if (bc1->v_acc_ext_432 AND (bc1->acc_ext_432 != bc2->acc_ext_432))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 408 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 409
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 410 if (bc1->v_ch_cod_asym != bc2->v_ch_cod_asym)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 411 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 412 if (bc1->v_ch_cod_asym AND (bc1->ch_cod_asym != bc2->ch_cod_asym))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 413 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 414 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 415
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 416 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 417
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 418 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 419 * Octett 7, Compare Existence
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 420 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 421 if (bc1->v_l2_ident NEQ bc2->v_l2_ident)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 422 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 423
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 424 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 425 * Compare User Information Layer 2 Protocol
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 426 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 427 if (bc1->v_l2_ident AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 428 (bc1->user_inf_l2_prot NEQ bc2->user_inf_l2_prot))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 429 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 430
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 431 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 432 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 433
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 434
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 435
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 436 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 437 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 438 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 439 | STATE : code ROUTINE : cc_build_bc |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 440 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 441
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 442 PURPOSE : Define bearer capability depending on the bearer capability
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 443 parameters.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 444
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 445 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 446 GLOBAL void cc_build_bc (T_M_CC_bearer_cap * bearer_cap, /* out */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 447 UBYTE * serv, /* out */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 448 const T_MNCC_bcpara * bc_params) /* in*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 449 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 450
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 451 TRACE_FUNCTION ("cc_build_bc()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 452
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 453 cc_csf_ms_cap ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 454
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 455 switch (bc_params->bearer_serv)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 456 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 457 case MNCC_BEARER_SERV_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 458 case MNCC_BEARER_SERV_AUX_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 459 case MNCC_BEARER_SERV_SPEECH_CTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 460 case MNCC_BEARER_SERV_AUX_SPEECH_CTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 461 * serv = MNCC_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 462 memset (bearer_cap, 0, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 463 cc_set_trans_cap (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 464
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 465 cc_set_radio_channel_requirement (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 466 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 467
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 468 case MNCC_BEARER_SERV_FAX:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 469 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 470 * Only transparent is supported
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 471 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 472 * serv = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 473 memset (bearer_cap, 0, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 474 cc_set_trans_cap (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 475 cc_set_radio_channel_requirement (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 476 cc_set_data_default_parameter (bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 477 cc_set_conn_elem (bearer_cap, MNCC_CONN_ELEM_TRANS, bc_params->flow_control);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 478 cc_set_user_rate (bearer_cap, bc_params->rate, M_CC_MT_NONE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 479 cc_set_sync_async (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 480 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 481
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 482 case MNCC_BEARER_SERV_PACKET_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 483 case MNCC_BEARER_SERV_SYNC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 484 * serv = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 485 memset (bearer_cap, 0, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 486 cc_set_trans_cap (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 487 cc_set_radio_channel_requirement (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 488 cc_set_data_default_parameter (bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 489 cc_set_conn_elem (bearer_cap, bc_params->conn_elem, bc_params->flow_control);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 490 cc_set_user_rate (bearer_cap, bc_params->rate, bc_params->modem_type);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 491 cc_set_sync_async (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 492 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 493
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 494 case MNCC_BEARER_SERV_PAD_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 495 case MNCC_BEARER_SERV_ASYNC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 496 * serv = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 497 memset (bearer_cap, 0, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 498 cc_set_trans_cap (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 499 cc_set_radio_channel_requirement (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 500 cc_set_data_default_parameter (bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 501 cc_set_conn_elem (bearer_cap, bc_params->conn_elem, bc_params->flow_control);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 502 cc_set_user_rate (bearer_cap, bc_params->rate, bc_params->modem_type);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 503 cc_set_sync_async (bearer_cap, bc_params);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 504 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 505
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 506 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 507 TRACE_ERROR ("Unexpected bearer_serv");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 508 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 509 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 510 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 511
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 512
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 513
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 514 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 515 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 516 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 517 | STATE : code ROUTINE : cc_set_data_default_parameter |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 518 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 519
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 520 PURPOSE : Set bearer capability parameters for data.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 521
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 522 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 523
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 524 GLOBAL void cc_set_data_default_parameter (T_M_CC_bearer_cap * bearer_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 525 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 526 TRACE_FUNCTION ("cc_set_data_default_parameter()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 527
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 528 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 529 * Octet 3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 530 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 531 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 532 bearer_cap->v_code = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 533 bearer_cap->code = M_CC_CSTD_GSM;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 534 bearer_cap->v_trans_mode = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 535 bearer_cap->trans_mode = M_CC_TM_CIRCUIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 536 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 537
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 538 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 539 * Octet 4
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 540 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 541 bearer_cap->v_compress = TRUE; /* now spare, used in previous releases */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 542 bearer_cap->compress = M_CC_COMP_NO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 543 /* structure -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 544 bearer_cap->v_duplex = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 545 bearer_cap->duplex = M_CC_DUPLEX_FULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 546
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 547 bearer_cap->v_config = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 548 bearer_cap->config = M_CC_CONF_POINT_TO_POINT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 549 /* nirr -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 550 bearer_cap->v_establish= TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 551 bearer_cap->establish = M_CC_ESTAB_DEMAND;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 552
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 553 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 554 * Octet 5
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 555 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 556 bearer_cap->v_access_ident = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 557 bearer_cap->access_ident = M_CC_AI_OCT_ID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 558
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 559 bearer_cap->v_sig_access_prot = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 560 bearer_cap->sig_access_prot = M_CC_SIAP_I440;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 561
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 562 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 563 * Octet 6
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 564 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 565 bearer_cap->v_l1_ident = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 566 bearer_cap->l1_ident = M_CC_L1_OCT_ID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 567
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 568 bearer_cap->v_user_inf_l1_prot = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 569 bearer_cap->user_inf_l1_prot = M_CC_L1_DEFAULT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 570 /* sync_async -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 571 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 572 * Octet 6a
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 573 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 574 /* num_stop -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 575 bearer_cap->v_negotiate = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 576 bearer_cap->negotiate = M_CC_NEGOTIATE_NO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 577 /* num_data -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 578 /* user_rate -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 579 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 580 * Octet 6b
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 581 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 582 /* intermed_rate -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 583 bearer_cap->v_nic_tx = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 584 bearer_cap->nic_tx = M_CC_NIC_TX_NO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 585 bearer_cap->v_nic_rx = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 586 bearer_cap->nic_rx = M_CC_NIC_RX_NO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 587 /* parity -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 588 /* conn_elem -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 589 /* modem_type -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 590 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 591 * Octet 7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 592 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 593 /* l2_ident -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 594 /* user_inf_l2_prot -> by other function */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 595 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 596
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 597 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 598 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 599 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 600 | STATE : code ROUTINE : cc_set_radio_channel_requirement |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 601 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 602
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 603 PURPOSE : Set bearer capability parameters for data.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 604
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 605 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 606 GLOBAL void cc_set_radio_channel_requirement (T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 607 const T_MNCC_bcpara * bcpara)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 608 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 609 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 610 UBYTE index, prio;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 611 const UBYTE codec_prio[5] = {M_CC_SPEECH_VERS_AMR_FR, M_CC_SPEECH_VERS_AMR_HR, M_CC_SPEECH_VERS_EFR,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 612 M_CC_SPEECH_VERS_FR, M_CC_SPEECH_VERS_HR};
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 613 UBYTE codec_val[5] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 614
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 615 TRACE_FUNCTION ("cc_set_radio_channel_requirement()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 616
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 617 switch (bcpara->bearer_serv)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 618 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 619 case MNCC_BEARER_SERV_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 620 case MNCC_BEARER_SERV_AUX_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 621 case MNCC_BEARER_SERV_SPEECH_CTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 622 case MNCC_BEARER_SERV_AUX_SPEECH_CTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 623 bearer_cap->v_rad_chan_req = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 624 bearer_cap->v_code = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 625 bearer_cap->code = M_CC_CSTD_GSM;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 626 bearer_cap->v_trans_mode = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 627 bearer_cap->trans_mode = M_CC_TM_CIRCUIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 628 index = (UBYTE)FldGet(cc_data->mscap.chnMode, HR_EFRSup);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 629
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 630 TRACE_EVENT_P1 ("index = %d", index);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 631 if(bcpara->rad_chan_req NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 632 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 633 TRACE_EVENT_P1 ("bearer_cap->rad_chan_req = %d", bearer_cap->rad_chan_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 634 bearer_cap->rad_chan_req = bcpara->rad_chan_req ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 635 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 636 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 637 bearer_cap->rad_chan_req = bc_prio_0 [index];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 638 index = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 639 for (prio = 0; prio < MAX_SPEECH_CODECS; prio++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 640 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 641 switch (codec_prio[prio])
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 642 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 643 case M_CC_SPEECH_VERS_FR: /* Full rate speech version 1 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 644 /* Always */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 645 codec_val[index] = M_CC_SPEECH_VERS_FR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 646 index++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 647 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 648 case M_CC_SPEECH_VERS_HR: /* Half rate speech version 1 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 649 if (FldGet (cc_data->mscap.chnMode, hrSup) NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 650 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 651 codec_val[index] = M_CC_SPEECH_VERS_HR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 652 index++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 653 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 654 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 655 case M_CC_SPEECH_VERS_EFR: /* Full rate speech version 2 - EFR */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 656 if (FldGet (cc_data->mscap.chnMode, EFRSupV2) NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 657 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 658 codec_val[index] = M_CC_SPEECH_VERS_EFR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 659 index++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 660 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 661 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 662 case M_CC_SPEECH_VERS_AMR_HR: /* Half rate speech version 3 - AMR */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 663 if ((FldGet (cc_data->mscap.chnMode, AHS) NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 664 #if (CHIPSET != 15)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 665 AND !(bcpara->bearer_serv EQ MNCC_BEARER_SERV_SPEECH_CTM OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 666 bcpara->bearer_serv EQ MNCC_BEARER_SERV_AUX_SPEECH_CTM)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 667 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 668 ) /* TTY over AMR is currently not supported by DSP, except Locosto Chipset 15*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 669 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 670 codec_val[index] = M_CC_SPEECH_VERS_AMR_HR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 671 index++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 672 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 673
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 674 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 675 case M_CC_SPEECH_VERS_AMR_FR: /* Full rate speech version 3 - AMR */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 676 if ((FldGet (cc_data->mscap.chnMode, AFS) NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 677 #if (CHIPSET != 15)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 678 AND !(bcpara->bearer_serv EQ MNCC_BEARER_SERV_SPEECH_CTM OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 679 bcpara->bearer_serv EQ MNCC_BEARER_SERV_AUX_SPEECH_CTM)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 680 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 681 ) /* TTY over AMR is currently not supported by the DSP, except Locosto Chipset 15*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 682 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 683 codec_val[index] = M_CC_SPEECH_VERS_AMR_FR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 684 index++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 685 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 686 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 687 } /* switch (codec_prio[prio])*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 688 } /* for */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 689
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 690 if (bcpara->bearer_serv EQ MNCC_BEARER_SERV_SPEECH_CTM OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 691 bcpara->bearer_serv EQ MNCC_BEARER_SERV_AUX_SPEECH_CTM)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 692 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 693 bearer_cap->v_ctm = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 694 bearer_cap->ctm = M_CC_CTM_YES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 695 bearer_cap->v_coding_bc3x1 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 696 bearer_cap->coding_bc3x1 = M_CC_CODING_BC3X_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 697 bearer_cap->v_speech_vers1 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 698
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 699 if (codec_val[0] NEQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 700 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 701 bearer_cap->speech_vers1 = codec_val[0];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 702 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 703 else switch (bearer_cap->rad_chan_req)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 704 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 705 case M_CC_RCR_HALF_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 706 bearer_cap->speech_vers1 = M_CC_SPEECH_VERS_HR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 707 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 708 case M_CC_RCR_FULL_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 709 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 710 bearer_cap->speech_vers1 = M_CC_SPEECH_VERS_FR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 711 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 712 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 713 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 714 else if (codec_val[0] NEQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 715 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 716 bearer_cap->v_ctm = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 717 bearer_cap->ctm = M_CC_CTM_NO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 718 bearer_cap->v_coding_bc3x1 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 719 bearer_cap->coding_bc3x1 = M_CC_CODING_BC3X_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 720 bearer_cap->v_speech_vers1 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 721 bearer_cap->speech_vers1 = codec_val[0];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 722 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 723 if (codec_val[1] NEQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 724 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 725 bearer_cap->v_speech_vers2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 726 bearer_cap->speech_vers2 = codec_val[1];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 727 bearer_cap->v_coding_bc3x2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 728 bearer_cap->coding_bc3x2 = M_CC_CODING_BC3X_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 729 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 730 if (codec_val[2] NEQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 731 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 732 bearer_cap->v_speech_vers3 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 733 bearer_cap->speech_vers3 = codec_val[2];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 734 bearer_cap->v_coding_bc3x3 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 735 bearer_cap->coding_bc3x3 = M_CC_CODING_BC3X_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 736 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 737 if (codec_val[3] NEQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 738 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 739 bearer_cap->v_speech_vers4 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 740 bearer_cap->speech_vers4 = codec_val[3];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 741 bearer_cap->v_coding_bc3x4 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 742 bearer_cap->coding_bc3x4 = M_CC_CODING_BC3X_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 743 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 744 if (codec_val[4] NEQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 745 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 746 bearer_cap->v_speech_vers5 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 747 bearer_cap->speech_vers5 = codec_val[4];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 748 bearer_cap->v_coding_bc3x5 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 749 bearer_cap->coding_bc3x5 = M_CC_CODING_BC3X_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 750 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 751 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 752 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 753 bearer_cap->v_rad_chan_req = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 754 bearer_cap->v_code = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 755 bearer_cap->code = M_CC_CSTD_GSM;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 756 bearer_cap->v_trans_mode = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 757 bearer_cap->trans_mode = M_CC_TM_CIRCUIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 758
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 759 if (FldGet (cc_data->mscap.datCap2, DHRSup) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 760 bcpara->bearer_serv NEQ MNCC_BEARER_SERV_FAX) /* TA 29.2.3.7 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 761 /* Halfrate support */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 762 bearer_cap->rad_chan_req = M_CC_RCR_FULL_PREF;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 763 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 764 bearer_cap->rad_chan_req = M_CC_RCR_FULL_ONLY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 765 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 766 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 767 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 768
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 769
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 770 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 771 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 772 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 773 | STATE : code ROUTINE : cc_set_trans_cap |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 774 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 775
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 776 PURPOSE : Set bearer capability parameters for data.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 777
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 778 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 779
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 780 GLOBAL void cc_set_trans_cap (T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 781 const T_MNCC_bcpara * bcpara)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 782 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 783 TRACE_FUNCTION ("cc_set_trans_cap()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 784
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 785 bearer_cap->v_trans_cap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 786
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 787 switch (bcpara->bearer_serv)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 788 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 789 case MNCC_BEARER_SERV_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 790 case MNCC_BEARER_SERV_SPEECH_CTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 791 bearer_cap->trans_cap = M_CC_ITC_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 792 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 793
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 794 case MNCC_BEARER_SERV_AUX_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 795 case MNCC_BEARER_SERV_AUX_SPEECH_CTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 796 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 797 * Alternate Line Service
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 798 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 799 bearer_cap->trans_cap = M_CC_ITC_AUXILIARY_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 800 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 801
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 802 case MNCC_BEARER_SERV_FAX:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 803 bearer_cap->trans_cap = M_CC_ITC_FAX_GROUP_3;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 804 bearer_cap->rate_adapt = M_CC_RA_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 805 bearer_cap->v_rate_adapt = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 806 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 807
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 808 case MNCC_BEARER_SERV_ASYNC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 809 case MNCC_BEARER_SERV_SYNC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 810 case MNCC_BEARER_SERV_PAD_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 811 case MNCC_BEARER_SERV_PACKET_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 812 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 813 /* MT - Modem type digital */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 814 if (bcpara->modem_type EQ M_CC_MT_NONE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 815 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 816 /* ITC - Information Transfer Capability */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 817 if (bcpara->transfer_cap == MNCC_ITC_UDI)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 818 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 819 bearer_cap->trans_cap = M_CC_ITC_DIGITAL_UNRESTRICTED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 820 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 821 else if (bcpara->transfer_cap == MNCC_ITC_RDI)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 822 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 823 bearer_cap->trans_cap = M_CC_ITC_OTHER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 824 bearer_cap->other_itc = M_CC_ITC_DIGITAL_RESTRICTED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 825 bearer_cap->v_other_itc = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 826 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 827 /* RA - Rate adaption */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 828 if (bcpara->rate_adaption == MNCC_RATE_ADAPT_V110)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 829 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 830 bearer_cap->rate_adapt = M_CC_RA_V110;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 831 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 832 else if (bcpara->rate_adaption == MNCC_RATE_ADAPT_V120)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 833 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 834 bearer_cap->rate_adapt = M_CC_RA_OTHER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 835 bearer_cap->other_ra = M_CC_RA_V120;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 836 bearer_cap->v_other_itc = TRUE; /* set for CCD encoding of Octet 5a */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 837 bearer_cap->v_other_ra = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 838 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 839 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 840 /* MT - Modem type audio */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 841 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 842 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 843 bearer_cap->trans_cap = M_CC_ITC_AUDIO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 844 if (bcpara->rate_adaption == MNCC_RATE_ADAPT_H223_H245)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 845 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 846 bearer_cap->rate_adapt = M_CC_RA_OTHER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 847 bearer_cap->v_other_itc = TRUE; /* set for CCD encoding of Octet 5a */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 848 bearer_cap->v_other_ra = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 849 bearer_cap->other_ra = M_CC_RA_H223_H245;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 850 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 851 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 852 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 853 bearer_cap->rate_adapt = M_CC_RA_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 854 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 855 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 856 bearer_cap->v_rate_adapt = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 857 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 858 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 859 if (bcpara->modem_type EQ M_CC_MT_NONE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 860 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 861 bearer_cap->trans_cap = M_CC_ITC_DIGITAL_UNRESTRICTED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 862 bearer_cap->rate_adapt = M_CC_RA_V110;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 863 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 864 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 865 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 866 bearer_cap->trans_cap = M_CC_ITC_AUDIO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 867 bearer_cap->rate_adapt = M_CC_RA_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 868 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 869 bearer_cap->v_rate_adapt = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 870 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 871 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 872
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 873 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 874 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 875
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 876
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 877 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 878 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 879 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 880 | STATE : code ROUTINE : cc_set_conn_elem |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 881 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 882
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 883 PURPOSE : Set bearer capability parameters according to connection
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 884 element.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 885
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 886 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 887
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 888 GLOBAL void cc_set_conn_elem (T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 889 UBYTE conn_elem,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 890 UBYTE flow_control)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 891 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 892 TRACE_FUNCTION ("cc_set_conn_elem()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 893
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 894 bearer_cap->v_structure = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 895 bearer_cap->v_conn_elem = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 896 switch (conn_elem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 897 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 898 case MNCC_CONN_ELEM_TRANS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 899 bearer_cap->conn_elem = M_CC_CE_TRANSPA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 900 bearer_cap->structure = M_CC_STRC_UNSTRUCTURED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 901 flow_control = MNCC_OUTBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 902 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 903 case MNCC_CONN_ELEM_NON_TRANS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 904 bearer_cap->conn_elem = M_CC_CE_RLP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 905 bearer_cap->structure = M_CC_STRC_SERV_DATA_INTEG;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 906 flow_control = MNCC_OUTBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 907 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 908 case MNCC_CONN_ELEM_TRANS_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 909 bearer_cap->conn_elem = M_CC_CE_TRANSPA_PREF;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 910 bearer_cap->structure = M_CC_STRC_SERV_DATA_INTEG;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 911 flow_control = MNCC_OUTBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 912 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 913 case MNCC_CONN_ELEM_NON_TRANS_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 914 bearer_cap->conn_elem = M_CC_CE_RLP_PREF;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 915 bearer_cap->structure = M_CC_STRC_SERV_DATA_INTEG;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 916 flow_control = MNCC_OUTBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 917 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 918 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 919 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 920 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 921 switch (flow_control)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 922 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 923 case MNCC_INBAND_FLOW_CONTROL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 924 case MNCC_NO_FLOW_CONTROL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 925 bearer_cap->v_l2_ident = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 926 bearer_cap->l2_ident = M_CC_L2_OCT_ID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 927 bearer_cap->v_user_inf_l2_prot = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 928 bearer_cap->user_inf_l2_prot = flow_control;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 929 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 930 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 931 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 932 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 933 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 934
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 935 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 936 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 937 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 938 | STATE : code ROUTINE : cc_set_sync_async |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 939 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 940
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 941 PURPOSE : Set bearer capability parameters according to synchronous
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 942 flag.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 943
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 944 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 945
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 946 GLOBAL void cc_set_sync_async (T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 947 const T_MNCC_bcpara * bc_para)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 948 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 949 TRACE_FUNCTION ("cc_set_sync_async()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 950
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 951 bearer_cap->v_sync_async = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 952 bearer_cap->v_num_stop = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 953 bearer_cap->v_num_data = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 954 bearer_cap->v_parity = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 955
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 956 switch (bc_para->bearer_serv)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 957 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 958 case MNCC_BEARER_SERV_SYNC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 959 case MNCC_BEARER_SERV_PACKET_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 960 case MNCC_BEARER_SERV_FAX:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 961 bearer_cap->sync_async = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 962 bearer_cap->num_stop = M_CC_NSTOP_1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 963 bearer_cap->num_data = M_CC_NDATA_8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 964 bearer_cap->parity = bc_para->parity;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 965 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 966 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 967 bearer_cap->sync_async = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 968 bearer_cap->num_stop = bc_para->stop_bits;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 969 bearer_cap->num_data = bc_para->data_bits;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 970 bearer_cap->parity = bc_para->parity;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 971 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 972 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 973 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 974
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 975 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 976 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 977 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 978 | STATE : code ROUTINE : cc_set_user_rate |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 979 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 980
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 981 PURPOSE : Set bearer capability parameters according to user rate.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 982
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 983 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 984
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 985
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 986 GLOBAL void cc_set_user_rate (T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 987 UBYTE rate,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 988 UBYTE modem_type)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 989 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 990 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 991 TRACE_FUNCTION ("cc_set_user_rate()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 992
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 993 bearer_cap->v_user_rate = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 994 bearer_cap->v_nirr = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 995 bearer_cap->nirr = M_CC_NIRR_NO_MEANING;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 996
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 997 bearer_cap->v_intermed_rate = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 998 bearer_cap->v_modem_type = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 999
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1000 switch( modem_type )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1001 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1002 case MNCC_MT_V32_BIS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1003 bearer_cap->modem_type = M_CC_MT_V32;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1004 bearer_cap->v_modem_type_2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1005 bearer_cap->modem_type_2 = M_CC_OTHER_MODEM_TYPE_V32BIS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1006 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1007
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1008 case MNCC_MT_V34:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1009 bearer_cap->modem_type = M_CC_MT_V32;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1010 bearer_cap->v_modem_type_2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1011 bearer_cap->modem_type_2 = M_CC_OTHER_MODEM_TYPE_V34;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1012 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1013
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1014 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1015 bearer_cap->modem_type = modem_type;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1016 if( rate EQ MNCC_UR_14_4_KBIT )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1017 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1018 bearer_cap->v_modem_type_2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1019 bearer_cap->modem_type_2 = M_CC_OTHER_MODEM_TYPE_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1020 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1021 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1022
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1023 switch (rate)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1024 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1025 case MNCC_UR_0_3_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1026 case MNCC_UR_1_2_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1027 case MNCC_UR_2_4_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1028 case MNCC_UR_4_8_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1029 case MNCC_UR_1_2_KBIT_V23:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1030 bearer_cap->user_rate = rate;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1031 if (bearer_cap->conn_elem EQ M_CC_CE_RLP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1032 bearer_cap->intermed_rate = M_CC_IR_16_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1033 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1034 bearer_cap->intermed_rate = M_CC_IR_8_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1035
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1036 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1037 * PZ removed because R&S does not support 6 kbit channels
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1038 if (bearer_cap->conn_elem EQ M_CC_CE_RLP AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1039 bearer_cap->rad_chan_req EQ RCR_FULL_ONLY)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1040 bearer_cap->nirr = M_CC_NIRR_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1041 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1042 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1043 case MNCC_UR_14_4_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1044 bearer_cap->user_rate = MNCC_UR_9_6_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1045 bearer_cap->intermed_rate = M_CC_IR_16_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1046 bearer_cap->v_fnur = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1047 bearer_cap->fnur = M_CC_FNUR_14400;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1048 bearer_cap->v_mTch = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1049 bearer_cap->mTch = M_CC_MAX_TCH_1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1050
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1051 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1052 * These parameters are only used for NT data.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1053 * Otherwise they are optional (i.e. omitted).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1054 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1055 if (bearer_cap->conn_elem == M_CC_CE_RLP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1056 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1057 bearer_cap->v_uimi = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1058 bearer_cap->uimi = M_CC_UIMI_NOT_ALLOWED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1059 bearer_cap->v_waiur = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1060 bearer_cap->waiur = M_CC_WAIUR_14400;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1061 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1062
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1063 bearer_cap->v_acc = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1064 bearer_cap->acc = M_CC_ACC_96;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1065
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1066 if (FldGet (cc_data->mscap.datCap2, DHRSup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1067 bearer_cap->acc += M_CC_ACC_48;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1068 if (FldGet (cc_data->mscap.datCap1, Dr14_4Sup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1069 bearer_cap->acc += M_CC_ACC_144;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1070 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1071 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1072 bearer_cap->user_rate = rate;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1073 bearer_cap->intermed_rate = M_CC_IR_16_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1074 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1075 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1076 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1077
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1078 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1079 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1080 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1081 | STATE : code ROUTINE : cc_build_call_confirm |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1082 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1083
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1084 PURPOSE : Filling of the C-Structure for call confirm message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1085
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1086 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1087
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1088 GLOBAL void cc_build_call_confirm ( T_U_CALL_CONF * call_cnf,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1089 USHORT cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1090 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1091 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1092 TRACE_FUNCTION ("cc_build_call_confirm()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1093
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1094 call_cnf->msg_type = U_CALL_CONF;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1095
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1096 if (cc_data->negotiation)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1097 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1098 if (cc_data->neg_ri EQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1099 call_cnf->v_repeat = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1100 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1101 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1102 call_cnf->v_repeat = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1103 call_cnf->repeat = cc_data->neg_ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1104 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1105
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1106 if (cc_data->neg_serv1 EQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1107 call_cnf->v_bearer_cap = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1108 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1109 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1110 call_cnf->v_bearer_cap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1111 call_cnf->bearer_cap = cc_data->neg_bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1112 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1113
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1114 if (cc_data->neg_serv2 EQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1115 call_cnf->v_bearer_cap_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1116 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1117 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1118 call_cnf->v_bearer_cap_2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1119 memcpy (&call_cnf->bearer_cap_2, &cc_data->neg_bc2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1120 sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1121 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1122 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1123 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1124 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1125 call_cnf->v_repeat = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1126 call_cnf->v_bearer_cap = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1127 call_cnf->v_bearer_cap_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1128 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1129 if (IS_CAUSE_INVALID(cause))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1130 call_cnf->v_cc_cause = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1131 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1132 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1133 call_cnf->v_cc_cause = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1134 cc_encode_cause (&call_cnf->cc_cause, cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1135 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1136
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1137 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1138 * GSM 24.008 has no clear advice when to include the CC capabilities,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1139 * neither in clause 5.2.2.3 nor in clause 9.3.2, but it is assumed that
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1140 * it has to be included if at least one capability is present.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1141 * This means, with R99 and above always.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1142 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1143 call_cnf->v_call_ctrl_cap = (cc_data->call_ctrl_cap.dtmf NEQ 0) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1144 (cc_data->call_ctrl_cap.pcp NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1145 if (call_cnf->v_call_ctrl_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1146 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1147 call_cnf->call_ctrl_cap = cc_data->call_ctrl_cap; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1148 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1149 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1150
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1151
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1152 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1153 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1154 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1155 | STATE : code ROUTINE : cc_build_cc_est_confirm |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1156 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1157
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1158 PURPOSE : Filling of the C-Structure for CC EST. CONFIRMED message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1159
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1160 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1161
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1162 GLOBAL void cc_build_cc_est_confirm (T_U_CC_EST_CONF * cc_est_conf,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1163 USHORT cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1164 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1165 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1166 TRACE_FUNCTION ("cc_build_cc_est_confirm()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1167
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1168 cc_est_conf->msg_type = U_CC_EST_CONF;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1169 if (cc_data->neg_ri EQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1170 cc_est_conf->v_repeat = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1171 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1172 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1173 cc_est_conf->v_repeat = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1174 cc_est_conf->repeat = cc_data->neg_ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1175 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1176
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1177 cc_est_conf->v_bearer_cap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1178 cc_est_conf->bearer_cap = cc_data->neg_bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1179
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1180 if (cc_data->neg_serv2 EQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1181 cc_est_conf->v_bearer_cap_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1182 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1183 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1184 cc_est_conf->v_bearer_cap_2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1185 memcpy (&cc_est_conf->bearer_cap_2, &cc_data->neg_bc2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1186 sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1187 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1188
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1189 if (IS_CAUSE_INVALID(cause))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1190 cc_est_conf->v_cc_cause = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1191 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1192 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1193 cc_est_conf->v_cc_cause = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1194 cc_encode_cause (&cc_est_conf->cc_cause, cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1195 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1196 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1197
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1198
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1199 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1200 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1201 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1202 | STATE : code ROUTINE : cc_build_congestion_control|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1203 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1204
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1205 PURPOSE : Filling of the C-Structure for congestion control message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1206
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1207 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1208
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1209 GLOBAL void cc_build_congestion_control (const T_MNCC_USER_REQ * user,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1210 T_B_CONGEST_CTRL * cong_ctrl)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1211 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1212 TRACE_FUNCTION ("cc_build_congestion_control()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1213
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1214 cong_ctrl->msg_type = B_CONGEST_CTRL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1215 cong_ctrl->congest_lev = user->congest_lev;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1216 cong_ctrl->v_cc_cause = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1217 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1218
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1219 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1220 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1221 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1222 | STATE : code ROUTINE : cc_build_disconnect |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1223 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1224
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1225 PURPOSE : Filling of the C-Structure for disconnect message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1226
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1227 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1228 GLOBAL void cc_build_disconnect (T_U_DISCONNECT * disconnect,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1229 USHORT cause,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1230 const T_NAS_fac_inf * fac_inf,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1231 UBYTE ss_ver)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1232 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1233
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1234 TRACE_FUNCTION ("cc_build_disconnect()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1235
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1236 disconnect->msg_type = U_DISCONNECT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1237 cc_encode_cause (&disconnect->cc_cause, cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1238
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1239 disconnect->v_facility = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1240 disconnect->v_user_user = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1241 disconnect->v_ss_version = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1242
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1243 if ((fac_inf NEQ NULL) AND (fac_inf->l_fac NEQ 0))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1244 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1245 /* Send facility IE */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1246 disconnect->v_facility = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1247 disconnect->facility.c_fac = fac_inf->l_fac >> 3;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1248 memcpy (disconnect->facility.fac,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1249 &fac_inf->fac[fac_inf->o_fac >> 3],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1250 disconnect->facility.c_fac);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1251
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1252 if (ss_ver NEQ MNCC_SS_VER_NOT_PRES)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1253 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1254 disconnect->v_ss_version = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1255 disconnect->ss_version.c_ver = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1256 disconnect->ss_version.ver[0] = ss_ver;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1257 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1258 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1259
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1260 /* no security check for validity of cause; cause is mandatory in DISCONNECT */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1261 cc_encode_cause (&disconnect->cc_cause, cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1262 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1263
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1264 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1265 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1266 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1267 | STATE : code ROUTINE : cc_build_emergency_setup |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1268 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1269
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1270 PURPOSE : Filling of the C-Structure for emergency setup message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1271
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1272 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1273
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1274 GLOBAL void cc_build_emergency_setup (T_U_EMERGE_SETUP * emergency_setup)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1275 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1276 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1277 TRACE_FUNCTION ("cc_build_emergency_setup()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1278
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1279 emergency_setup->msg_type = U_EMERGE_SETUP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1280 /*emergency_setup->v_bearer_cap = FALSE;*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1281 emergency_setup->v_bearer_cap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1282 emergency_setup->bearer_cap = cc_data->bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1283 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1284
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1285 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1286 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1287 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1288 | STATE : code ROUTINE : cc_build_facility |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1289 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1290
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1291 PURPOSE : Filling of the C-Structure for facility message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1292
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1293 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1294
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1295 GLOBAL void cc_build_facility (const T_MNCC_FACILITY_REQ * facility,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1296 T_U_FACILITY * facility_msg)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1297 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1298 UBYTE length;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1299
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1300 TRACE_FUNCTION ("cc_build_facility()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1301
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1302 length = facility->fac_inf.l_fac>>3;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1303
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1304 if (length > 251)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1305 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1306
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1307 facility_msg->msg_type = U_FACILITY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1308 facility_msg->facility.c_fac = length;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1309 memcpy (facility_msg->facility.fac,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1310 &facility->fac_inf.fac[facility->fac_inf.o_fac>>3], length);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1311
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1312 if (facility->ss_version EQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1313 facility_msg->v_ss_version = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1314 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1315 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1316 facility_msg->v_ss_version = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1317 facility_msg->ss_version.c_ver = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1318 facility_msg->ss_version.ver[0] = facility->ss_version;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1319 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1320 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1321
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1322
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1323 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1324 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1325 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1326 | STATE : code ROUTINE : cc_build_mncc_alert_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1327 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1328
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1329 PURPOSE : Filling of the C-Structure for MNCC_ALERT_IND.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1330
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1331 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1332
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1333 GLOBAL void cc_build_mncc_alert_ind ( const T_D_ALERT * alert,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1334 T_MNCC_ALERT_IND * alert_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1335 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1336 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1337 TRACE_FUNCTION ("cc_build_mncc_alert_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1338
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1339 alert_ind->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1340
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1341 if (alert->v_progress)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1342 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1343 alert_ind->progress_desc = alert->progress.progress_desc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1344 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1345 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1346 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1347 alert_ind->progress_desc = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1348 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1349 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1350
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1351 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1352 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1353 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1354 | STATE : code ROUTINE : cc_build_mncc_proceed_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1355 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1356
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1357 PURPOSE : Filling of the C-Structure for MNCC_CALL_PROCEED_IND.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1358
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1359 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1360
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1361 GLOBAL void cc_build_mncc_proceed_ind (const T_D_CALL_PROCEED * proceed,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1362 T_MNCC_CALL_PROCEED_IND * proceed_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1363 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1364 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1365 TRACE_FUNCTION ("cc_build_mncc_proceed_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1366
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1367 proceed_ind->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1368 proceed_ind->ri = cc_data->neg_ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1369 memcpy (&proceed_ind->bcpara, &cc_data->neg_bcpara1, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1370 memcpy (&proceed_ind->bcpara2, &cc_data->neg_bcpara2, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1371
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1372 #if defined (WIN32)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1373 TRACE_EVENT_P1 ("Rate = %d", cc_data->neg_bcpara1.rate);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1374 TRACE_EVENT_P1 ("Bearer Serv = %d", cc_data->neg_bcpara1.bearer_serv);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1375 TRACE_EVENT_P1 ("Conn Elem = %d", cc_data->neg_bcpara1.conn_elem);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1376 TRACE_EVENT_P1 ("Stop Bits = %d", cc_data->neg_bcpara1.stop_bits);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1377 TRACE_EVENT_P1 ("Data Bits = %d", cc_data->neg_bcpara1.data_bits);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1378 TRACE_EVENT_P1 ("Parity = %d", cc_data->neg_bcpara1.parity);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1379 TRACE_EVENT_P1 ("Flow Control = %d", cc_data->neg_bcpara1.flow_control);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1380 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1381
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1382 if (proceed->v_progress)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1383 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1384 proceed_ind->progress_desc = proceed->progress.progress_desc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1385 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1386 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1387 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1388 proceed_ind->progress_desc = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1389 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1390 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1391
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1392
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1393 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1394 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1395 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1396 | STATE : code ROUTINE : cc_build_mncc_progress_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1397 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1398
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1399 PURPOSE : Filling of the C-Structure for MNCC_PROGRESS_IND.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1400
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1401 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1402
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1403 GLOBAL void cc_build_mncc_progress_ind (const T_D_PROGRESS * progress,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1404 T_MNCC_PROGRESS_IND * progress_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1405 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1406 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1407 TRACE_FUNCTION ("cc_build_mncc_progress_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1408
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1409 progress_ind->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1410 progress_ind->progress_desc = progress->progress.progress_desc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1411 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1412
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1413 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1414 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1415 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1416 | STATE : code ROUTINE : cc_build_mncc_setup_cnf |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1417 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1418
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1419 PURPOSE : Filling of the C-Structure for MNCC_SETUP_CNF.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1420
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1421 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1422
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1423 GLOBAL void cc_build_mncc_setup_cnf (const T_D_CONNECT * connect,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1424 T_MNCC_SETUP_CNF * setup_cnf)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1425 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1426 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1427 TRACE_FUNCTION ("cc_build_mncc_setup_cnf()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1428
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1429 setup_cnf->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1430 setup_cnf->cause = MNCC_CAUSE_SUCCESS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1431
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1432 if (connect->v_progress)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1433 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1434 setup_cnf->progress_desc = connect->progress.progress_desc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1435 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1436 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1437 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1438 setup_cnf->progress_desc = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1439 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1440 /* Implements Measure# 15 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1441 cc_fill_struct (connect->v_connect_num,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1442 &setup_cnf->connected_number,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1443 (T_M_CC_calling_num*)&connect->connect_num);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1444 /* Implements Measure# 24 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1445 cc_fill_sub_struct (connect->v_connect_subaddr,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1446 &setup_cnf->connected_number_sub,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1447 &connect->connect_subaddr);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1448 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1449
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1450 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1451 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1452 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1453 | STATE : code ROUTINE : cc_build_mncc_setup_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1454 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1455
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1456 PURPOSE : Filling of the C-Structure for MNCC_SETUP_IND.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1457
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1458 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1459
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1460 GLOBAL void cc_build_mncc_setup_ind (const T_D_SETUP * setup,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1461 T_MNCC_SETUP_IND * setup_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1462 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1463 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1464 TRACE_FUNCTION ("cc_build_mncc_setup_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1465
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1466 setup_ind->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1467
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1468 setup_ind->ri = cc_data->neg_ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1469 memcpy (&setup_ind->bcpara, &cc_data->neg_bcpara1, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1470 memcpy (&setup_ind->bcpara2, &cc_data->neg_bcpara2, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1471
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1472 if (setup->v_progress)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1473 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1474 setup_ind->progress_desc = setup->progress.progress_desc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1475 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1476 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1477 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1478 setup_ind->progress_desc = MNCC_PROG_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1479 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1480
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1481 if (setup->v_signal)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1482 setup_ind->sig = setup->signal;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1483 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1484 setup_ind->sig = MNCC_SIG_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1485 /* Implements Measure# 15 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1486 cc_fill_struct (setup->v_calling_num,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1487 &setup_ind->calling_party,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1488 &setup->calling_num);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1489 /* Implements Measure# 24 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1490 cc_fill_sub_struct (setup->v_calling_subaddr,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1491 &setup_ind->calling_party_sub,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1492 (T_M_CC_connect_subaddr*)&setup->calling_subaddr);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1493 if (setup->v_dl_called_num)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1494 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1495 setup_ind->called_party.ton = setup->dl_called_num.ton;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1496 setup_ind->called_party.npi = setup->dl_called_num.npi;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1497 setup_ind->called_party.c_called_num = setup->dl_called_num.c_num;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1498 memcpy (setup_ind->called_party.called_num,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1499 setup->dl_called_num.num, setup->dl_called_num.c_num);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1500 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1501 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1502 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1503 setup_ind->called_party.ton = MNCC_TON_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1504 setup_ind->called_party.npi = MNCC_NPI_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1505 setup_ind->called_party.c_called_num = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1506 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1507 /* Implements Measure# 25 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1508 cc_fill_sub_struct (setup->v_called_subaddr,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1509 &setup_ind->called_party_sub,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1510 (T_M_CC_connect_subaddr *)&setup->called_subaddr);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1511 if (setup->v_redirecting_num)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1512 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1513 setup_ind->redirecting_party.ton = setup->redirecting_num.ton;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1514 setup_ind->redirecting_party.npi = setup->redirecting_num.npi;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1515 setup_ind->redirecting_party.c_redir_num = setup->redirecting_num.c_num;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1516 memcpy (setup_ind->redirecting_party.redir_num,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1517 setup->redirecting_num.num,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1518 setup->redirecting_num.c_num);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1519 if (setup->redirecting_num.v_screen)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1520 setup_ind->redirecting_party.screen = setup->redirecting_num.screen;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1521 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1522 setup_ind->redirecting_party.screen = MNCC_SCREEN_IND_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1523 if (setup->redirecting_num.v_present)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1524 setup_ind->redirecting_party.present = setup->redirecting_num.present;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1525 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1526 setup_ind->redirecting_party.present = MNCC_PRES_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1527 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1528 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1529 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1530 setup_ind->redirecting_party.ton = MNCC_TON_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1531 setup_ind->redirecting_party.npi = MNCC_NPI_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1532 setup_ind->redirecting_party.present = MNCC_PRES_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1533 setup_ind->redirecting_party.screen = MNCC_SCREEN_IND_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1534 setup_ind->redirecting_party.c_redir_num = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1535 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1536 /* Implements Measure# 26 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1537 cc_fill_sub_struct (setup->v_redirecting_subaddr,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1538 &setup_ind->redirecting_party_sub,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1539 (T_M_CC_connect_subaddr *)&setup->redirecting_subaddr);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1540 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1541
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1542 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1543 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1544 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1545 | STATE : code ROUTINE : cc_build_modify |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1546 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1547
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1548 PURPOSE : Filling of the C-Structure for modify message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1549
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1550 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1551
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1552 GLOBAL void cc_build_modify (const T_MNCC_MODIFY_REQ * modify,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1553 T_B_MODIFY * modify_msg)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1554 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1555 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1556 TRACE_FUNCTION ("cc_build_modify()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1557
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1558 modify_msg->msg_type = B_MODIFY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1559 if (modify->serv EQ cc_data->neg_serv1)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1560 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1561 modify_msg->bearer_cap = cc_data->neg_bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1562 cc_data->new_itc = cc_data->neg_bc1.trans_cap;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1563 cc_data->old_itc = cc_data->neg_bc2.trans_cap;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1564 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1565 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1566 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1567 modify_msg->bearer_cap = cc_data->neg_bc2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1568 cc_data->new_itc = cc_data->neg_bc2.trans_cap;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1569 cc_data->old_itc = cc_data->neg_bc1.trans_cap;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1570 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1571
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1572 if (modify_msg->bearer_cap.trans_cap EQ M_CC_ITC_DIGITAL_UNRESTRICTED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1573 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1574 cc_build_llc (&modify_msg->v_low_layer_comp,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1575 &modify_msg->low_layer_comp,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1576 &modify_msg->bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1577 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1578 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1579 modify_msg->v_low_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1580 modify_msg->v_high_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1581
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1582 if (cc_data->call_type [cc_data->index_ti] EQ CALL_TYPE_MTC)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1583 modify_msg->v_reverse_call = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1584 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1585 modify_msg->v_reverse_call = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1586 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1587
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1588 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1589 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1590 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1591 | STATE : code ROUTINE : cc_build_modify_complete |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1592 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1593
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1594 PURPOSE : Filling of the C-Structure for modify complete message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1595
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1596 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1597
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1598 GLOBAL void cc_build_modify_complete (T_B_MODIFY_COMP * modify_com)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1599 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1600 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1601 TRACE_FUNCTION ("cc_build_modify_complete()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1602
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1603 modify_com->msg_type = B_MODIFY_COMP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1604 if (cc_data->active_service EQ cc_data->neg_serv1)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1605 modify_com->bearer_cap = cc_data->neg_bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1606 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1607 modify_com->bearer_cap = cc_data->neg_bc2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1608
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1609
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1610 if (cc_data->call_type [cc_data->index_ti] EQ CALL_TYPE_MTC)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1611 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1612 modify_com->v_reverse_call = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1613 modify_com->v_low_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1614 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1615 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1616 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1617 modify_com->v_reverse_call = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1618 if (modify_com->bearer_cap.trans_cap EQ M_CC_ITC_DIGITAL_UNRESTRICTED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1619 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1620 cc_build_llc (&modify_com->v_low_layer_comp,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1621 &modify_com->low_layer_comp,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1622 &modify_com->bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1623 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1624 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1625 modify_com->v_low_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1626 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1627
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1628 modify_com->v_high_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1629 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1630
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1631 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1632 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1633 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1634 | STATE : code ROUTINE : cc_build_modify_reject |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1635 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1636
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1637 PURPOSE : Filling of the C-Structure for modify reject message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1638
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1639 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1640
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1641 GLOBAL void cc_build_modify_reject (T_B_MODIFY_REJ * modify_rej,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1642 USHORT cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1643 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1644 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1645 TRACE_FUNCTION ("cc_build_modify_reject()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1646
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1647 modify_rej->msg_type = B_MODIFY_REJ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1648 if (cc_data->active_service EQ cc_data->neg_serv1)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1649 modify_rej->bearer_cap = cc_data->neg_bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1650 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1651 modify_rej->bearer_cap = cc_data->neg_bc2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1652
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1653 if (cc_data->call_type [cc_data->index_ti] EQ CALL_TYPE_MTC)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1654 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1655 modify_rej->v_low_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1656 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1657 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1658 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1659 if (modify_rej->bearer_cap.trans_cap EQ M_CC_ITC_DIGITAL_UNRESTRICTED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1660 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1661 cc_build_llc (&modify_rej->v_low_layer_comp,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1662 &modify_rej->low_layer_comp,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1663 &modify_rej->bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1664 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1665 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1666 modify_rej->v_low_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1667 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1668
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1669 modify_rej->v_high_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1670
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1671 /* no security check for validity of cause; cause is mandatory in MODIFY REJECT */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1672 cc_encode_cause (&modify_rej->cc_cause, cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1673 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1674
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1675
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1676 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1677 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1678 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1679 | STATE : code ROUTINE : cc_build_release |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1680 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1681
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1682 PURPOSE : Filling of the C-Structure for release message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1683
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1684 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1685 GLOBAL void cc_build_release (T_U_RELEASE * release,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1686 USHORT cause,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1687 const T_NAS_fac_inf * fac_inf,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1688 UBYTE ss_ver)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1689 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1690
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1691 TRACE_FUNCTION ("cc_build_release()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1692
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1693 release->msg_type = U_RELEASE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1694 if (IS_CAUSE_INVALID(cause))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1695 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1696 release->v_cc_cause = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1697 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1698 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1699 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1700 release->v_cc_cause = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1701 cc_encode_cause (&release->cc_cause, cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1702 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1703
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1704 release->v_cc_cause_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1705 release->v_facility = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1706 release->v_user_user = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1707 release->v_ss_version = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1708
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1709 if ((fac_inf NEQ NULL) AND (fac_inf->l_fac NEQ 0))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1710 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1711 /* Send facility IE */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1712 release->v_facility = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1713 release->facility.c_fac = fac_inf->l_fac >> 3;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1714 memcpy (release->facility.fac,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1715 &fac_inf->fac[fac_inf->o_fac >> 3],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1716 release->facility.c_fac);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1717
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1718 if (ss_ver NEQ MNCC_SS_VER_NOT_PRES)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1719 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1720 release->v_ss_version = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1721 release->ss_version.c_ver = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1722 release->ss_version.ver[0] = ss_ver;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1723 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1724 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1725 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1726
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1727
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1728 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1729 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1730 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1731 | STATE : code ROUTINE : cc_build_release_complete |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1732 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1733
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1734 PURPOSE : Filling of the C-Structure for release complete message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1735
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1736 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1737
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1738 GLOBAL void cc_build_release_complete (T_U_RELEASE_COMP * rel_com,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1739 USHORT cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1740 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1741
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1742 TRACE_FUNCTION ("cc_build_release_complete()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1743
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1744 rel_com->msg_type = U_RELEASE_COMP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1745 if (IS_CAUSE_INVALID(cause))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1746 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1747 rel_com->v_cc_cause = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1748 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1749 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1750 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1751 rel_com->v_cc_cause = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1752 cc_encode_cause (&rel_com->cc_cause, cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1753 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1754
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1755 rel_com->v_facility = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1756 rel_com->v_user_user = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1757 rel_com->v_ss_version = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1758 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1759
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1760 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1761 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1762 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1763 | STATE : code ROUTINE : cc_build_start_cc |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1764 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1765
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1766 PURPOSE : Filling of the C-Structure for a START CC message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1767
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1768 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1769
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1770 GLOBAL void cc_build_start_cc (T_U_START_CC * start_cc)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1771 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1772 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1773 TRACE_FUNCTION ("cc_build_start_cc()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1774
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1775 start_cc->msg_type = U_START_CC;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1776 start_cc->v_call_ctrl_cap = (cc_data->call_ctrl_cap.dtmf NEQ 0) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1777 (cc_data->call_ctrl_cap.pcp NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1778 if (start_cc->v_call_ctrl_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1779 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1780 start_cc->call_ctrl_cap = cc_data->call_ctrl_cap; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1781 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1782 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1783
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1784
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1785 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1786 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1787 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1788 | STATE : code ROUTINE : cc_fill_llc_hlc |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1789 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1790
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1791 PURPOSE : Filling of the C-Structure for LLC and HLC in the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1792 setup message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1793
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1794 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1795
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1796 GLOBAL void cc_fill_llc_hlc (T_U_SETUP * setup)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1797 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1798
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1799 TRACE_FUNCTION ("cc_fill_llc_hlc()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1800
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1801 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1802 * add lower layer capability if
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1803 * at least one bearer cap indicates
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1804 * information transfer capability = UDI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1805 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1806 if ((setup->v_bearer_cap AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1807 setup->bearer_cap.trans_cap EQ M_CC_ITC_DIGITAL_UNRESTRICTED) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1808 (setup->v_bearer_cap_2 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1809 setup->bearer_cap_2.trans_cap EQ M_CC_ITC_DIGITAL_UNRESTRICTED))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1810 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1811 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1812 * copy repeat indicator if available
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1813 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1814 setup->v_repeat_2 = setup->v_repeat;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1815 setup->repeat_2 = setup->repeat;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1816 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1817 * Fill LLC if bearer cap is available
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1818 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1819 if (setup->v_bearer_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1820 cc_build_llc (&setup->v_low_layer_comp, &setup->low_layer_comp,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1821 &setup->bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1822 if (setup->v_bearer_cap_2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1823 cc_build_llc (&setup->v_low_layer_comp_2, (T_M_CC_low_layer_comp *)&setup->low_layer_comp_2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1824 (T_M_CC_bearer_cap *)&setup->bearer_cap_2);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1825 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1826 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1827 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1828 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1829 * default dont include LLC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1830 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1831 setup->v_repeat_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1832 setup->v_low_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1833 setup->v_low_layer_comp_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1834 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1835 setup->v_repeat_3 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1836 setup->v_high_layer_comp = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1837 setup->v_high_layer_comp_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1838 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1839
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1840
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1841 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1842 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1843 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1844 | STATE : code ROUTINE : cc_build_setup |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1845 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1846
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1847 PURPOSE : Filling of the C-Structure for setup message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1848
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1849 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1850
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1851 GLOBAL void cc_build_setup ( T_U_SETUP * setup_msg,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1852 const T_MNCC_SETUP_REQ *setup_prm)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1853 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1854 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1855 TRACE_FUNCTION ("cc_build_setup()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1856
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1857 TRACE_EVENT_P2 ("SERV2=%x RI=%x", cc_data->serv2, cc_data->ri);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1858
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1859 setup_msg->msg_type = U_SETUP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1860 setup_msg->v_bearer_cap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1861 setup_msg->bearer_cap = cc_data->bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1862 if (cc_data->serv2 NEQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1863 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1864 setup_msg->v_bearer_cap_2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1865 memcpy (&setup_msg->bearer_cap_2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1866 &cc_data->bc2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1867 sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1868 setup_msg->v_repeat = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1869 setup_msg->repeat = cc_data->ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1870 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1871 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1872 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1873 setup_msg->v_repeat = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1874 setup_msg->v_bearer_cap_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1875 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1876
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1877 cc_fill_llc_hlc (setup_msg);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1878
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1879 setup_msg->v_user_user = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1880 setup_msg->v_ss_version = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1881 setup_msg->v_fac_adv = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1882
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1883 if (cc_data->my_party_subaddr.c_subaddr NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1884 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1885 setup_msg->v_calling_subaddr = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1886 setup_msg->calling_subaddr = cc_data->my_party_subaddr; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1887 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1888 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1889 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1890 setup_msg->v_calling_subaddr = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1891 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1892
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1893 if (setup_prm->called_party.c_called_num NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1894 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1895 setup_msg->v_ul_called_num = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1896 setup_msg->ul_called_num.v_ton = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1897 setup_msg->ul_called_num.ton = setup_prm->called_party.ton;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1898 setup_msg->ul_called_num.v_npi = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1899 setup_msg->ul_called_num.npi = setup_prm->called_party.npi;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1900 setup_msg->ul_called_num.c_num = setup_prm->called_party.c_called_num;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1901 memcpy (&setup_msg->ul_called_num.num[0],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1902 &setup_prm->called_party.called_num[0],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1903 setup_prm->called_party.c_called_num);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1904 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1905 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1906 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1907 setup_msg->v_ul_called_num = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1908 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1909
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1910 if (setup_prm->called_party_sub.c_subaddr NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1911 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1912 setup_msg->v_called_subaddr = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1913 setup_msg->called_subaddr.v_tos = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1914 setup_msg->called_subaddr.tos = setup_prm->called_party_sub.tos;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1915 setup_msg->called_subaddr.v_odd_even = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1916 setup_msg->called_subaddr.odd_even = setup_prm->called_party_sub.odd_even;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1917 setup_msg->called_subaddr.c_subaddr = setup_prm->called_party_sub.c_subaddr;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1918 memcpy (&setup_msg->called_subaddr.subaddr[0],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1919 &setup_prm->called_party_sub.subaddr[0],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1920 setup_prm->called_party_sub.c_subaddr);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1921 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1922 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1923 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1924 setup_msg->v_called_subaddr = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1925 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1926
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1927 switch (setup_prm->clir_sup)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1928 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1929 case MNCC_CLR_SUP:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1930 setup_msg->v_clir_suppr = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1931 setup_msg->v_clir_invoc = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1932 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1933
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1934 case MNCC_CLR_SUP_NOT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1935 setup_msg->v_clir_suppr = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1936 setup_msg->v_clir_invoc = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1937 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1938
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1939 default: /* CLR_NOT_PRES */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1940 setup_msg->v_clir_suppr = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1941 setup_msg->v_clir_invoc = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1942 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1943 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1944
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1945 setup_msg->v_call_ctrl_cap = (cc_data->call_ctrl_cap.dtmf NEQ 0) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1946 (cc_data->call_ctrl_cap.pcp NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1947 if (setup_msg->v_call_ctrl_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1948 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1949 setup_msg->call_ctrl_cap = cc_data->call_ctrl_cap; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1950 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1951
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1952 if (setup_msg->bearer_cap.conn_elem EQ MNCC_CONN_ELEM_TRANS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1953 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1954 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1955 * set parameters invalid according to GSM 07.01 V7.1.1 Rel 1998 -
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1956 * CC-ENH-2378
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1957 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1958 setup_msg->bearer_cap.v_uimi = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1959 setup_msg->bearer_cap.v_waiur = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1960 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1961
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1962 if (setup_prm->fac_inf.l_fac EQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1963 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1964 setup_msg->v_facility = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1965 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1966 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1967 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1968 setup_msg->v_facility = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1969 setup_msg->facility.c_fac = setup_prm->fac_inf.l_fac >> 3;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1970 memcpy (setup_msg->facility.fac,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1971 &setup_prm->fac_inf.fac[setup_prm->fac_inf.o_fac>>3],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1972 setup_msg->facility.c_fac);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1973 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1974 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1975
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1976 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1977 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1978 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1979 | STATE : code ROUTINE : cc_build_start_dtmf |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1980 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1981
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1982 PURPOSE : Filling of the C-Structure for start dtmf message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1983
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1984 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1985
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1986 GLOBAL void cc_build_start_dtmf (UBYTE key,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1987 T_U_START_DTMF * start_dtmf)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1988 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1989 TRACE_FUNCTION ("cc_build_start_dtmf()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1990
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1991 start_dtmf->msg_type = U_START_DTMF;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1992 start_dtmf->v_key_facility = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1993 start_dtmf->key_facility.key = key;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1994 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1995
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1996 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1997 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1998 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1999 | STATE : code ROUTINE : cc_build_alert |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2000 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2001
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2002 PURPOSE : Filling of the C-Structure for alert message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2003
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2004 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2005
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2006 GLOBAL void cc_build_alert (T_U_ALERT * alert_msg)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2007 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2008 TRACE_FUNCTION ("cc_build_alert()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2009
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2010 alert_msg->msg_type = U_ALERT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2011 alert_msg->v_facility = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2012 alert_msg->v_user_user = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2013 alert_msg->v_ss_version = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2014 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2015
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2016 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2017 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2018 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2019 | STATE : code ROUTINE : cc_build_connect |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2020 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2021
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2022 PURPOSE : Filling of the C-Structure for connect message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2023
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2024 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2025
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2026 GLOBAL void cc_build_connect (T_U_CONNECT * connect_msg)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2027 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2028 TRACE_FUNCTION ("cc_build_connect()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2029
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2030 connect_msg->msg_type = U_CONNECT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2031 connect_msg->v_facility = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2032 connect_msg->v_connect_subaddr = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2033 connect_msg->v_user_user = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2034 connect_msg->v_ss_version = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2035 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2036
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2037 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2038 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2039 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2040 | STATE : code ROUTINE : cc_build_status |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2041 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2042
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2043 PURPOSE : Filling of the C-Structure for status message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2044
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2045 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2046
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2047 GLOBAL void cc_build_status (T_B_STATUS * status,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2048 USHORT cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2049 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2050 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2051 TRACE_FUNCTION ("cc_build_status()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2052
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2053 status->msg_type = B_STATUS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2054
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2055 /* no security check for validity of cause; cause is mandatory in STATUS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2056 cc_encode_cause (&status->cc_cause, cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2057
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2058 status->call_state.cs = M_CC_CS_GSM_PLMN; /* vk 04-jul-97 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2059 status->call_state.state = cc_data->state[cc_data->index_ti];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2060
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2061 switch (status->call_state.state)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2062 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2063 case M_CC_CS_10:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2064 case M_CC_CS_26:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2065 if (cc_data->hold_state[cc_data->index_ti] NEQ M_CC_HLD_IDLE OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2066 cc_data->mpty_state[cc_data->index_ti] NEQ M_CC_MPTY_IDLE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2067 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2068
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2069 TRACE_EVENT_P3 (" ti=%d, hold=%d, mpty=%d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2070 cc_data->ti,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2071 cc_data->hold_state[cc_data->index_ti],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2072 cc_data->mpty_state[cc_data->index_ti]);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2073
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2074 status->v_aux_states = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2075 status->aux_states.v_hold = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2076 status->aux_states.hold = cc_data->hold_state[cc_data->index_ti];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2077 status->aux_states.v_mpty = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2078 status->aux_states.mpty = cc_data->mpty_state[cc_data->index_ti];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2079 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2080 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2081 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2082 status->v_aux_states = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2083 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2084 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2085
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2086 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2087 status->v_aux_states = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2088 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2089 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2090 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2091
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2092 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2093 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2094 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2095 | STATE : code ROUTINE : cc_build_user_ind_from_cong|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2096 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2097
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2098 PURPOSE : Build primitive MNCC_USER_IND from congestion control
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2099 message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2100
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2101 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2102
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2103 GLOBAL void cc_build_user_ind_from_cong (T_MNCC_USER_IND * user,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2104 const T_B_CONGEST_CTRL * cong)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2105 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2106 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2107 TRACE_FUNCTION ("cc_build_user_ind_from_cong()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2108
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2109 user->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2110 user->more_data = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2111 user->congest_lev = cong->congest_lev;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2112 memset (&user->user, 0, sizeof (T_MNCC_user));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2113 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2114
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2115 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2116 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2117 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2118 | STATE : code ROUTINE : cc_build_user_ind_from_user|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2119 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2120
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2121 PURPOSE : Build primitive MNCC_USER_IND from user information
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2122 message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2123
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2124 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2125
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2126 GLOBAL void cc_build_user_ind_from_user (T_MNCC_USER_IND * user_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2127 const T_B_USER_INFO * user)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2128 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2129 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2130 TRACE_FUNCTION ("cc_build_user_ind_from_user()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2131
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2132 user_ind->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2133 user_ind->user.info_context = MNCC_USER_IN_USER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2134 user_ind->user.pd = user->user_user.pd;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2135 user_ind->user.c_info = user->user_user.c_info;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2136 memcpy (user_ind->user.info, user->user_user.info, MNCC_USER_LEN);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2137 user_ind->congest_lev = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2138 user_ind->more_data = user->v_more_data;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2139 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2140
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2141 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2142 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2143 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2144 | STATE : code ROUTINE : cc_build_user_information |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2145 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2146
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2147 PURPOSE : Filling the C-structure for user information message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2148
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2149 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2150
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2151 GLOBAL void cc_build_user_information (T_MNCC_USER_REQ * user,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2152 T_B_USER_INFO * user_msg)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2153 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2154 TRACE_FUNCTION ("cc_build_user_information()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2155
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2156 user_msg->msg_type = B_USER_INFO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2157 user_msg->user_user.pd = user->user.pd;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2158 user_msg->user_user.c_info = user->user.c_info;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2159 memcpy (user_msg->user_user.info, user->user.info, MNCC_USER_LEN);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2160 user_msg->v_more_data = user->more_data;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2161 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2162
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2163 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2164 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2165 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2166 | STATE : code ROUTINE : cc_check_error_flag |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2167 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2168
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2169 PURPOSE : Checks the error variable of CC data and sends status
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2170 message if necessary.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2171
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2172 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2173
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2174 GLOBAL BOOL cc_check_error_flag (void)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2175 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2176 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2177
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2178 TRACE_FUNCTION ("cc_check_error_flag()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2179
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2180 switch (cc_data->error)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2181 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2182 case M_CC_CAUSE_INVALID_MAND_INFO:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2183 case M_CC_CAUSE_COND_INFO_ELEM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2184 CCD_END;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2185 /* Implements Measure# 7 and streamline encoding*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2186 cc_send_status (cc_data->error);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2187 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2188
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2189 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2190 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2191 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2192 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2193
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2194 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2195 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2196 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2197 | STATE : code ROUTINE : cc_check_ms_cap_repeat_indicator_support |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2198 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2199
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2200 PURPOSE : The mobile station repeat indicator capabilities are checked
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2201 against the request.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2202
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2203 RETURN: OKAY if capabilities supported.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2204 ERROR if capabilitis not supported.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2205
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2206 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2207 U8 cc_check_ms_cap_repeat_indicator_support(const U8 repeat)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2208 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2209 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2210 TRACE_FUNCTION ("cc_check_ms_cap_repeat_indicator_support()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2211
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2212 cc_csf_ms_cap ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2213
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2214 switch (repeat)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2215 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2216 case M_CC_REPEAT_CIRCULAR:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2217 if (FldGet (cc_data->mscap.datCap2, NAltSrvSup) EQ TRUE) /* still needed for TS61 - not for BS61 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2218 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2219 TRACE_EVENT("ERROR - alternate services not allowed by manufacturer");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2220 return ERROR; /* No alternate services allowed by manufacturer */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2221 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2222
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2223 if(
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2224 ((cc_data->neg_bcpara1.bearer_serv EQ MNCC_BEARER_SERV_FAX) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2225 (cc_data->neg_bcpara2.bearer_serv EQ MNCC_BEARER_SERV_SPEECH) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2226 OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2227 ((cc_data->neg_bcpara2.bearer_serv EQ MNCC_BEARER_SERV_FAX) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2228 (cc_data->neg_bcpara1.bearer_serv EQ MNCC_BEARER_SERV_SPEECH) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2229 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2230 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2231
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2232 TRACE_EVENT("ERROR - no TS61 found - wrong repeat indicator - BS61 not supported at all");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2233 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2234
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2235 case M_CC_REPEAT_FALLBACK:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2236 return OKAY; /* MS cap checked earlier */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2237
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2238 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2239 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2240 } /* switch (repeat) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2241
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2242 }/* cc_check_ms_cap_repeat_indicator_support */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2243
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2244
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2245
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2246 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2247 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2248 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2249 | STATE : code ROUTINE : cc_compatibility_check |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2250 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2251
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2252 PURPOSE : Checks the compatibility of incoming setup message to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2253 its own configuration.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2254
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2255 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2256
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2257 GLOBAL UBYTE cc_compatibility_check (const T_D_SETUP * setup)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2258 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2259 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2260 TRACE_FUNCTION ("cc_compatibility_check()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2261
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2262 cc_csf_ms_cap ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2263
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2264 cc_data->negotiation = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2265
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2266 cc_data->neg_serv1 = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2267 memset (&cc_data->neg_bcpara1, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2268 cc_data->neg_bcpara1.bearer_serv = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2269
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2270 cc_data->neg_serv2 = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2271 memset (&cc_data->neg_bcpara2, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2272 cc_data->neg_bcpara2.bearer_serv = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2273 cc_data->neg_ri = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2274
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2275
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2276
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2277 if (setup->v_bearer_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2278 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2279 if (cc_check_bc (&setup->bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2280 &cc_data->neg_bc1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2281 &cc_data->neg_bcpara1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2282 &cc_data->neg_serv1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2283 &cc_data->negotiation) EQ ERROR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2284 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2285 #if 0 /* HM 03-09-2002, code to merge is superflous, I don't take it
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2286 The part of the code between #if 0 to #endif is never executed.*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2287 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2288 * set parameters invalid according to GSM 07.01 V7.1.1 Rel 1998 -
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2289 * CC-ENH-2378
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2290 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2291 if ((setup->bearer_cap.v_modem_type_2 EQ FALSE) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2292 (setup->bearer_cap.v_fnur EQ FALSE))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2293 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2294 cc_data->neg_bc1.v_modem_type_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2295 cc_data->neg_bc1.v_fnur = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2296 cc_data->neg_bc1.v_acc = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2297 cc_data->neg_bc1.v_mTch = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2298 cc_data->neg_bc1.v_uimi = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2299 cc_data->neg_bc1.v_waiur = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2300 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2301 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2302 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2303 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2304 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2305 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2306 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2307 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2308 * The incoming setup message contains no bearer capabilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2309 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2310 * This indicates single numbering scheme
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2311 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2312 * use the parameter of sns_mode to set the negotiated answer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2313 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2314 cc_data->negotiation = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2315 memset (&cc_data->neg_bcpara1, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2316 memset (&cc_data->neg_bcpara2, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2317
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2318 switch (cc_data->sns_mode)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2319 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2320 case MNCC_SNS_MODE_VOICE: /* VOICE calls */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2321 if (!cc_voice_capability ())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2322 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2323 memcpy (&cc_data->neg_bcpara1, &cc_data->sns_bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2324 sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2325 cc_data->neg_bcpara2.bearer_serv = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2326 cc_data->neg_ri = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2327 cc_data->neg_serv1 = MNCC_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2328 cc_data->neg_serv2 = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2329 cc_build_bc (&cc_data->neg_bc1, &cc_data->neg_serv1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2330 &cc_data->neg_bcpara1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2331 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2332 case MNCC_SNS_MODE_VAF_VOICE: /* Voice Alternating Fax, VOICE first */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2333 case MNCC_SNS_MODE_VAD_VOICE: /* Voice Alternating Data, VOICE first */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2334 if (!cc_voice_capability ())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2335 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2336 memset (&cc_data->neg_bcpara1, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2337 cc_data->neg_bcpara1.bearer_serv = (cc_data->ctm_ena EQ MNCC_CTM_ENABLED)?
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2338 MNCC_BEARER_SERV_SPEECH_CTM: MNCC_BEARER_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2339 memcpy (&cc_data->neg_bcpara2, &cc_data->sns_bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2340 sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2341 cc_data->neg_ri = MNCC_RI_CIRCULAR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2342 cc_data->neg_serv1 = MNCC_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2343 cc_data->neg_serv2 = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2344 cc_build_bc (&cc_data->neg_bc1, &cc_data->neg_serv1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2345 &cc_data->neg_bcpara1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2346 cc_build_bc (&cc_data->neg_bc2, &cc_data->neg_serv2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2347 &cc_data->neg_bcpara2);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2348 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2349 case MNCC_SNS_MODE_FAX: /* FAX calls */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2350 case MNCC_SNS_MODE_DATA: /* DATA calls */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2351 memcpy (&cc_data->neg_bcpara1, &cc_data->sns_bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2352 sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2353 cc_data->neg_bcpara2.bearer_serv = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2354 cc_data->neg_ri = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2355 cc_data->neg_serv1 = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2356 cc_data->neg_serv2 = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2357 cc_build_bc (&cc_data->neg_bc1, &cc_data->neg_serv1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2358 &cc_data->neg_bcpara1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2359 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2360 case MNCC_SNS_MODE_VAF_FAX: /* Voice Alternating Fax, FAX first */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2361 case MNCC_SNS_MODE_VAD_DATA: /* Voice Alternating Data, DATA first */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2362 if (!cc_voice_capability ())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2363 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2364 memset (&cc_data->neg_bcpara2, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2365 cc_data->neg_bcpara2.bearer_serv = (cc_data->ctm_ena EQ MNCC_CTM_ENABLED)?
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2366 MNCC_BEARER_SERV_SPEECH_CTM: MNCC_BEARER_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2367 memcpy (&cc_data->neg_bcpara1, &cc_data->sns_bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2368 sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2369 cc_data->neg_ri = MNCC_RI_CIRCULAR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2370 cc_data->neg_serv1 = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2371 cc_data->neg_serv2 = MNCC_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2372 cc_build_bc (&cc_data->neg_bc1, &cc_data->neg_serv1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2373 &cc_data->neg_bcpara1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2374 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2375 case MNCC_SNS_MODE_VFD: /* Voice Followed by Data */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2376 if (!cc_voice_capability ())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2377 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2378 memset (&cc_data->neg_bcpara1, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2379 cc_data->neg_bcpara1.bearer_serv = (cc_data->ctm_ena EQ MNCC_CTM_ENABLED)?
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2380 MNCC_BEARER_SERV_SPEECH_CTM: MNCC_BEARER_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2381 memcpy (&cc_data->neg_bcpara2, &cc_data->sns_bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2382 sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2383 cc_data->neg_ri = MNCC_RI_SEQUENTIAL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2384 cc_data->neg_serv1 = MNCC_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2385 cc_data->neg_serv2 = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2386 cc_build_bc (&cc_data->neg_bc1, &cc_data->neg_serv1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2387 &cc_data->neg_bcpara1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2388 cc_build_bc (&cc_data->neg_bc2, &cc_data->neg_serv2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2389 &cc_data->neg_bcpara2);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2390 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2391 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2392 TRACE_ERROR ("Unexpected default"); /* All cases caught */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2393 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2394 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2395 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2396 if (setup->v_bearer_cap_2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2397 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2398 if (cc_check_bc ((T_M_CC_bearer_cap *)&setup->bearer_cap_2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2399 &cc_data->neg_bc2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2400 &cc_data->neg_bcpara2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2401 &cc_data->neg_serv2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2402 &cc_data->negotiation) EQ ERROR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2403 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2404 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2405
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2406 /*Check for repeat Indicator*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2407 if (setup->v_repeat)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2408 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2409 if (cc_check_ms_cap_repeat_indicator_support(setup->repeat) EQ ERROR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2410 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2411
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2412 cc_data->neg_ri = setup->repeat;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2413 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2414
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2415
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2416 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2417 * Two bearer capabilities are available. The
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2418 * single numbering scheme command on ACI level can
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2419 * be used to swap bearer capabilities. For example
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2420 * SNS Mode is set to voice alternating fax, voice first
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2421 * and the network indicates voice alternating fax, fax first.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2422 * Then the BCs are swapped.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2423 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2424 if (setup->v_bearer_cap_2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2425 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2426 UBYTE swap = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2427 switch (cc_data->sns_mode)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2428 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2429 case MNCC_SNS_MODE_VAF_VOICE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2430 if (cc_data->neg_bcpara1.bearer_serv EQ MNCC_BEARER_SERV_FAX AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2431 (cc_data->neg_serv2 EQ MNCC_SERV_SPEECH) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2432 cc_data->neg_ri EQ MNCC_RI_CIRCULAR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2433 swap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2434 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2435 case MNCC_SNS_MODE_VAD_VOICE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2436 if (cc_data->neg_bcpara1.bearer_serv NEQ MNCC_BEARER_SERV_FAX AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2437 (cc_data->neg_serv1 NEQ MNCC_SERV_SPEECH) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2438 (cc_data->neg_serv2 EQ MNCC_SERV_SPEECH) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2439 cc_data->neg_ri EQ MNCC_RI_CIRCULAR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2440 swap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2441 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2442 case MNCC_SNS_MODE_VAF_FAX:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2443 if (cc_data->neg_bcpara2.bearer_serv EQ MNCC_BEARER_SERV_FAX AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2444 (cc_data->neg_serv1 EQ MNCC_SERV_SPEECH) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2445 cc_data->neg_ri EQ MNCC_RI_CIRCULAR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2446 swap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2447 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2448 case MNCC_SNS_MODE_VAD_DATA:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2449 if (cc_data->neg_bcpara2.bearer_serv NEQ MNCC_BEARER_SERV_FAX AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2450 (cc_data->neg_serv2 NEQ MNCC_SERV_SPEECH) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2451 (cc_data->neg_serv1 EQ MNCC_SERV_SPEECH) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2452 cc_data->neg_ri EQ MNCC_RI_CIRCULAR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2453 swap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2454 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2455 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2456 if (swap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2457 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2458 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2459 * Both bearer capabilities shall be swapped
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2460 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2461 T_MNCC_bcpara temp_bcpara;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2462 UBYTE temp_serv;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2463 T_M_CC_bearer_cap temp_bc; /*lint !e813 length info of struct*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2464
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2465 memcpy (&temp_bcpara, &cc_data->neg_bcpara1, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2466 memcpy (&cc_data->neg_bcpara1, &cc_data->neg_bcpara2, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2467 memcpy (&cc_data->neg_bcpara2, &temp_bcpara, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2468
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2469 temp_serv = cc_data->neg_serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2470 cc_data->neg_serv1 = cc_data->neg_serv2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2471 cc_data->neg_serv2 = temp_serv;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2472
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2473 memcpy (&temp_bc, &cc_data->neg_bc1, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2474 memcpy (&cc_data->neg_bc1, &cc_data->neg_bc2, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2475 memcpy (&cc_data->neg_bc2, &temp_bc, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2476
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2477 cc_data->negotiation = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2478 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2479 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2480
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2481 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2482 * set parameters invalid according to GSM 07.01 V7.1.1 Rel 1998 -
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2483 * CC-ENH-2378
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2484 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2485 if ((setup->bearer_cap.v_modem_type_2 EQ FALSE) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2486 (setup->bearer_cap.v_fnur EQ FALSE))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2487 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2488 cc_data->neg_bc1.v_modem_type_2 = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2489 cc_data->neg_bc1.v_fnur = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2490 cc_data->neg_bc1.v_acc = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2491 cc_data->neg_bc1.v_mTch = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2492 cc_data->neg_bc1.v_uimi = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2493 cc_data->neg_bc1.v_waiur = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2494 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2495
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2496 cc_data->active_service = cc_data->neg_serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2497
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2498 if (cc_mtc_check_subaddr (setup) EQ BAD_SUBADDRESS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2499 return BAD_SUBADDRESS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2500
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2501 if (cc_data->negotiation)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2502 return NEGOTIATION;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2503 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2504 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2505 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2506
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2507
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2508 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2509 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2510 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2511 | STATE : code ROUTINE : cc_basic_service_align() |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2512 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2513
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2514 PURPOSE: Checks the compatibility of incoming uplink setup message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2515 to its own configuration and performs basic service group
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2516 alignment. This is used for Network Initiated MO Call (CCBS).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2517 See GSM 04.08 subclause 5.2.3.2.1 "Basic service group
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2518 alignment".
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2519
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2520 The following fields in cc_data are changed by a call
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2521 of this function:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2522
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2523 cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2524 cc_data->serv2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2525 cc_data->ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2526 cc_data->bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2527 cc_data->bc2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2528 cc_data->bcpara1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2529 cc_data->bcpara2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2530 cc_data->neg_serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2531 cc_data->neg_serv2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2532 cc_data->neg_ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2533 cc_data->neg_bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2534 cc_data->neg_bc2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2535 cc_data->neg_bcpara1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2536 cc_data->neg_bcpara2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2537 cc_data->negotiation;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2538
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2539 PARAMETERS: cc_data: IN/OUT
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2540 setup: IN/OUT
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2541
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2542 RETURN: OKAY if setup (bearer caps) is compatible with mobile,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2543 ERROR otherwise.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2544
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2545 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2546
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2547 GLOBAL UBYTE cc_basic_service_align (T_U_SETUP * setup)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2548 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2549 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2550 TRACE_FUNCTION ("cc_basic_service_align()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2551
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2552 cc_csf_ms_cap ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2553
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2554 if (FldGet (cc_data->mscap.datCap2, NAltSrvSup) AND setup->v_repeat)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2555 return ERROR; /* No alternate services allowed by manufacturer */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2556
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2557 cc_data->ri = (setup->v_repeat) ? setup->repeat : NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2558 cc_data->neg_ri = cc_data->ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2559
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2560 /* BC is mandatory IE in uplink setup message */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2561 if (!setup->v_bearer_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2562 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2563 if (cc_check_bc (&setup->bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2564 &cc_data->bc1, /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2565 &cc_data->bcpara1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2566 &cc_data->serv1, /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2567 &cc_data->negotiation) /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2568 EQ ERROR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2569 return ERROR; /* Not expected to catch */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2570
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2571 if (!cc_check_capabilities (&cc_data->bcpara1))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2572 return ERROR; /* Not expected to catch */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2573
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2574 cc_build_bc (&cc_data->bc1, &cc_data->serv1, &cc_data->bcpara1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2575 setup->bearer_cap = cc_data->bc1; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2576 cc_data->neg_serv1 = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2577 cc_data->neg_bc1 = cc_data->bc1; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2578 cc_data->neg_bcpara1 = cc_data->bcpara1; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2579
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2580 /* BC2 is optional IE in uplink setup message */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2581 if (setup->v_bearer_cap_2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2582 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2583 if (cc_check_bc ((T_M_CC_bearer_cap *)&setup->bearer_cap_2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2584 &cc_data->bc2, /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2585 &cc_data->bcpara2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2586 &cc_data->serv2, /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2587 &cc_data->negotiation)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2588 EQ ERROR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2589 return ERROR; /* Bearer caps 2 incompatible */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2590 if (!cc_check_capabilities (&cc_data->bcpara2))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2591 return ERROR; /* Not expected to catch */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2592
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2593 cc_build_bc (&cc_data->bc2, &cc_data->serv2, &cc_data->bcpara2);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2594 setup->bearer_cap_2 = *(T_M_CC_bearer_cap_2*)&cc_data->bc2; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2595 cc_data->neg_bc2 = cc_data->bc2; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2596 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2597 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2598 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2599 cc_data->serv2 = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2600 cc_data->bcpara2.bearer_serv = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2601 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2602 cc_data->neg_serv2 = cc_data->serv2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2603 cc_data->neg_bcpara2 = cc_data->bcpara2; /* Struct copy */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2604
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2605 /* check repeat indicator */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2606 if (setup->v_repeat EQ TRUE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2607 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2608 if (cc_check_ms_cap_repeat_indicator_support(setup->repeat) EQ ERROR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2609 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2610
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2611 cc_data->ri = setup->repeat;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2612 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2613 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2614 cc_data->ri = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2615
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2616 cc_data->neg_ri = cc_data->ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2617
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2618 cc_fill_llc_hlc (setup);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2619
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2620 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2621 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2622
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2623
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2624 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2625 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2626 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2627 | STATE : code ROUTINE : cc_count_active_connections|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2628 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2629
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2630 PURPOSE : Counts the number of active connections.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2631
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2632 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2633
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2634 GLOBAL UBYTE cc_count_active_connections (void)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2635 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2636 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2637 UBYTE i;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2638 UBYTE x;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2639
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2640 TRACE_FUNCTION ("cc_count_active_connections()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2641
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2642 for (i=0,x=0 ; i< MAX_CC_CALLS; i++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2643 if (cc_data->state[i] NEQ M_CC_CS_0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2644 x++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2645
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2646 return x;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2647 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2648
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2649
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2650 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2651 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2652 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2653 | STATE : code ROUTINE : cc_disconnect_after_timeout|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2654 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2655
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2656 PURPOSE : Start disconnection after timeout. A disconnect message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2657 is send to the infrastructure. MMI is informed and timer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2658 T305 is started.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2659
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2660 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2661
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2662 GLOBAL void cc_disconnect_after_timeout (void)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2663 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2664 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2665 PALLOC (setup_cnf, MNCC_SETUP_CNF);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2666
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2667 TRACE_FUNCTION ("cc_disconnect_after_timeout()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2668
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2669 CCD_START;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2670 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2671 MCAST (disconnect, U_DISCONNECT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2672 cc_build_disconnect (disconnect, CAUSE_MAKE(DEFBY_STD,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2673 ORIGSIDE_MS,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2674 MNCC_CC_ORIGINATING_ENTITY,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2675 M_CC_CAUSE_TIMER),
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2676 NULL, MNCC_SS_VER_NOT_PRES);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2677 for_disconnect (disconnect);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2678 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2679 CCD_END;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2680
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2681 memset (setup_cnf, 0, sizeof (T_MNCC_SETUP_CNF));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2682 setup_cnf->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2683 setup_cnf->cause = CAUSE_MAKE(DEFBY_STD,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2684 ORIGSIDE_MS,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2685 MNCC_CC_ORIGINATING_ENTITY,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2686 M_CC_CAUSE_TIMER);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2687 PSENDX (MMI, setup_cnf);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2688
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2689 TIMERSTART (T305, T305_VALUE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2690 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2691
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2692
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2693 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2694 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2695 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2696 | STATE : code ROUTINE : cc_encode_cause |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2697 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2698
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2699 PURPOSE : Coding of the cc_cause element and storing of the cause
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2700 value in cc data. Dependent on the cause the diagnostic
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2701 field is filled. It is expected that checking of validity
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2702 is done outside this function.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2703
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2704 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2705
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2706 static const UBYTE timername[] = { '3', '0', '3', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2707 '3', '0', '5', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2708 '3', '0', '8', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2709 '3', '1', '0', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2710 '3', '1', '3', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2711 '3', '2', '3', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2712 '3', '3', '2', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2713 '3', '3', '5', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2714 '3', '3', '6', 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2715 '3', '3', '7', 0 };
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2716
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2717 GLOBAL void cc_encode_cause (T_M_CC_cc_cause * cc_cause,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2718 USHORT cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2719 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2720 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2721 TRACE_FUNCTION ("cc_encode_cause()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2722
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2723 /* perform "security" checks of application of cause concept */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2724 switch (GET_CAUSE_DEFBY(cause))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2725 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2726 case DEFBY_STD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2727 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2728 switch (GET_CAUSE_ORIGIN_ENTITY(cause))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2729 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2730 case MNCC_CC_ORIGINATING_ENTITY:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2731 case MNCC_ACI_ORIGINATING_ENTITY:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2732 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2733 switch (GET_CAUSE_ORIGSIDE(cause))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2734 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2735 case ORIGSIDE_NET:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2736 TRACE_EVENT("Warning: NET originated cause");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2737 /* no error correction */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2738 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2739 default: /* ORIGSIDE_MS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2740 break; /* this is the expected case */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2741 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2742 break; /* MNCC_ACI_ORIGINATING_ENTITY, ACI_ORIGINATING_ENTITY */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2743 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2744 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2745 TRACE_ERROR("Non ACI or CC cause originator");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2746 /* no error correction */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2747 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2748 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2749 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2750 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2751 default: /* DEFBY_CONDAT */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2752 TRACE_ERROR("Illegal use of cause: DEFBY_CONDAT");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2753 /* overwrite the cause with a standard cause */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2754 cause = CAUSE_MAKE(DEFBY_STD, ORIGSIDE_MS, MNCC_ACI_ORIGINATING_ENTITY, M_CC_CAUSE_UNSPECIFIED);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2755 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2756 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2757
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2758 cc_cause->v_cs = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2759 cc_cause->cs = M_CC_CS_GSM_PLMN;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2760 cc_cause->v_loc = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2761 cc_cause->loc = M_CC_LOC_USER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2762 cc_cause->v_rec = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2763 cc_cause->v_cause = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2764 cc_cause->cause = GET_CAUSE_VALUE(cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2765
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2766 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2767 * store the cause for later usage (e.g. timeout)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2768 * store the entire 16 bits
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2769 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2770 if (cc_cause->cause NEQ M_CC_CAUSE_STATUS_ENQUIRY)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2771 cc_data->cc_cause [cc_data->index_ti] = cause;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2772
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2773 /* feed diagnostic information if necessary */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2774 switch (cc_cause->cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2775 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2776 case M_CC_CAUSE_MESSAGE_TYPE_INCOMPAT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2777 case M_CC_CAUSE_MESSAGE_TYPE_NOT_IMPLEM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2778 case M_CC_CAUSE_MESSAGE_INCOMPAT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2779 cc_cause->c_diag = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2780 cc_cause->diag[0] = cc_data->mt;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2781 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2782
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2783 case M_CC_CAUSE_INVALID_MAND_INFO:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2784 case M_CC_CAUSE_COND_INFO_ELEM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2785 cc_cause->c_diag = cc_data->error_count;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2786 memcpy (cc_cause->diag, cc_data->error_inf, cc_cause->c_diag);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2787 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2788
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2789 case M_CC_CAUSE_TIMER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2790 cc_cause->c_diag = 3;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2791 memcpy (cc_cause->diag,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2792 &timername[cc_data->timer[cc_data->index_ti]<<2], 3);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2793 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2794
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2795 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2796 cc_cause->c_diag = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2797 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2798 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2799 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2800
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2801 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2802 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2803 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2804 | STATE : code ROUTINE : cc_mtc_check_subaddr |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2805 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2806
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2807 PURPOSE : Check the subaddress if available for the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2808 mobile terminated call.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2809
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2810 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2811
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2812 GLOBAL UBYTE cc_mtc_check_subaddr (const T_D_SETUP * setup)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2813 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2814 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2815 UBYTE i;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2816
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2817 TRACE_FUNCTION ("cc_mtc_check_subaddr()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2818
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2819 if (cc_data->my_party_subaddr.c_subaddr AND setup->v_called_subaddr)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2820 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2821 if (cc_data->my_party_subaddr.tos NEQ setup->called_subaddr.tos)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2822 return BAD_SUBADDRESS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2823
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2824 if (cc_data->my_party_subaddr.c_subaddr NEQ
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2825 setup->called_subaddr.c_subaddr)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2826 return BAD_SUBADDRESS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2827
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2828 for (i=0; i<cc_data->my_party_subaddr.c_subaddr; i++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2829 if (cc_data->my_party_subaddr.subaddr[i] NEQ
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2830 setup->called_subaddr.subaddr[i])
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2831 return BAD_SUBADDRESS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2832 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2833
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2834 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2835 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2836
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2837
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2838 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2839 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2840 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2841 | STATE : code ROUTINE : cc_build_bcpara |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2842 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2843
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2844 PURPOSE : Build the local transmission parameters (for MMI)(bcpara)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2845 of the incoming bearer caps to the mobile station configuration
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2846 for the Mobile Originated Call (after reception of a call
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2847 proceeding message).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2848
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2849 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2850
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2851 LOCAL void cc_build_bcpara( T_MNCC_bcpara *bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2852 const T_M_CC_bearer_cap *bearer_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2853 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2854 TRACE_FUNCTION ("cc_build_bcpara()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2855
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2856 memset (bcpara, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2857
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2858 switch (bearer_cap->trans_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2859 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2860 case M_CC_ITC_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2861 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2862 * Speech bearer capability
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2863 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2864 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2865 bcpara->bearer_serv = MNCC_BEARER_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2866
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2867 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2868 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2869 case M_CC_ITC_AUXILIARY_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2870 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2871 * Speech bearer capability for alternate line service
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2872 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2873 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2874 bcpara->bearer_serv = MNCC_BEARER_SERV_AUX_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2875
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2876 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2877 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2878 case M_CC_ITC_AUDIO:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2879 case M_CC_ITC_DIGITAL_UNRESTRICTED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2880 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2881 bcpara->bearer_serv = MNCC_BEARER_SERV_ASYNC;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2882 bcpara->stop_bits = bearer_cap->num_stop;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2883 bcpara->data_bits = bearer_cap->num_data;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2884 bcpara->parity = bearer_cap->parity;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2885 bcpara->modem_type = bearer_cap->modem_type;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2886 if (bearer_cap->v_fnur AND (bearer_cap->fnur EQ M_CC_FNUR_14400))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2887 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2888 bcpara->rate = MNCC_UR_14_4_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2889 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2890 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2891 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2892 bcpara->rate = bearer_cap->user_rate;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2893 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2894 switch (bearer_cap->conn_elem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2895 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2896 case MNCC_CONN_ELEM_TRANS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2897 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2898 bcpara->conn_elem = MNCC_CONN_ELEM_TRANS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2899 bcpara->flow_control = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2900
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2901 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2902 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2903 case MNCC_CONN_ELEM_NON_TRANS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2904 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2905 bcpara->conn_elem = MNCC_CONN_ELEM_NON_TRANS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2906 if (bearer_cap->v_user_inf_l2_prot)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2907 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2908 switch (bearer_cap->user_inf_l2_prot)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2909 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2910 case M_CC_L2_ISO6429:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2911 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2912 bcpara->flow_control = MNCC_INBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2913
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2914 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2915 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2916 case M_CC_L2_COPFC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2917 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2918 bcpara->flow_control = MNCC_NO_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2919
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2920 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2921 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2922 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2923 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2924 bcpara->flow_control = MNCC_OUTBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2925
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2926 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2927 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2928 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2929 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2930 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2931 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2932 bcpara->flow_control = MNCC_OUTBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2933 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2934 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2935 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2936 case MNCC_CONN_ELEM_TRANS_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2937 case MNCC_CONN_ELEM_NON_TRANS_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2938 case MNCC_CONN_ELEM_NOT_PRES:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2939 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2940 TRACE_EVENT ("Call setup failed due to wrong conn_elem in bearer caps");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2941
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2942 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2943 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2944 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2945 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2946 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2947 case M_CC_ITC_FAX_GROUP_3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2948 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2949 if (bearer_cap->v_fnur AND (bearer_cap->fnur EQ M_CC_FNUR_14400))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2950 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2951 bcpara->rate = MNCC_UR_14_4_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2952 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2953 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2954 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2955 bcpara->rate = bearer_cap->user_rate;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2956 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2957 bcpara->bearer_serv = MNCC_BEARER_SERV_FAX;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2958 bcpara->conn_elem = MNCC_CONN_ELEM_TRANS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2959 bcpara->stop_bits = bearer_cap->num_stop;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2960 bcpara->data_bits = bearer_cap->num_data;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2961 bcpara->parity = bearer_cap->parity;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2962 bcpara->modem_type = bearer_cap->modem_type;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2963 bcpara->flow_control = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2964 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2965 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2966 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2967 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2968 TRACE_EVENT ("Call setup failed due to wrong ITC in bearer caps");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2969
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2970 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2971 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2972 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2973 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2974
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2975
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2976 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2977 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2978 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2979 | STATE : code ROUTINE : cc_moc_compatibility |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2980 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2981
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2982 PURPOSE : Check the compatibility of the incoming bearer caps
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2983 to the mobile station configuration for the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2984 mobile originated call (after reception of a call
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2985 proceeding message).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2986
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2987 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2988
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2989 GLOBAL UBYTE cc_moc_compatibility (const T_D_CALL_PROCEED * proceed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2990 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2991 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2992 UBYTE proceed_ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2993
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2994 TRACE_FUNCTION ("cc_moc_compatibility()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2995
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2996 if (proceed->v_bearer_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2997 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2998 if (proceed->v_repeat)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2999 proceed_ri = proceed->repeat;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3000 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3001 proceed_ri = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3002 if ((proceed_ri EQ NOT_PRESENT_8BIT) && (cc_data->ri NEQ NOT_PRESENT_8BIT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3003 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3004 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3005 * No repeat indicator from the network
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3006 * that means only one bearer capability.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3007 * Mobile station has send two bearer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3008 * capabilities. Check whether bearer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3009 * capability is compatible to one of the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3010 * mobile station bearer capabilities.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3011 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3012 if (cc_bcs_compatible (&proceed->bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3013 &cc_data->bc1, TRUE))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3014 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3015 cc_data->neg_ri = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3016 cc_data->neg_bc1 = proceed->bearer_cap;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3017 cc_data->neg_serv1 = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3018 cc_data->neg_serv2 = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3019 cc_build_bcpara(&cc_data->neg_bcpara1,&proceed->bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3020 cc_data->neg_bcpara2.bearer_serv = NOT_PRESENT_8BIT; /* jk: wg. cc705 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3021 cc_data->active_service = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3022 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3023 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3024 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3025 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3026 if (cc_bcs_compatible (&proceed->bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3027 &cc_data->bc2, TRUE))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3028 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3029 cc_data->neg_ri = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3030 memcpy (&cc_data->neg_bc1, &proceed->bearer_cap,sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3031 cc_data->neg_serv1 = cc_data->serv2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3032 cc_data->neg_serv2 = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3033 cc_build_bcpara(&cc_data->neg_bcpara1,&proceed->bearer_cap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3034 cc_data->active_service = cc_data->serv2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3035 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3036 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3037 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3038 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3039 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3040 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3041 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3042 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3043 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3044 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3045 if (proceed_ri EQ cc_data->ri)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3046 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3047 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3048 * both Repeat Indicators are the same
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3049 * e.g. both not present OR both valid
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3050 * but not the Bearer Capabilities.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3051 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3052 if (cc_bcs_compatible (&proceed->bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3053 &cc_data->bc1, TRUE) EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3054 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3055 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3056 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3057 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3058 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3059 if (proceed_ri NEQ NOT_PRESENT_8BIT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3060 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3061 if (cc_bcs_compatible ((T_M_CC_bearer_cap*)&proceed->bearer_cap_2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3062 &cc_data->bc2, TRUE) EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3063 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3064 /* 2 Bearer Capabilities from the Network sent */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3065 cc_data->neg_ri = proceed_ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3066 cc_data->neg_bc1 = proceed->bearer_cap;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3067 memcpy (&cc_data->neg_bc2, &proceed->bearer_cap_2,sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3068 cc_data->neg_serv1 = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3069 cc_data->neg_serv2 = cc_data->serv2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3070 cc_build_bcpara(&cc_data->neg_bcpara1,&cc_data->neg_bc1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3071 cc_build_bcpara(&cc_data->neg_bcpara2,&cc_data->neg_bc2);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3072 cc_data->active_service = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3073 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3074 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3075 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3076 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3077 /* only 1 BC from the Network sent*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3078 cc_data->neg_ri = proceed_ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3079 cc_data->neg_bc1 = proceed->bearer_cap;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3080 cc_data->neg_serv1 = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3081 cc_data->neg_serv2 = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3082 cc_build_bcpara(&cc_data->neg_bcpara1,&cc_data->neg_bc1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3083 cc_data->neg_bcpara2 = cc_data->bcpara2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3084 cc_data->active_service = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3085 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3086 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3087 }/*else*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3088 }/*if*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3089 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3090 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3091 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3092 * network has changed repeat indicator in an illegal way
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3093 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3094 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3095 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3096 } /*else*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3097 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3098 cc_data->neg_ri = cc_data->ri;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3099 cc_data->neg_bc1 = cc_data->bc1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3100 cc_data->neg_bc2 = cc_data->bc2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3101 cc_data->neg_serv1 = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3102 cc_data->neg_serv2 = cc_data->serv2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3103 cc_data->neg_bcpara1 = cc_data->bcpara1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3104 cc_data->neg_bcpara2 = cc_data->bcpara2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3105 cc_data->active_service = cc_data->serv1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3106 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3107 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3108
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3109
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3110
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3111 #ifndef NTRACE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3112 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3113 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3114 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3115 | STATE : code ROUTINE : cc_trace_state |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3116 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3117
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3118 PURPOSE : Maps CC state numbers to string constants.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3119
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3120 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3121 LOCAL T_S2I_STRING cc_sname (UBYTE state)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3122 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3123 switch (state)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3124 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3125 case M_CC_CS_0 : return S2I_STRING("U0 ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3126 case M_CC_CS_01 : return S2I_STRING("U0.1");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3127 case M_CC_CS_03 : return S2I_STRING("U0.3");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3128 case M_CC_CS_05 : return S2I_STRING("U0.5");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3129 case M_CC_CS_06 : return S2I_STRING("U0.6");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3130 case M_CC_CS_1 : return S2I_STRING("U1 ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3131 case M_CC_CS_3 : return S2I_STRING("U3 ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3132 case M_CC_CS_4 : return S2I_STRING("U4 ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3133 case M_CC_CS_6 : return S2I_STRING("U6 ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3134 case M_CC_CS_7 : return S2I_STRING("U7 ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3135 case M_CC_CS_8 : return S2I_STRING("U8 ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3136 case M_CC_CS_9 : return S2I_STRING("U9 ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3137 case M_CC_CS_10 : return S2I_STRING("U10");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3138 case M_CC_CS_11 : return S2I_STRING("U11");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3139 case M_CC_CS_12 : return S2I_STRING("U12");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3140 case M_CC_CS_19 : return S2I_STRING("U19");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3141 case M_CC_CS_26 : return S2I_STRING("U26");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3142 case M_CC_CS_27 : return S2I_STRING("U27");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3143 case M_CC_CS_28 : return S2I_STRING("U28");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3144 case CS_101 : return S2I_STRING("U10.1");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3145 case CS_261 : return S2I_STRING("U26.1");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3146 default : return S2I_STRING("???");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3147 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3148 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3149 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3150
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3151 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3152 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3153 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3154 | STATE : code ROUTINE : cc_set_state |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3155 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3156
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3157 PURPOSE : Sets the new state for call control. If necessary the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3158 instance administration is updated.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3159
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3160 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3161
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3162 GLOBAL void cc_set_state (UBYTE new_state)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3163 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3164 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3165 #ifndef NTRACE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3166 vsi_o_state_ttrace ("CC[%d]: %s -> %s",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3167 cc_data->index_ti,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3168 S2I_STRING(cc_sname(cc_data->state[cc_data->index_ti])),
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3169 S2I_STRING(cc_sname(new_state)));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3170 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3171
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3172 cc_data->state[cc_data->index_ti] = new_state;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3173 if ((new_state EQ M_CC_CS_0) AND (cc_data->ti NEQ cc_data->setup_reattempt_ti))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3174 srv_free_ti ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3175 if (new_state EQ M_CC_CS_10) /* // Questionable after RLF/REEST */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3176 cc_data->hold_state[cc_data->index_ti] = M_CC_HLD_IDLE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3177 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3178
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3179 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3180 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3181 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3182 | STATE : code ROUTINE : cc_check_bc |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3183 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3184
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3185 PURPOSE : Checks an incoming bearer capability.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3186 But not only checks are done, also
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3187 neg_bearer_cap, bcpara and service are
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3188 computed. If negotiation is required,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3189 negotiation will be set to TRUE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3190 (but never to FALSE by this function).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3191
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3192 RETURN: OKAY if bearer_cap could be processed,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3193 otherwise ERROR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3194
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3195 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3196
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3197
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3198 GLOBAL UBYTE cc_check_bc (const T_M_CC_bearer_cap * bearer_cap, /* in */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3199 T_M_CC_bearer_cap * neg_bearer_cap, /* out */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3200 T_MNCC_bcpara * bcpara, /* out */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3201 UBYTE * service, /* out */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3202 BOOL * negotiation ) /* in/out */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3203 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3204 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3205 UBYTE found, temp;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3206
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3207 TRACE_FUNCTION ("cc_check_bc()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3208
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3209 memcpy (neg_bearer_cap, bearer_cap, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3210
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3211 cc_csf_ms_cap ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3212
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3213 switch (bearer_cap->trans_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3214 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3215 case M_CC_ITC_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3216 case M_CC_ITC_AUXILIARY_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3217 if (!cc_voice_capability ())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3218 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3219 temp = bcpara->rad_chan_req;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3220 memset (bcpara, 0, sizeof (T_MNCC_bcpara));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3221 bcpara->rad_chan_req = temp;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3222 *service = MNCC_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3223 if (bearer_cap->trans_cap EQ M_CC_ITC_SPEECH)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3224 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3225 /* Speech bearer capability */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3226 if (cc_data->ctm_ena EQ MNCC_CTM_ENABLED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3227 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3228 bcpara->bearer_serv = MNCC_BEARER_SERV_SPEECH_CTM;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3229 cc_build_bc (neg_bearer_cap, service, bcpara);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3230 *negotiation = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3231 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3232 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3233 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3234 bcpara->bearer_serv = MNCC_BEARER_SERV_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3235 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3236 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3237 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3238 /* Speech bearer capability for alternate line service */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3239 if (cc_data->ctm_ena EQ MNCC_CTM_ENABLED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3240 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3241 bcpara->bearer_serv = MNCC_BEARER_SERV_AUX_SPEECH_CTM;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3242 cc_build_bc (neg_bearer_cap, service, bcpara);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3243 *negotiation = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3244 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3245 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3246 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3247 bcpara->bearer_serv = MNCC_BEARER_SERV_AUX_SPEECH;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3248 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3249
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3250 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3251 * For negotiation, the rules of GSM 04.08 clause 9.3.2.2 shall apply
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3252 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3253 if ((FldGet(cc_data->mscap.chnMode, EFRSupV2) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3254 FldGet(cc_data->mscap.chnMode, AHS) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3255 FldGet(cc_data->mscap.chnMode, AFS)) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3256 (bearer_cap->v_speech_vers1 EQ FALSE))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3257 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3258 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3259 * if the incoming message indicates only full rate channel,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3260 * all supported bearer caps shall be returned.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3261 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3262 cc_build_bc (neg_bearer_cap, service, bcpara);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3263 *negotiation = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3264 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3265 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3266
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3267 case M_CC_ITC_AUDIO:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3268 case M_CC_ITC_DIGITAL_UNRESTRICTED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3269 *service = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3270 found = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3271 switch (cc_data->conn_elem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3272 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3273 case MNCC_CONN_ELEM_TRANS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3274 cc_check_transparent_async (&found, bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3275 bcpara, negotiation );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3276 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3277 case MNCC_CONN_ELEM_NON_TRANS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3278 cc_check_non_transparent_async (&found, bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3279 bcpara, negotiation);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3280 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3281 case MNCC_CONN_ELEM_TRANS_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3282 cc_check_transparent_async (&found, bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3283 bcpara, negotiation);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3284 cc_check_non_transparent_async (&found, bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3285 bcpara, negotiation);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3286 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3287 case MNCC_CONN_ELEM_NON_TRANS_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3288 cc_check_non_transparent_async (&found, bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3289 bcpara, negotiation);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3290 cc_check_transparent_async (&found, bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3291 bcpara, negotiation);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3292 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3293 case MNCC_CONN_ELEM_NOT_PRES:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3294 TRACE_EVENT ("Call setup failed due to uninitialised conn_elem in cc_data");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3295 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3296 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3297 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3298 * not yet supported (this stuff must be included in the switch (cc_data->conn_elem) above )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3299 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3300 * cc_check_transparent_sync (&found, bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3301 * bcpara, cc_data);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3302 * cc_check_non_transparent_sync (&found, bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3303 * bcpara, cc_data);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3304 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3305 * cc_check_transparent_packet_sync
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3306 * cc_check_non_transparent_packet_sync
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3307 * cc_check_transparent_pad_async
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3308 * cc_check_non_transparent_pad_async
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3309 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3310 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3311 if (found)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3312 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3313 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3314 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3315 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3316
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3317 case M_CC_ITC_FAX_GROUP_3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3318 *service = MNCC_SERV_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3319 if (cc_check_transparent_fax (bearer_cap, neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3320 bcpara, negotiation))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3321 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3322 return OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3323 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3324 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3325
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3326 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3327 /* reserved ITC value e.g. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3328 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3329 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3330 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3331
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3332 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3333 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3334 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3335 | STATE : code ROUTINE : cc_check_transparent_async |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3336 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3337
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3338 PURPOSE : Checks an incoming bearer capability for the transparent
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3339 asynchronous data service.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3340
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3341 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3342 GLOBAL void cc_check_transparent_async (UBYTE * found,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3343 const T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3344 T_M_CC_bearer_cap * neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3345 T_MNCC_bcpara * bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3346 BOOL * negotiation )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3347 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3348 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3349 TRACE_FUNCTION ("cc_check_transparent_async()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3350
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3351 if (*found EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3352 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3353 memcpy (neg_bearer_cap, bearer_cap, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3354
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3355 if (FldGet(cc_data->mscap.datCap1, AsySup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3356 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3357 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3358 * check only if transparent M_CC_ASYNCHRONOUS data services are supported
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3359 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3360 if (bearer_cap->sync_async NEQ M_CC_ASYNCHRONOUS OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3361 bearer_cap->sig_access_prot NEQ M_CC_SIAP_I440) /* no async service */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3362 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3363 switch (bearer_cap->conn_elem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3364 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3365 case M_CC_CE_TRANSPA:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3366 neg_bearer_cap->compress = M_CC_COMP_NO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3367 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3368 case M_CC_CE_TRANSPA_PREF: /* set to trans async */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3369 case M_CC_CE_RLP_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3370 *negotiation = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3371 neg_bearer_cap->conn_elem = M_CC_CE_TRANSPA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3372 neg_bearer_cap->structure = M_CC_STRC_UNSTRUCTURED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3373 neg_bearer_cap->compress = M_CC_COMP_NO;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3374 if (bearer_cap->modem_type EQ M_CC_MT_AUTO)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3375 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3376 switch (bearer_cap->user_rate) /* set the modem type matching a data rate */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3377 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3378 case MNCC_UR_0_3_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3379 neg_bearer_cap->modem_type = M_CC_MT_V21;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3380 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3381 case MNCC_UR_1_2_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3382 neg_bearer_cap->modem_type = M_CC_MT_V22;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3383 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3384 case MNCC_UR_2_4_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3385 neg_bearer_cap->modem_type = M_CC_MT_V22BIS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3386 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3387 case MNCC_UR_4_8_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3388 neg_bearer_cap->modem_type = M_CC_MT_V32;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3389 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3390 case MNCC_UR_9_6_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3391 case MNCC_UR_12_0_KBIT_TRANS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3392 case MNCC_UR_14_4_KBIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3393 neg_bearer_cap->modem_type = M_CC_MT_V32;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3394 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3395 case MNCC_UR_1_2_KBIT_V23:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3396 neg_bearer_cap->modem_type = M_CC_MT_V23;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3397 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3398 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3399 neg_bearer_cap->modem_type = M_CC_MT_UNDEF;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3400 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3401 } /* END OF set the modem type matching the data rate */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3402 } /* END OF if (bearer_cap->modem_type EQ M_CC_MT_AUTO) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3403 if ((bearer_cap->user_rate EQ M_CC_UR_9_6_KBIT) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3404 (bearer_cap->user_rate EQ M_CC_UR_12_0_KBIT_TRANS))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3405 neg_bearer_cap->intermed_rate = M_CC_IR_16_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3406 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3407 neg_bearer_cap->intermed_rate = M_CC_IR_8_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3408 neg_bearer_cap->v_l2_ident = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3409 neg_bearer_cap->v_user_inf_l2_prot = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3410 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3411
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3412 case M_CC_CE_RLP: /* non-transparent service */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3413 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3414
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3415 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3416 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3417 } /* end SWITCH (bearer_cap->conn_elem)*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3418 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3419 * copy important parameters
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3420 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3421 *found = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3422
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3423 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3424 * this is a first step to 14.4
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3425 * if FNUR is available, use this as user rate
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3426 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3427 /* Implements Measure# 21 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3428 cc_set_neg_bearer_cap(bearer_cap, bcpara, neg_bearer_cap, cc_data->mscap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3429 bcpara->flow_control = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3430 bcpara->conn_elem = MNCC_CONN_ELEM_TRANS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3431
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3432 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3433 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3434 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3435
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3436 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3437 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3438 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3439 | STATE : code ROUTINE : cc_check_non_transparent_async |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3440 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3441
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3442 PURPOSE : Checks an incoming bearer capability for the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3443 non-transparent asynchronous data service.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3444
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3445 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3446
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3447 GLOBAL void cc_check_non_transparent_async (UBYTE * found,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3448 const T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3449 T_M_CC_bearer_cap * neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3450 T_MNCC_bcpara * bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3451 BOOL * negotiation )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3452 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3453 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3454 TRACE_FUNCTION ("cc_check_non_transparent_async()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3455
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3456 if (*found EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3457 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3458 memcpy (neg_bearer_cap, bearer_cap, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3459
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3460 if (FldGet (cc_data->mscap.datCap1, RLPSup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3461 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3462 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3463 * check only if non-transparent M_CC_ASYNCHRONOUS data services are supported
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3464 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3465 if (bearer_cap->sync_async NEQ M_CC_ASYNCHRONOUS OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3466 bearer_cap->sig_access_prot NEQ M_CC_SIAP_I440) /* no async service */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3467 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3468 switch (bearer_cap->conn_elem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3469 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3470 case M_CC_CE_RLP:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3471 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3472
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3473 case M_CC_CE_RLP_PREF: /* set to non-trans async */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3474 case M_CC_CE_TRANSPA_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3475 *negotiation = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3476 neg_bearer_cap->conn_elem = M_CC_CE_RLP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3477 neg_bearer_cap->structure = M_CC_STRC_SERV_DATA_INTEG;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3478 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3479 * TA 29.2.3.5 Negotiation of intermediate rate
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3480 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3481 if ((bearer_cap->nirr EQ M_CC_NIRR_DATA) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3482 (bearer_cap->user_rate <= M_CC_UR_4_8_KBIT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3483 neg_bearer_cap->intermed_rate = M_CC_IR_8_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3484 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3485 neg_bearer_cap->intermed_rate = M_CC_IR_16_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3486 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3487
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3488 case M_CC_CE_TRANSPA: /* transparent service */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3489 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3490
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3491 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3492 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3493 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3494
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3495 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3496 * copy important parameters
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3497 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3498 *found = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3499 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3500 * this is a first step to 14.4
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3501 * if FNUR is available, use this as user rate
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3502 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3503 /* Implements Measure# 21 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3504 cc_set_neg_bearer_cap(bearer_cap, bcpara, neg_bearer_cap, cc_data->mscap);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3505 bcpara->conn_elem = MNCC_CONN_ELEM_NON_TRANS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3506
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3507 if (bearer_cap->v_user_inf_l2_prot)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3508 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3509 switch (bearer_cap->user_inf_l2_prot)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3510 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3511 case M_CC_L2_ISO6429:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3512 bcpara->flow_control = MNCC_INBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3513 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3514 case M_CC_L2_COPFC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3515 bcpara->flow_control = MNCC_NO_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3516 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3517 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3518 bcpara->flow_control = MNCC_OUTBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3519 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3520 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3521 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3522 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3523 bcpara->flow_control = MNCC_OUTBAND_FLOW_CONTROL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3524 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3525 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3526 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3527
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3528 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3529 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3530 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3531 | STATE : code ROUTINE : cc_check_transparent_fax |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3532 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3533
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3534 PURPOSE : Checks an incoming bearer capability for the transparent
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3535 fax service.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3536
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3537 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3538
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3539 GLOBAL UBYTE cc_check_transparent_fax (const T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3540 T_M_CC_bearer_cap * neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3541 T_MNCC_bcpara * bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3542 BOOL * negotiation )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3543 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3544 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3545 TRACE_FUNCTION ("cc_check_transparent_fax()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3546
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3547 memcpy (neg_bearer_cap, bearer_cap, sizeof (T_M_CC_bearer_cap));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3548
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3549 if (FldGet (cc_data->mscap.datCap1, TFaxSup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3550 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3551 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3552 * check only if transparent fax services are supported
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3553 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3554
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3555 if (bearer_cap->sync_async NEQ M_CC_SYNCHRONOUS OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3556 bearer_cap->sig_access_prot NEQ M_CC_SIAP_I440) /* no async service */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3557 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3558
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3559 switch (bearer_cap->conn_elem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3560 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3561 case M_CC_CE_TRANSPA:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3562 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3563
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3564 case M_CC_CE_TRANSPA_PREF: /* set to trans async */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3565 case M_CC_CE_RLP_PREF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3566 *negotiation = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3567 neg_bearer_cap->conn_elem = M_CC_CE_TRANSPA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3568 neg_bearer_cap->structure = M_CC_STRC_UNSTRUCTURED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3569 if ((bearer_cap->user_rate EQ M_CC_UR_9_6_KBIT) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3570 (bearer_cap->user_rate EQ M_CC_UR_12_0_KBIT_TRANS))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3571 neg_bearer_cap->intermed_rate = M_CC_IR_16_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3572 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3573 neg_bearer_cap->intermed_rate = M_CC_IR_8_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3574 neg_bearer_cap->v_l2_ident = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3575 neg_bearer_cap->v_user_inf_l2_prot = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3576 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3577
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3578
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3579 case M_CC_CE_RLP: /* non-transparent service */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3580 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3581 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3582 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3583
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3584 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3585 * copy important parameters
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3586 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3587 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3588 * this is a first step to 14.4
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3589 * if FNUR is available, use this as user rate
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3590 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3591 if (bearer_cap->v_fnur AND (bearer_cap->fnur EQ M_CC_FNUR_14400))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3592 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3593 bcpara->rate = 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3594 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3595 * define acceptable channel codings
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3596 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3597 neg_bearer_cap->acc = M_CC_ACC_96;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3598 if (FldGet (cc_data->mscap.datCap2, DHRSup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3599 neg_bearer_cap->acc += M_CC_ACC_48;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3600 if (FldGet (cc_data->mscap.datCap1, Dr14_4Sup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3601 neg_bearer_cap->acc += M_CC_ACC_144;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3602 neg_bearer_cap->v_acc = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3603
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3604 neg_bearer_cap->intermed_rate = M_CC_IR_16_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3605
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3606 neg_bearer_cap->v_mTch = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3607 neg_bearer_cap->mTch = M_CC_MAX_TCH_1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3608 neg_bearer_cap->v_uimi = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3609 neg_bearer_cap->uimi = M_CC_UIMI_NOT_ALLOWED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3610 neg_bearer_cap->modem_type_2 = M_CC_OTHER_MODEM_TYPE_V34;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3611 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3612 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3613 bcpara->rate = bearer_cap->user_rate;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3614 bcpara->bearer_serv = MNCC_BEARER_SERV_FAX;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3615 bcpara->conn_elem = MNCC_CONN_ELEM_TRANS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3616 bcpara->stop_bits = bearer_cap->num_stop;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3617 bcpara->data_bits = bearer_cap->num_data;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3618 bcpara->parity = bearer_cap->parity;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3619 bcpara->modem_type = bearer_cap->modem_type;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3620 bcpara->flow_control = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3621 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3622 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3623 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3624 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3625
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3626
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3627 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3628 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3629 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3630 | STATE : code ROUTINE : cc_build_facility_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3631 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3632
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3633 PURPOSE : Forwards a facility information element to the upper layer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3634 if available.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3635
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3636 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3637
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3638
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3639
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3640 GLOBAL void cc_build_facility_ind (UBYTE context,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3641 UBYTE valid,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3642 const T_M_CC_facility * facility )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3643 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3644 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3645 TRACE_FUNCTION ("cc_build_facility_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3646
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3647 if (valid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3648 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3649 PALLOC (facility_ind, MNCC_FACILITY_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3650
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3651 facility_ind->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3652 facility_ind->fac_context = context;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3653 facility_ind->fac_inf.l_fac = facility->c_fac<<3;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3654 facility_ind->fac_inf.o_fac = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3655
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3656 memcpy (facility_ind->fac_inf.fac, facility->fac, facility->c_fac);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3657
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3658 PSENDX (MMI, facility_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3659 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3660 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3661
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3662
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3663 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3664 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3665 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3666 | STATE : code ROUTINE : cc_build_user_user_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3667 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3668
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3669 PURPOSE : Forwards a user user information element to the upper layer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3670 if available.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3671
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3672 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3673
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3674
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3675 GLOBAL void cc_build_user_user_ind (UBYTE context,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3676 UBYTE valid,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3677 T_M_CC_user_user * user_user )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3678 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3679 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3680 TRACE_FUNCTION ("cc_build_user_user_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3681
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3682 if (valid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3683 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3684 PALLOC (user_ind, MNCC_USER_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3685
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3686 user_ind->ti = cc_data->ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3687 user_ind->user.info_context = context;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3688 user_ind->user.c_info = user_user->c_info;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3689 user_ind->user.pd = user_user->pd;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3690 memcpy (user_ind->user.info, user_user->info,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3691 MNCC_USER_LEN);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3692
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3693 PSENDX (MMI, user_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3694 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3695 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3696
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3697 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3698 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3699 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3700 | STATE : code ROUTINE : cc_check_capabilities |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3701 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3702
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3703 PURPOSE : The mobile station capabilities are checked against the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3704 upper layer request.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3705
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3706 RETURN: TRUE if bearer capabilities supported.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3707 FALSE if bearer capabilitis not supported.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3708
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3709 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3710
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3711 GLOBAL UBYTE cc_check_capabilities (const T_MNCC_bcpara * bcpara)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3712 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3713 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3714 TRACE_FUNCTION ("cc_check_capabilities()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3715
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3716 cc_csf_ms_cap ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3717 switch (bcpara->bearer_serv)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3718 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3719 case MNCC_BEARER_SERV_SYNC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3720 if (bcpara->conn_elem EQ MNCC_CONN_ELEM_TRANS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3721 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3722 return (FldGet (cc_data->mscap.datCap1, TSynSup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3723 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3724 return (FldGet (cc_data->mscap.datCap1, NTSynSup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3725
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3726 case MNCC_BEARER_SERV_ASYNC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3727 if (bcpara->conn_elem EQ MNCC_CONN_ELEM_TRANS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3728 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3729 return (FldGet (cc_data->mscap.datCap1, AsySup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3730 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3731 return (FldGet (cc_data->mscap.datCap1, RLPSup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3732
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3733 case MNCC_BEARER_SERV_PAD_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3734 if (bcpara->conn_elem EQ MNCC_CONN_ELEM_TRANS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3735 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3736 return (FldGet (cc_data->mscap.datCap2,TPadSup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3737 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3738 return (FldGet (cc_data->mscap.datCap2,NTPadSup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3739
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3740 case MNCC_BEARER_SERV_PACKET_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3741 if (bcpara->conn_elem EQ MNCC_CONN_ELEM_TRANS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3742 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3743 return (FldGet (cc_data->mscap.datCap2, TPackSup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3744 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3745 return (FldGet (cc_data->mscap.datCap2, NTPackSup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3746
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3747 case MNCC_BEARER_SERV_FAX:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3748 if (bcpara->conn_elem EQ MNCC_CONN_ELEM_TRANS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3749 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3750 return (FldGet (cc_data->mscap.datCap1, TFaxSup) NEQ 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3751 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3752 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3753
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3754 case MNCC_BEARER_SERV_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3755 case MNCC_BEARER_SERV_AUX_SPEECH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3756 case MNCC_BEARER_SERV_SPEECH_CTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3757 case MNCC_BEARER_SERV_AUX_SPEECH_CTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3758 return cc_voice_capability ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3759
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3760 case MNCC_BEARER_SERV_NOT_PRES:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3761 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3762
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3763 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3764 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3765 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3766 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3767
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3768 #ifdef SIM_TOOLKIT
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3769 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3770 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3771 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3772 | STATE : code ROUTINE : cc_bearer_cap_code |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3773 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3774
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3775 PURPOSE: Checks the compatibility of bearer capabilities.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3776 Bearer capabilities in paramter form are tranformed to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3777 coded form.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3778
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3779 RETURN VALUE: ERROR if bearer caps not supported, otherwise OKAY
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3780 Special case of no bearer caps given is OKAY.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3781
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3782 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3783
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3784 GLOBAL UBYTE cc_bearer_cap_code (const T_MNCC_bcpara *bcpara, T_MNCC_bcconf *bcconf )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3785 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3786 T_M_CC_bearer_cap bearer_cap; /* A lot of stuff on stack */ /*lint !e813 length info of struct*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3787 UBYTE dummy_service;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3788 UBYTE *ptr;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3789 UBYTE result;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3790
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3791 TRACE_FUNCTION ("cc_bearer_cap_code()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3792
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3793 /* Clear output */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3794 bcconf->bc_len = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3795 memset (bcconf->bc, 0x00, sizeof (bcconf->bc));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3796
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3797 if (bcpara->bearer_serv EQ MNCC_BEARER_SERV_NOT_PRES)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3798 return OKAY; /* No BC in -> no BC out */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3799
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3800 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3801 * Check requested upper layer capabilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3802 * against mobile station capabilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3803 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3804 if (cc_check_capabilities (bcpara) EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3805 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3806 /* MS doesn´t support the requested services */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3807 return ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3808 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3809
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3810 cc_build_bc (&bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3811 &dummy_service, /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3812 bcpara);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3813
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3814 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3815 * Build a U_EMERGE_SETUP message which contains the coded bearer caps.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3816 * The U_EMERGE_SETUP message was chosen because it is the most
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3817 * simple message containing bearer capabilities. In the next step,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3818 * read the coded bearer capabilities directly from this message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3819 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3820 CCD_START;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3821 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3822 MCAST (emerge_setup, U_EMERGE_SETUP);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3823 PALLOC_MSG (data, MMCM_DATA_REQ, U_EMERGE_SETUP);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3824
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3825 emerge_setup->msg_type = U_EMERGE_SETUP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3826 emerge_setup->v_bearer_cap = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3827 emerge_setup->bearer_cap = bearer_cap;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3828 data->sdu.o_buf = CC_ENCODE_OFFSET;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3829 ccd_codeMsg (CCDENT_CC,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3830 UPLINK,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3831 (T_MSGBUF *) &data->sdu,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3832 (UBYTE *) emerge_setup,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3833 NOT_PRESENT_8BIT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3834
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3835 ptr = &data->sdu.buf[CC_ENCODE_OFFSET >> 3];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3836
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3837 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3838 * The following is an internal check and not expected to fail.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3839 * Short circuit evaluation, ANSI C guarantees execution order LR here.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3840 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3841 if ((*ptr++ EQ U_EMERGE_SETUP) AND /* Message type */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3842 (*ptr++ EQ 0x04) AND /* BC tag (0x04) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3843 (*ptr <= sizeof (bcconf->bc))) /* Field length not exceeded */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3844 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3845 result = OKAY;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3846 bcconf->bc_len = *ptr++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3847 memcpy (bcconf->bc, ptr, bcconf->bc_len);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3848 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3849 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3850 result = ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3851 PFREE (data);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3852 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3853 CCD_END;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3854
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3855 return result;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3856 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3857
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3858 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3859 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3860 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3861 | STATE : code ROUTINE : cc_bearer_cap_decode |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3862 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3863
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3864 PURPOSE: Checks the compatibility of bearer capabilities.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3865 Bearer capabilities in coded form are tranformed to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3866 parameter form.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3867
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3868 RETURN VALUE: ERROR if bearer caps not supported
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3869 Special case of empty bearer caps given is OKAY
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3870
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3871 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3872
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3873 GLOBAL UBYTE cc_bearer_cap_decode (const T_MNCC_bcconf *bcconf, T_MNCC_bcpara *bcpara )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3874
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3875 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3876 T_M_CC_bearer_cap dummy_neg_bearer_cap; /* A lot of stuff on stack */ /*lint !e813 length info of struct*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3877 UBYTE dummy_service;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3878 BOOL dummy_negotiation;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3879 UBYTE * start_ptr;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3880 UBYTE * ptr;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3881 BYTE result;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3882
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3883 TRACE_FUNCTION ("cc_bearer_cap_decode()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3884
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3885 bcpara->bearer_serv = MNCC_BEARER_SERV_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3886
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3887 if (bcconf->bc_len EQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3888 return OKAY; /* No BC in -> no BC out */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3889
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3890 CCD_START
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3891 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3892 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3893 * Build a U_EMERGE_SETUP message which contains the coded bearer caps.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3894 * The U_EMERGE_SETUP message was chosen because it is the most
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3895 * simple message containing bearer capabilities.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3896 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3897 MCAST (emerge_setup, U_EMERGE_SETUP);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3898 PALLOC_MSG (data, MMCM_DATA_REQ, U_EMERGE_SETUP);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3899 data->sdu.o_buf = CC_ENCODE_OFFSET;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3900 ptr = start_ptr = &data->sdu.buf[CC_ENCODE_OFFSET >> 3];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3901 *ptr++ = U_EMERGE_SETUP; /* Message type field */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3902 *ptr++ = 0x04; /* BC tag */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3903 *ptr++ = bcconf->bc_len; /* BC length */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3904 memcpy(ptr, bcconf->bc, bcconf->bc_len);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3905 ptr += bcconf->bc_len;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3906 data->sdu.l_buf = (ptr - start_ptr) << 3;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3907
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3908 result = ERROR;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3909 if ((ccd_decodeMsg (CCDENT_CC,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3910 UPLINK,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3911 (T_MSGBUF *) &data->sdu,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3912 (UBYTE *)_decodedMsg,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3913 NOT_PRESENT_8BIT) EQ ccdOK))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3914 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3915 if (emerge_setup->v_bearer_cap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3916 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3917 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3918 * CCD was able to decode emergency setup message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3919 * and contained BC. Check them.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3920 * This also transforms coded form into parameter form as desired
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3921 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3922 if(emerge_setup->bearer_cap.v_rad_chan_req)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3923 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3924 bcpara->rad_chan_req = emerge_setup->bearer_cap.rad_chan_req ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3925 TRACE_EVENT_P1 ("bcpara->rad_chan_req = %d", bcpara->rad_chan_req );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3926 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3927 result = cc_check_bc (&emerge_setup->bearer_cap, /* Input BC */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3928 &dummy_neg_bearer_cap, /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3929 bcpara, /* BC parameter */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3930 &dummy_service, /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3931 &dummy_negotiation ); /* Not used */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3932 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3933 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3934 PFREE (data);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3935 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3936 CCD_END;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3937
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3938 return result;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3939 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3940
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3941 #endif /*SIM_TOOLKIT */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3942
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3943 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3944 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3945 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3946 | STATE : code ROUTINE : cc_build_llc |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3947 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3948
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3949 PURPOSE : Define low layer compat depending on the bearer capability
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3950 parameters.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3951
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3952 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3953
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3954 static const UBYTE BC_LLC_USERRATE[8] =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3955 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3956 /* reserved 0000 */ 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3957 /* 0.3 0001 */ 0x1E,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3958 /* 1.2 0010 */ 2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3959 /* 2.4 0011 */ 3,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3960 /* 4.8 0100 */ 5,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3961 /* 9.6 0101 */ 8,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3962 /* 12.0 transp 0110 */ 0x1F,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3963 /* 12.0/75 0111 */ 0x18
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3964 };
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3965
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3966 static const UBYTE BC_LLC_INTERMED_RATE [4] =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3967 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3968 /* not used 00 */ 0x00,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3969 /* not used 01 */ 0x00,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3970 /* 8 kbit/s 10 */ 0x20,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3971 /* 16 kbit/s 11 */ 0x40
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3972 };
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3973
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3974 GLOBAL void cc_build_llc (UBYTE * v_low_layer_compat,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3975 T_M_CC_low_layer_comp * low_layer_compat,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3976 const T_M_CC_bearer_cap * bc)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3977 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3978 TRACE_FUNCTION ("cc_build_llc()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3979
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3980 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3981 * infoelement shall be included
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3982 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3983 *v_low_layer_compat = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3984
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3985 if (bc->trans_cap EQ M_CC_ITC_DIGITAL_UNRESTRICTED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3986 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3987 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3988 * length is fixed with 6 bytes
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3989 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3990 low_layer_compat->c_llc = 6;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3991
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3992 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3993 * octet 3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3994 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3995 * bit 8 : extension = 1 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3996 * bit 76 : coding standard = GSM (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3997 * bit 54321 : information transfer capability = UDI (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3998 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3999 low_layer_compat->llc[0] = 0x88;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4000
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4001 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4002 * octet 4
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4003 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4004 * bit 8 : extension = 1 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4005 * bit 76 : transfer mode = circuit (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4006 * bit 54321 : information transfer rate = 64 kbit/s (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4007 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4008 low_layer_compat->llc[1] = 0x90;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4009
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4010 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4011 * octet 5
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4012 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4013 * bit 8 : extension = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4014 * bit 76 : layer 1 identifier = 1 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4015 * bit 54321 : user information layer 1 protocol = V.110 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4016 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4017 low_layer_compat->llc[2] = 0x21;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4018
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4019 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4020 * octet 5a
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4021 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4022 * bit 8 : extension = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4023 * bit 7 : sync/async -> from BC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4024 * BC LLC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4025 * M_CC_ASYNCHRONOUS 1 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4026 * M_CC_SYNCHRONOUS 0 0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4027 * bit 6 : negotiation = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4028 * bit 54321 : user rate -> from BC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4029 BC LLC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4030 0.3 0001 11110
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4031 1.2 0010 00010
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4032 2.4 0011 00011
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4033 4.8 0100 00101
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4034 9.6 0101 01000
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4035 12.0 transp 0110 11111
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4036 12.0/75 0111 11000
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4037 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4038
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4039 if (bc->sync_async)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4040 low_layer_compat->llc[3] = 0x40;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4041 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4042 low_layer_compat->llc[3] = 0x00;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4043
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4044 low_layer_compat->llc[3] += BC_LLC_USERRATE[bc->user_rate & 7];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4045
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4046 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4047 * octet 5b
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4048 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4049 * bit 8 : extension = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4050 * bit 76 : intermediate rate -> from BC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4051 * BC LLC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4052 * not used 00/01 00
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4053 * 8 kbit/s 10 01
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4054 * 16 kbit/s 11 10
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4055 * 32 kbit/s -- 11
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4056 * bit 5 : NIC/TX = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4057 * bit 4 : NIC/RX = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4058 * bit 3 : Flow Control on Tx = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4059 * bit 2 : Flow Control on Rx = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4060 * bit 1 : Spare = 0 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4061 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4062 low_layer_compat->llc[4] = BC_LLC_INTERMED_RATE[bc->intermed_rate];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4063
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4064 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4065 * octet 5c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4066 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4067 * bit 8 : extension = 1 (fixed)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4068 * bit 76 : number of stop bits -> BC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4069 * BC LLC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4070 * not used -- 00
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4071 * 1 bit 0 01
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4072 * 1.5 bits -- 10
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4073 * 2 bits 1 11
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4074 * bit 54 : number of data bits -> BC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4075 * BC LLC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4076 * not used 00
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4077 * 5 bits 01
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4078 * 7 bits 0 10
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4079 * 8 bits 1 11
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4080 * bit 321 : parity -> BC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4081 * BC LLC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4082 * odd 000 000
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4083 * even 010 010
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4084 * none 011 011
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4085 * forced to 0 100 100
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4086 * forced to 1 101 101
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4087 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4088 low_layer_compat->llc[5] = 0x80 + bc->parity;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4089
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4090 if (bc->num_stop)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4091 low_layer_compat->llc[5] += 0x60;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4092 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4093 low_layer_compat->llc[5] += 0x20;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4094
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4095 if (bc->num_data)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4096 low_layer_compat->llc[5] += 0x18;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4097 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4098 low_layer_compat->llc[5] += 0x10;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4099 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4100 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4101 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4102 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4103 * set length to zero -> not applicable
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4104 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4105 memset (low_layer_compat, 0, sizeof (T_M_CC_low_layer_comp));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4106 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4107 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4108
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4109 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4110 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4111 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4112 | STATE : code ROUTINE : cc_get_ss_diag |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4113 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4114
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4115 PURPOSE : Added for CQ23619: Extracts the supplementary diagnostic
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4116 from the disconnect indication if there a respective cause given.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4117 For further details see: TS 24.008 section 10.5.4.11 "NOTE 1"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4118 (This implementation follows version V3.19.0 (2004-06))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4119
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4120 IN: - curr_cause: current cause
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4121 - disconnect indication received by CC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4122 OUT:- ss_diag: ss diagnostic
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4123 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4124
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4125 GLOBAL UBYTE cc_get_ss_diag ( USHORT curr_cause,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4126 T_D_DISCONNECT * disc)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4127 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4128
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4129 UBYTE ss_diag = MNCC_SS_DIAG_NOT_PROVIDED; /* holds the ss diagnostic */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4130
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4131 TRACE_FUNCTION ("cc_get_ss_diag()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4132
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4133 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4134 * Only the following causes may also provide a supplementary diagnostic value
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4135 * - cause 17: User busy - MNCC_CAUSE_USER_BUSY
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4136 * - cause 29: Facility rejected - MNCC_CAUSE_FACILITY_REJECT
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4137 * - cause 34: No circuit/channel available - MNCC_CAUSE_NO_CHAN_AVAIL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4138 * - cause 50: Requested facility not subscribed - MNCC_CAUSE_FACILITY_UNSUBSCRIB
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4139 * - cause 55: Incoming call barred within the CUG - MNCC_CAUSE_BARRED_IN_CUG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4140 * - cause 69: Requested facility not implemented - MNCC_CAUSE_FACILITY_NOT_IMPLEM
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4141 * - cause 87: User not member of CUG - MNCC_CAUSE_USER_NOT_IN_CUG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4142 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4143 switch (curr_cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4144 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4145 case MNCC_CAUSE_USER_BUSY:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4146 case MNCC_CAUSE_FACILITY_REJECT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4147 case MNCC_CAUSE_NO_CHAN_AVAIL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4148 case MNCC_CAUSE_FACILITY_UNSUBSCRIB:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4149 case MNCC_CAUSE_BARRED_IN_CUG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4150 case MNCC_CAUSE_FACILITY_NOT_IMPLEM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4151 case MNCC_CAUSE_USER_NOT_IN_CUG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4152 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4153 * parse ss diagnostic, find details of encoding in TS 24.008
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4154 * section 10.5.4.11 "NOTE 1"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4155 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4156 if(disc->cc_cause.c_diag > 0) /* check count of diag elements */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4157 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4158 /* take the first byte, ignore the rest */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4159 ss_diag = disc->cc_cause.diag[0] & 0x7F;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4160 if (ss_diag EQ 0x7F)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4161 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4162 ss_diag = MNCC_SS_DIAG_NOT_PROVIDED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4163 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4164 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4165 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4166 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4167 /* force MNCC_SS_DIAG_NOT_PROVIDED return */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4168 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4169 } /* end of switch (curr_cause) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4170
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4171 return ss_diag;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4172
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4173 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4174 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4175 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4176 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4177 | STATE : code ROUTINE : cc_build_cause |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4178 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4179
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4180 PURPOSE : Added for CQ62853: We have to pass the cause byte stream as
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4181 sent by the network to ACI. This has been done to satisfy the SAT test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4182 case 27.22.4.16-2 for event download(CALL DISCONNECTED).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4183
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4184 IN: - decoded_cause_val: decoded cause value
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4185 OUT:- raw_cause_length: Number of bytes in raw_cause_bytes
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4186 raw_cause_bytes: Encoded bytes as in 24.008 v3.15.0 sec 10.5.4.11
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4187 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4188
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4189 GLOBAL UBYTE cc_build_cause (T_M_CC_cc_cause * decoded_cause_val,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4190 UBYTE * raw_cause_bytes)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4191 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4192
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4193 UBYTE cause_ix = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4194
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4195 TRACE_FUNCTION ("cc_build_cause()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4196
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4197 memset(raw_cause_bytes, 0, MNCC_MAX_CC_CAUSE_LENGTH);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4198
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4199 /* Fill the coding standard and the location fields */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4200 raw_cause_bytes[cause_ix] = (decoded_cause_val->cs << 5) | decoded_cause_val->loc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4201
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4202 if(decoded_cause_val->v_rec)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4203 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4204 /* ext bit is not set in the first byte. Move to the next byte */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4205 cause_ix++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4206 /* recommendation value is copied and ext bit is set */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4207 raw_cause_bytes[cause_ix++] = decoded_cause_val->rec | 0x80;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4208 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4209 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4210 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4211 /* If the recommendation field is not present, set the ext bit in the first byte*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4212 raw_cause_bytes[cause_ix] = raw_cause_bytes[cause_ix] | 0x80;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4213 cause_ix++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4214 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4215
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4216 /* Fill the cause value and set the ext bit */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4217 raw_cause_bytes[cause_ix++] = decoded_cause_val->cause | 0x80;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4218
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4219 /* Fill the diagnostics value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4220 if(decoded_cause_val->c_diag NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4221 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4222 memcpy (raw_cause_bytes + cause_ix,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4223 decoded_cause_val->diag,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4224 decoded_cause_val->c_diag);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4225 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4226
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4227 /* Return the number of bytes that have been filled */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4228 return (cause_ix + decoded_cause_val->c_diag);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4229 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4230
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4231
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4232 /* Implements Measure# 21 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4233 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4234 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4235 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4236 | STATE : code ROUTINE : cc_set_neg_bearer_cap |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4237 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4238
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4239 PURPOSE : Copy some bearer capabilities values
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4240 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4241
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4242 LOCAL void cc_set_neg_bearer_cap (const T_M_CC_bearer_cap * bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4243 T_MNCC_bcpara * bcpara,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4244 T_M_CC_bearer_cap * neg_bearer_cap,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4245 EF_MSCAP mscap)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4246 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4247
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4248 TRACE_FUNCTION ("cc_set_neg_bearer_cap()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4249
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4250 if (bearer_cap->v_fnur AND (bearer_cap->fnur EQ M_CC_FNUR_14400))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4251 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4252 bcpara->rate = MNCC_UR_14_4_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4253 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4254 * define acceptable channel codings
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4255 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4256 neg_bearer_cap->acc = M_CC_ACC_96;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4257 if (FldGet (mscap.datCap2, DHRSup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4258 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4259 neg_bearer_cap->acc += M_CC_ACC_48;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4260 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4261 if (FldGet (mscap.datCap1, Dr14_4Sup))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4262 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4263 neg_bearer_cap->acc += M_CC_ACC_144;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4264 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4265 neg_bearer_cap->v_acc = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4266
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4267 neg_bearer_cap->v_intermed_rate = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4268 neg_bearer_cap->intermed_rate = M_CC_IR_16_KBIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4269 neg_bearer_cap->v_mTch = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4270 neg_bearer_cap->mTch = M_CC_MAX_TCH_1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4271 neg_bearer_cap->v_uimi = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4272 neg_bearer_cap->uimi = M_CC_UIMI_NOT_ALLOWED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4273 neg_bearer_cap->v_waiur = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4274 neg_bearer_cap->waiur = M_CC_WAIUR_14400;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4275 neg_bearer_cap->v_modem_type_2 = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4276 neg_bearer_cap->modem_type_2 = M_CC_OTHER_MODEM_TYPE_V34;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4277 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4278 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4279 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4280 bcpara->rate = bearer_cap->user_rate;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4281 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4282
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4283 /* ITC - Information Transfer Capability */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4284 if (bearer_cap->trans_cap == M_CC_ITC_DIGITAL_UNRESTRICTED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4285 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4286 bcpara->transfer_cap = MNCC_ITC_UDI;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4287 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4288 else if (bearer_cap->trans_cap == M_CC_ITC_AUDIO)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4289 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4290 bcpara->transfer_cap = MNCC_ITC_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4291 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4292 bcpara->bearer_serv = MNCC_BEARER_SERV_ASYNC;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4293 bcpara->stop_bits = bearer_cap->num_stop;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4294 bcpara->data_bits = bearer_cap->num_data;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4295 bcpara->parity = bearer_cap->parity;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4296
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4297 if (bearer_cap->modem_type_2 == M_CC_OTHER_MODEM_TYPE_V34)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4298 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4299 bcpara->modem_type = MNCC_MT_V34;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4300 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4301 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4302 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4303 bcpara->modem_type = bearer_cap->modem_type;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4304 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4305
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4306 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4307
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4308 /* Implements Measure# 15 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4309 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4310 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4311 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4312 | STATE : code ROUTINE : cc_fill_struct |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4313 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4314
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4315 PURPOSE : Copy values from setup_ind to setup_cnf
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4316 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4317
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4318 LOCAL void cc_fill_struct (UBYTE is_num_pres,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4319 T_MNCC_calling_party *calling_party,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4320 const T_M_CC_calling_num *calling_num)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4321 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4322
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4323 if (is_num_pres)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4324 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4325 calling_party->ton = calling_num->ton;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4326 calling_party->npi = calling_num->npi;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4327 calling_party->c_num = calling_num->c_num;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4328 memcpy (calling_party->num, calling_num->num,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4329 calling_num->c_num);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4330 if (calling_num->v_screen)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4331 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4332 calling_party->screen = calling_num->screen;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4333 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4334 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4335 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4336 calling_party->screen = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4337 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4338 if (calling_num->v_present)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4339 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4340 calling_party->present = calling_num->present;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4341 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4342 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4343 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4344 calling_party->present = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4345 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4346 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4347 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4348 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4349 calling_party->ton = MNCC_TON_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4350 calling_party->npi = MNCC_NPI_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4351 calling_party->present = MNCC_PRES_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4352 calling_party->screen = MNCC_SCREEN_IND_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4353 calling_party->c_num = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4354 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4355 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4356
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4357
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4358 /* Implements Measure# 24, 25 and 26 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4359 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4360 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4361 | PROJECT : GSM-PS (6147) MODULE : CC_CFK |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4362 | STATE : code ROUTINE : cc_fill_sub_struct |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4363 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4364
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4365 PURPOSE : Copy values from setup_cnf to setup_ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4366 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4367
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4368 LOCAL void cc_fill_sub_struct (UBYTE is_num_pres,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4369 T_MNCC_connected_number_sub *connected_number_sub,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4370 const T_M_CC_connect_subaddr *connect_subaddr)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4371 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4372 if (is_num_pres)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4373 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4374 connected_number_sub->tos = connect_subaddr->tos;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4375 connected_number_sub->odd_even =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4376 connect_subaddr->odd_even;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4377 connected_number_sub->c_subaddr =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4378 connect_subaddr->c_subaddr;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4379 memcpy (connected_number_sub->subaddr,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4380 connect_subaddr->subaddr, MNCC_SUB_LENGTH);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4381 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4382 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4383 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4384 connected_number_sub->tos = NOT_PRESENT_8BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4385 connected_number_sub->c_subaddr = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4386 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4387 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4388 #endif