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 :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4 | Modul :
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 : Decoding of Air Interface Messages.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 18 +-----------------------------------------------------------------------------
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 #ifndef RR_FORC_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 22 #define RR_FORC_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 23
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 24 #define ENTITY_RR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 25
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 <stdlib.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 30 #include <stddef.h> /* offsetof */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 31 #include "typedefs.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 32 #include "pcm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 33 #include "pconst.cdg"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 34 #include "mconst.cdg"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 35 #include "message.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 36 #include "ccdapi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 37 #include "vsi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 38 #include "custom.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 39 #include "gsm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 40 #include "prim.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 41 #include "tok.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 42 #include "rr.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 43 #include "rr_em.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 44
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 45 /*==== EXPORT =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 46
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 47 /*==== PRIVAT =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 48
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 49 /*==== VARIABLES ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 50
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 51
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 52 /*==== FUNCTIONS ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 53
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 54
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 55
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 56 LOCAL void for_unitdata_ind_sys_info_5_5bis(T_SI_TYPE si_type, T_MPH_UNITDATA_IND *mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 57 UBYTE *ba_index, BUF_neigh_cell_desc *neigh_cell_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 58 T_LIST *list,T_VOID_STRUCT *sys_info_5_5bis);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 59
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 60 LOCAL void for_unitdata_ind_sys_info_2_2bis(T_SI_TYPE si_type, T_MPH_UNITDATA_IND *mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 61 BUF_neigh_cell_desc *neigh_cell_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 62 T_LIST *list, T_VOID_STRUCT *sys_info_2_2bis);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 63
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 64 LOCAL void for_unitdata_ind_si3_si4(T_SI_TYPE si_type, T_MPH_UNITDATA_IND *mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 65 T_loc_area_ident *loc_area_ident,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 66 T_VOID_STRUCT *sys_info_3_4);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 67 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 68 * -------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 69 * PRIMITIVE Processing functions
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 70 * -------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 71 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 72
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 | PROJECT : GSM-PS (6147) MODULE : RR_FOR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 76 | STATE : code ROUTINE : for_dl_data_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 77 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 78
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 79 PURPOSE : Process the primitive DL_DATA_IND received from RR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 80
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 81 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 82
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 83 GLOBAL void for_dl_data_ind (T_DL_DATA_IND *dl_data_ind_orig)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 84 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 85 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 86 UBYTE pd;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 87 UBYTE ti;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 88 UBYTE mt;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 89 U8 *payload;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 90 U16 length;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 91
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 92 #if defined FF_EOTD
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 93 UBYTE other_than_applic = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 94 #endif /* FF_EOTD */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 95
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 96 PPASS(dl_data_ind_orig, dl_data_ind, DL_DATA_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 97
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 98 TRACE_FUNCTION ("for_dl_data_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 100 if (dl_data_ind->sdu.l_buf < 16)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 101 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 102 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 103 * message too short, Ignore the message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 104 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 105 PFREE (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 106 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 107 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 108 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 109 * get protocol discriminator and transaction identifier
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 110 * from the message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 111 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 112 GET_PD (dl_data_ind->sdu, pd);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 113 GET_TI (dl_data_ind->sdu, ti);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 114
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 115 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 116 * check the protocol discriminator.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 117 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 118 switch (pd)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 119 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 120 case PD_TST:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 121 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 122 * Test messages are handled in RR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 123 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 124 if (ti NEQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 125 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 126 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 127 * The skip-indicator (equal to transaction identifier in higher layer)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 128 * must be set to 0, else ignore the message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 129 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 130 PFREE (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 131 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 132 }
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 * For test messages the handling is directly coded in RR without CCD.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 136 * Get the message type:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 137 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 138 ccd_decodeByte (dl_data_ind->sdu.buf, (USHORT)(dl_data_ind->sdu.o_buf+8),8,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 139 &mt);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 140
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 141 switch (mt)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 142 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 143 case OPEN_LOOP_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 144 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 145 * Open a TCH loop
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 146 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 147 dat_for_open_loop_cmd (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 148 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 149
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 150 case CLOSE_TCH_LOOP_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 151 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 152 * Close a TCH loop
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 153 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 154 dat_for_close_loop_cmd (dl_data_ind, dl_data_ind->sdu.buf[
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 155 (dl_data_ind->sdu.o_buf+16)>>3]);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 156 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 157
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 158 case TEST_INTERFACE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 159 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 160 * Handling of the test interface message for DAI purposes.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 161 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 162 dat_for_test_interface (dl_data_ind, dl_data_ind->sdu.buf[
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 163 (dl_data_ind->sdu.o_buf+16)>>3]);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 164 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 165
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 166 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 167 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 168 * Unknown message type, Ignore the message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 169 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 170 PFREE (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 171 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 172 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 173 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 174
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 175 case PD_RR:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 176 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 177 * RR Messages
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 178 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 179 if (ti NEQ 0)
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 * The skip-indicator (equal to transaction identifier in higher layer)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 183 * must be set to 0, else ignore the message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 184 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 185 PFREE (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 186 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 187 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 188
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 189 payload = &(dl_data_ind->sdu.buf[0]); /*Beginning of the buffer */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 190 payload += (dl_data_ind->sdu.o_buf) >> 3; /* Plus offset (bytes) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 191
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 192 length = BYTELEN ( dl_data_ind->sdu.l_buf ); /* Length (bytes) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 193
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 194
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 195 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 196 * modify length and offset of the incoming message toskip protocol
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 197 * discriminator and transaction identifier. CCD starts with the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 198 * message type.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 199 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 200
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 201 dl_data_ind->sdu.l_buf -= 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 202 dl_data_ind->sdu.o_buf += 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 203
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 204 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 205 * clean the error field and the output of CCD.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 206 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 207 memset (&rr_data->ms_data.error, 0, sizeof (T_ERROR));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 208 memset (_decodedMsg, 0, MAX_MSTRUCT_LEN_RR);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 209
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 210 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 211 * decode the message with CCD.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 212 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 213 if (ccd_decodeMsg (CCDENT_RR, DOWNLINK,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 214 (T_MSGBUF *)&dl_data_ind->sdu,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 215 _decodedMsg, NOT_PRESENT_8BIT) NEQ ccdOK)
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 * CCD has detected an error
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 219 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 220 USHORT parlist[6];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 221 UBYTE ccd_err;
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 * get the first detected error from CCD.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 225 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 226 memset (parlist,0, sizeof (parlist));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 227 ccd_err = ccd_getFirstError (CCDENT_RR, parlist);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 228
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 229 do
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 230 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 231 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 232 * Error Handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 233 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 234 switch (ccd_err)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 235 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 236 case ERR_MSG_LEN: /* some exceeds entire message length */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 237 case ERR_COMPREH_REQUIRED: /* Comprehension required */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 238 case ERR_MAND_ELEM_MISS: /* Mandatory elements missing */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 239 if((_decodedMsg[0] EQ D_CHAN_REL ) AND (ccd_err EQ ERR_MAND_ELEM_MISS) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 240 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 241 break; /* actions same as normal release */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 242 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 243 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 244 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 245 dat_send_rr_status_msg (RRC_INVALID_MAN_INFO);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 246 PFREE (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 247 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 248 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 249
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 250 case ERR_INVALID_MID: /* unknown message type is handled below */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 251 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 252 case ERR_IE_NOT_EXPECTED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 253 case ERR_IE_SEQUENCE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 254 case ERR_MAX_IE_EXCEED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 255 case ERR_MAX_REPEAT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 256 TRACE_EVENT_P1("CCD error=%d ignored here", ccd_err);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 257 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 258 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 259 TRACE_ERROR("unknow CCD return");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 260 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 261 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 262 ccd_err = ccd_getNextError (CCDENT_RR, parlist);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 263 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 264 while (ccd_err NEQ ERR_NO_MORE_ERROR);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 265 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 266
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 267 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 268 * depending on the message type
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 269 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 270
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 271 RR_BINDUMP (payload,length,ARFCN_NOT_PRESENT,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 272 FRAME_NUM_NOT_PRESENT,DOWNLINK);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 273
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 274 switch (_decodedMsg[0])
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 275 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 276 case D_ASSIGN_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 277
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 278 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 279 * Assignment command message to start an intracell
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 280 * handover. Check the message content and configure layer 1.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 281 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 282
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 283
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 284 for_check_assign_cmd (dl_data_ind, (T_D_ASSIGN_CMD *)_decodedMsg);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 285 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 286
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 287 case D_CHAN_REL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 288 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 289 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 290 * channel release message to release a RR-connection.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 291 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 292 MCAST (chan_rel, D_CHAN_REL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 293
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 294
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 295
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 296 if (chan_rel->v_ba_range)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 297 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 298 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 299 * if the optional information element BA_RANGE is
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 300 * included check the frequencies.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 301 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 302 if (! for_check_ba_range (&chan_rel->ba_range))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 303 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 304 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 305 * set the optional element as not available if
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 306 * it contains a non-supported channel number.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 307 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 308 chan_rel->v_ba_range = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 309 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 310 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 311
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 312 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 313 * start processing of the channel release message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 314 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 315 dat_for_chan_rel (dl_data_ind, chan_rel);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 316 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 317 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 318
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 319 case D_CHAN_MOD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 320 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 321 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 322 * channel mode modify message to handle a
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 323 * changed channel mode.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 324 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 325 MCAST (chmod, D_CHAN_MOD); /* T_D_CHAN_MOD */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 326
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 327
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 328
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 329 switch( chmod->chan_desc.chan_type )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 330 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 331 case TCH_H_S0:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 332 case TCH_H_S1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 333 switch(chmod->chan_mode)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 334 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 335 case CM_DATA_12_0: /* data 12 k */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 336 case CM_DATA_6_0: /* data 6 k */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 337 case CM_DATA_3_6: /* data 3.6 k */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 338 case CM_DATA_14_4: /* data 14.4 k */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 339 if(FldGet(rr_data->mscap.datCap2, DHRSup) EQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 340 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 341 for_set_content_error (RRC_CHANNEL_MODE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 342 TRACE_EVENT("Half Rate Data NOT supported");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 343 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 344 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 345 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 346 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 347 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 348 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 349 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 350 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 351 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 352
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 353 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 354 * check the channel description
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 355 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 356 for_check_channel_descr (&chmod->chan_desc);
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 * check the channel mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 360 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 361 for_check_channel_mode (chmod->chan_mode);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 362
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 363 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 364 * if there any problem in channel mode or channel description
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 365 * the CHANNEL MODE ACK message will be sent with old channel type/mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 366 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 367 if(rr_data->ms_data.error.val EQ RRC_CHANNEL_MODE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 368 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 369 dat_for_chan_mod (dl_data_ind, chmod);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 370 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 371 }
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 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 375 * if the message contains a channel mode information element which indicating AMR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 376 * and the multirate configuration IEI exists, check the multirate configuration IEI.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 377 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 378
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 379 if ( (chmod->chan_mode EQ CM_AMR) AND (chmod->v_multirate_conf) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 380 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 381 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 382 * From 3GPP TS 04.08
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 383 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 384 * "Channel Description IE" in Channel Mode Modify
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 385 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 386 * This is sufficient to identify the channel in the case of a TCH/H + TCH/H configuration.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 387 * If used for a multislot configuration, the IE shall describe the present channel configuration with
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 388 * TN indicating the main channel.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 389 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 390 * The IE shall not indicate a new channel configuration when included in the Channel Mode Modify message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 391 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 392 for_check_multirate_conf( &chmod->multirate_conf, rr_data->sc_data.chan_desc.chan_type);
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 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 396 * From 3GPP TS 04.18 Sec. 3.4.6.1.3 Abnormal cases
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 397 * If any inconsistencies in MultiRate IEs then ignore the Channel Mode Modify
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 398 * and shall not send the CHANNEL MODE MODIFY
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 399 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 400 if(rr_data->ms_data.error.val EQ RRC_CHANNEL_MODE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 401 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 402 PFREE(dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 403 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 404 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 405
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 406 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 407 * process the message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 408 * There is no error in Channel Type, Channel Descr and no inconsistency in Multirate IEs
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 409 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 410
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 411 dat_for_chan_mod (dl_data_ind, chmod);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 412 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 413 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 414
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 415 case D_CIPH_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 416 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 417 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 418 * change the cipher mode setting
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 419 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 420
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 421 MCAST (ciph_cmd, D_CIPH_CMD); /* T_D_CIPH_CMD */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 422
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 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 426 * check the message content
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 427 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 428 for_check_cipher_mode_set (&ciph_cmd->ciph_mode_set);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 429
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 430 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 431 * process the message
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 dat_for_ciph_cmd (dl_data_ind, ciph_cmd);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 435 break;
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 case D_FREQ_REDEF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 439 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 440 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 441 * frequency redefinition message to change the frequency
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 442 * hopping list during a connection.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 443 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 444
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 445 /*lint -e813*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 446 T_LIST cell_chan_desc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 447
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 448 MCAST (freq_redef, D_FREQ_REDEF); /* T_D_FREQ_REDEF */
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
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 452 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 453 * check the channel description
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 454 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 455 for_check_channel_descr (&freq_redef->chan_desc);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 456
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 457 if (freq_redef->v_cell_chan_desc)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 458 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 459 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 460 * If the message contains a new cell channel description
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 461 * build a channel number list. This new list will replace
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 462 * the current list stored in RR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 463 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 464 for_create_channel_list ((T_f_range *)&freq_redef->cell_chan_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 465 &cell_chan_desc);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 466 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 467
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 468
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 469 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 470 * process the message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 471 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 472 dat_for_freq_redef (dl_data_ind, freq_redef, &cell_chan_desc);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 473 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 474 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 475
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 476 case D_HANDOV_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 477 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 478 * check the message content and process the handover message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 479 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 480
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 481
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 482
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 483 for_check_handov_cmd (dl_data_ind, (T_D_HANDOV_CMD *)_decodedMsg);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 484 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 485
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 486 case B_RR_STATUS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 487 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 488 * incoming status messages are ignored.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 489 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 490
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 491
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 492
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 493 EM_RR_STATUS_RECEIVED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 494
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 495 PFREE (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 496 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 497
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 498 case D_CLASS_ENQ:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 499 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 500 * the network requests the mobile station classmark.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 501 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 502
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 503
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 504
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 505 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 506 dat_for_class_enq (dl_data_ind, (T_D_CLASS_ENQ *)_decodedMsg);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 507 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 508 dat_for_class_enq (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 509 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 510 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 511 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 512 case D_PDCH_ASS_CMD:
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 dl_data_ind->sdu.l_buf += 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 517 dl_data_ind->sdu.o_buf -= 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 518 rr_data->gprs_data.tbf_est = TBF_EST_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 519 dat_rrgrr_data_ind (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 520 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 521
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 522 case D_CHANGE_ORDER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 523
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 524
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 525
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 526 dl_data_ind->sdu.l_buf += 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 527 dl_data_ind->sdu.o_buf -= 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 528 rr_data->gprs_data.tbf_est = TBF_EST_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 529 dat_rrgrr_change_order (dl_data_ind, (T_D_CHANGE_ORDER *)_decodedMsg);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 530 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 531 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 532 #if defined FF_EOTD
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 533 case B_APPLIC_INFO:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 534 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 535 MCAST (b_applic_info, B_APPLIC_INFO);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 536 dat_for_applic_info (b_applic_info);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 537 other_than_applic = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 538 PFREE(dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 539 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 540 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 541 #endif /* FF_EOTD */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 542
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 543 default: /* switch (_decodedMsg[0]) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 544 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 545 * Unknown or not supported message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 546 * Answer with a RR STATUS message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 547 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 548 dat_send_rr_status_msg (RRC_MSG_NOT_IMPL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 549
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 550 PFREE (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 551 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 552 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 553 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 554
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 555
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 556 default: /* switch (pd) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 557 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 558 * all other protocol discriminators are for upper layer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 559 * and will be forwarded to MM.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 560 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 561 dat_for_l3_data_ind (dl_data_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 562 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 563 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 564
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 565 #if defined FF_EOTD
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 566 if ( other_than_applic AND rr_data->applic_rx.state EQ SAI_SEGM )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 567 rr_applic_rx_init ( &rr_data->applic_rx );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 568 #endif /* FF_EOTD */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 569 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 570
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 571 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 572 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 573 | PROJECT : GSM-PS (6147) MODULE : RR_FOR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 574 | STATE : code ROUTINE : for_mph_unitdata_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 575 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 576
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 577 PURPOSE : Reception of unacknowledged message on BCCH, AGCH or PCH.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 578
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 579 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 580
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 581 GLOBAL void for_mph_unitdata_ind (T_MPH_UNITDATA_IND *mph_unitdata_ind_orig)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 582 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 583 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 584 T_LIST list; /* used for storing a neighbourcell list */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 585 UBYTE pd; /* Protocol discriminator */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 586 UBYTE ti; /* Transaction identifier (equal to skip indicator) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 587 U8 *payload;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 588 U16 length;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 589
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 590 PPASS(mph_unitdata_ind_orig, mph_unitdata_ind, MPH_UNITDATA_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 591
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 592 if (mph_unitdata_ind->sdu.l_buf < 16)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 593 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 594 PFREE (mph_unitdata_ind); /* message too short ignore message */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 595 return;
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 * Extract the protocol discriminator and the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 599 * skip indicator from the unacknowledged message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 600 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 601 GET_UI_PD (mph_unitdata_ind->sdu, pd);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 602 GET_UI_TI (mph_unitdata_ind->sdu, ti);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 603
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 604 payload = &(mph_unitdata_ind->sdu.buf[0]); /*Beginning of the buffer */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 605 payload += (mph_unitdata_ind->sdu.o_buf) >> 3; /*Plus offset (bytes) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 606
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 607 length = BYTELEN ( mph_unitdata_ind->sdu.l_buf ); /*Length (Bytes)*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 608
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 609 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 610 * Skip both the PD and TI in the message by modifying the pointer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 611 * in the sdu to the begin of the message type.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 612 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 613 mph_unitdata_ind->sdu.l_buf -= 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 614 mph_unitdata_ind->sdu.o_buf += 8;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 615
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 616 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 617 * The protocol discriminator must be RR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 618 * The skip indicator (TI) must be 0. (GSM 04.08, 10.3.1)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 619 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 620 if (! (pd EQ PD_RR AND ti EQ 0))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 621 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 622 PFREE (mph_unitdata_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 623 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 624 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 625
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 626 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 627 * Clear error field and CCD result field.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 628 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 629 memset (&rr_data->ms_data.error,0, sizeof(rr_data->ms_data.error));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 630 memset (_decodedMsg,0, sizeof(_decodedMsg));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 631
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 632 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 633 * Decode the message with CCD.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 634 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 635 if (ccd_decodeMsg (CCDENT_RR, DOWNLINK,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 636 (T_MSGBUF *)&mph_unitdata_ind->sdu,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 637 (UBYTE *)_decodedMsg,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 638 NOT_PRESENT_8BIT) NEQ ccdOK)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 639 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 640 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 641 * CCD has detected an error
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 642 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 643 UBYTE ccd_err;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 644 USHORT parlist [6];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 645
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 646 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 647 * get the first error
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 648 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 649 ccd_err = ccd_getFirstError (CCDENT_RR, parlist);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 650 do
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 651 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 652 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 653 * Error Handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 654 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 655 switch (ccd_err)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 656 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 657 case ERR_INVALID_MID: /* unknown message type */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 658 case ERR_MSG_LEN: /* some IE exceeds entire message length */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 659 case ERR_COMPREH_REQUIRED: /* comprehension required */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 660 case ERR_MAND_ELEM_MISS: /* Mandatory elements missing */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 661 TRACE_EVENT_P2("message with mt=%d ignored due to CCD error=%d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 662 mph_unitdata_ind->sdu.buf[mph_unitdata_ind->sdu.o_buf>>3],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 663 ccd_err);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 664 PFREE (mph_unitdata_ind); /* in unacknowledged mode ignore message */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 665 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 666
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 667 case ERR_IE_NOT_EXPECTED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 668 case ERR_IE_SEQUENCE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 669 case ERR_MAX_IE_EXCEED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 670 case ERR_MAX_REPEAT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 671 TRACE_EVENT_P1("CCD error=%d ignored here", ccd_err);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 672 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 673 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 674 TRACE_ERROR("unknown CCD return");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 675 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 676 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 677 ccd_err = ccd_getNextError (CCDENT_RR, parlist);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 678 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 679 while (ccd_err NEQ ERR_NO_MORE_ERROR);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 680 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 681
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 682 RR_BINDUMP (payload,length,mph_unitdata_ind->arfcn,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 683 mph_unitdata_ind->fn,DOWNLINK);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 684
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 685 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 686 * depending on the message type
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 687 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 688 switch (_decodedMsg[0])
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 689 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 690 case D_SYS_INFO_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 691 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 692 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 693 * system information type 1 message on BCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 694 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 695 MCAST (sys_info_1, D_SYS_INFO_1); /* T_D_SYS_INFO_1 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 696
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 697
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 698
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 699 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 700 * successfully received system info
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 701 * decrements the BCCH error counter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 702 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 703 if (rr_data->bcch_error)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 704 rr_data->bcch_error--;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 705
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 706 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 707 * create a cell channel description and store it
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 708 * for later use together with frequency hopping
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 709 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 710 for_create_channel_list ((T_f_range *)&sys_info_1->cell_chan_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 711 &list);
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 * Process the message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 715 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 716 att_for_sysinfo_type1 (mph_unitdata_ind->arfcn, sys_info_1, &list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 717 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 718 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 719
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 720 case D_SYS_INFO_2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 721 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 722 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 723 * System information type 2 message on BCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 724 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 725 /* Implements RR Clone findings #13 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 726
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 727 MCAST (sys_info_2, D_SYS_INFO_2); /* T_D_SYS_INFO_2 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 728
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 729
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 730 /* Implements RR Clone findings #13 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 731 for_unitdata_ind_sys_info_2_2bis(SI_TYPE_2, mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 732 &sys_info_2->neigh_cell_desc,&list,(T_VOID_STRUCT *)sys_info_2);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 733
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 734
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 735 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 736
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 737
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 738 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 739
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 740 case D_SYS_INFO_2BIS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 741 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 742 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 743 * system information type 2bis message on BCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 744 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 745 /* Implements RR Clone findings #13 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 746
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 747 MCAST (sys_info_2bis, D_SYS_INFO_2BIS); /* T_D_SYS_INFO_2BIS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 748
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 749
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 750 /* Implements RR Clone findings #13 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 751 for_unitdata_ind_sys_info_2_2bis(SI_TYPE_2BIS, mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 752 &sys_info_2bis->neigh_cell_desc,&list,(T_VOID_STRUCT *)sys_info_2bis);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 753 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 754
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 755
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 756 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 757
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 758 case D_SYS_INFO_2TER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 759 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 760 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 761 * system information type 2ter message on BCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 762 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 763
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 764 MCAST (sys_info_2ter, D_SYS_INFO_2TER); /* T_D_SYS_INFO_2TER */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 765
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 * successfully received system info
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 769 * decrements the BCCH error counter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 770 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 771 if (rr_data->bcch_error)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 772 rr_data->bcch_error--;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 773
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 774 switch (std)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 775 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 776 case STD_EGSM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 777 case STD_DUAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 778 case STD_DUAL_EGSM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 779 case STD_DUAL_US:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 780 #ifdef TI_PS_FF_QUAD_BAND_SUPPORT
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 781 case STD_850_1800:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 782 case STD_900_1900:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 783 case STD_850_900_1800:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 784 case STD_850_900_1900:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 785 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 786 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 787 * only for extended GSM and dualband
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 788 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 789 * extract the multiband parameter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 790 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 791 rr_data->ncell_mb = (sys_info_2ter->neigh_cell_desc.b_neigh_cell_desc
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 792 [sys_info_2ter->neigh_cell_desc.o_neigh_cell_desc>>3]
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 793 & 0x60) >> 5;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 794
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 795 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 796 * create a neighbourcell list
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 797 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 798 for_create_channel_list ((T_f_range *)&sys_info_2ter->neigh_cell_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 799 &list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 800
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 801 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 802 * process the message in the attachment process
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 803 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 804 att_for_sysinfo_type2ter (mph_unitdata_ind->arfcn, sys_info_2ter, &list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 805 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 806
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 807 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 808 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 809 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 810 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 811 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 812
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 813 #if defined (REL99) && defined (TI_PS_FF_EMR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 814 case D_SYS_INFO_2QUATER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 815 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 816 /* Process and store only for serving cell..Since SI-2quater
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 817 is required only for reporting*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 818 UBYTE index = att_get_index(mph_unitdata_ind->arfcn);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 819
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 820 if( index EQ SC_INDEX )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 821 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 822 MCAST (sys_info_2quater, D_SYS_INFO_2QUATER); /* T_D_SYS_INFO_2QUATER */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 823 if(for_process_si2quater(&sys_info_2quater->si_2qua_octets))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 824 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 825 for_send_enh_para(&rr_data->sc_data.emr_data_current);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 826 /*we received all the instances successfully, we no longer need to monitor SI-2quater*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 827 for_mon_si2quater_req(STOP_MON_BCCH);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 828 rr_data->sc_data.cd.si2quater_status = SI2QUATER_ACQ_COMP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 829 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 830 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 831 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 832 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 833 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 834
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 835 case D_SYS_INFO_3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 836 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 837 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 838 * create system information type 3 message on BCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 839 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 840
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 841 MCAST (sys_info_3, D_SYS_INFO_3); /* T_D_SYS_INFO_3 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 842
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 843
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 844
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 845 /* Implements RR Clone findings #16 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 846 for_unitdata_ind_si3_si4(SI_TYPE_3, mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 847 &sys_info_3->loc_area_ident,(T_VOID_STRUCT *)sys_info_3);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 848
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 849 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 850
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 851
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 852 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 853
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 854 case D_SYS_INFO_4:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 855 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 856 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 857 * system information type 4 message on BCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 858 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 859
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 860 MCAST (sys_info_4, D_SYS_INFO_4); /* T_D_SYS_INFO_4 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 861
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 862
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 863
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 864 /* Implements RR Clone findings #16 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 865 for_unitdata_ind_si3_si4(SI_TYPE_4, mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 866 &sys_info_4->loc_area_ident,(T_VOID_STRUCT *)sys_info_4);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 867 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 868
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 869
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 870 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 871
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 872 case D_SYS_INFO_5:
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 * system information type 5 message on SACCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 876 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 877 /* Implements RR Clone findings #4 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 878
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 879
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 880 MCAST (sys_info_5, D_SYS_INFO_5); /* T_D_SYS_INFO_5 */
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 /* Implements RR Clone findings #4 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 884 for_unitdata_ind_sys_info_5_5bis(SI_TYPE_5, mph_unitdata_ind,&rr_data->sc_data.ba_index,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 885 &sys_info_5->neigh_cell_desc, &list,(T_VOID_STRUCT *)sys_info_5);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 886 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 887
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 888
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 889
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 890 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 891
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 892 case D_SYS_INFO_5BIS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 893 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 894 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 895 * system information type 5bis message on SACCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 896 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 897 /* Implements RR Clone findings #4 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 898
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 899 MCAST (sys_info_5bis, D_SYS_INFO_5BIS); /* T_D_SYS_INFO_5BIS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 900
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 901
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 902 /* Implements RR Clone findings #4 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 903 for_unitdata_ind_sys_info_5_5bis(SI_TYPE_5BIS, mph_unitdata_ind,&rr_data->sc_data.ba_index,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 904 &sys_info_5bis->neigh_cell_desc,&list,(T_VOID_STRUCT *)sys_info_5bis);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 905 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 906
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 907 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 908
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 909 case D_SYS_INFO_5TER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 910 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 911 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 912 * system information type 5ter message on SACCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 913 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 914
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 915 MCAST (sys_info_5ter, D_SYS_INFO_5TER); /* T_D_SYS_INFO_5TER */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 916
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 917
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 918 switch (std)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 919 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 920 case STD_EGSM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 921 case STD_DUAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 922 case STD_DUAL_EGSM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 923 case STD_DUAL_US:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 924 #ifdef TI_PS_FF_QUAD_BAND_SUPPORT
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 925 case STD_850_1800:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 926 case STD_900_1900:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 927 case STD_850_900_1800:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 928 case STD_850_900_1900:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 929 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 930 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 931 * only for extended GSM and Dualband
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 932 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 933 * dont use ba index from 5ter, because R&S sends inconsistent
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 934 * BCCH data for multiband testcase 26.6.3.6
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 935 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 936 * extract multiband parameter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 937 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 938 rr_data->ncell_mb = (sys_info_5ter->neigh_cell_desc.b_neigh_cell_desc
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 939 [sys_info_5ter->neigh_cell_desc.o_neigh_cell_desc>>3]
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 940 & 0x60) >> 5;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 941
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 942 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 943 * create a neighbourcell list
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 944 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 945 for_create_channel_list ((T_f_range *)&sys_info_5ter->neigh_cell_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 946 &list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 947
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 948 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 949 * process the message in the attachment process
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 950 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 951 att_for_sysinfo_type5ter (mph_unitdata_ind->arfcn, &list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 952 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 953
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 954 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 955 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 956 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 957 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 958 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 959
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 960 case D_SYS_INFO_6:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 961 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 962 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 963 * system information type 6 message on SACCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 964 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 965
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 966 MCAST (sys_info_6, D_SYS_INFO_6); /* T_D_SYS_INFO_6 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 967
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 968
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 969 if (sys_info_6->loc_area_ident.c_mnc EQ 2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 970 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 971 /* Internally G23 uses always 3-digit-MNC */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 972 sys_info_6->loc_area_ident.c_mnc = SIZE_MNC;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 973 sys_info_6->loc_area_ident.mnc[2] = 0xf;
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 * process the message in the attachment process
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 978 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 979 att_for_sysinfo_type6 (mph_unitdata_ind->arfcn, sys_info_6);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 980 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 981 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 982
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 983 case D_SYS_INFO_7: /* T_D_SYS_INFO_7 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 984 case D_SYS_INFO_8: /* T_D_SYS_INFO_8 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 985 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 986 * successfully received system info
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 987 * decrements the BCCH error counter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 988 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 989
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 990
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 991 if (rr_data->bcch_error)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 992 rr_data->bcch_error--;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 993
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 994 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 995 * process the message in the attachment process
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 996 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 997 att_for_sysinfo_type7_8 (mph_unitdata_ind->arfcn, (T_D_SYS_INFO_8 *)_decodedMsg);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 998 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 999 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1000 case D_SYS_INFO_13: /* T_D_SYS_INFO_13 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1001 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1002
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1003 MCAST (sys_info_13, D_SYS_INFO_13);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1004
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1005
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1006 if (rr_data->bcch_error)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1007 rr_data->bcch_error--;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1008
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1009 att_for_sysinfo_type13 (mph_unitdata_ind, sys_info_13);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1010 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1011 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1012 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1013
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1014 case D_IMM_ASSIGN:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1015 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1016 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1017 * immediate assignment message on AGCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1018 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1019
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1020 MCAST (imm_assign, D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
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 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1024 * process the message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1025 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1026 dat_for_imm_assign (mph_unitdata_ind, imm_assign);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1027 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1028 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1029
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1030 case D_IMM_ASSIGN_EXT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1031 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1032 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1033 * immediate assignment extended message on AGCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1034 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1035
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1036 MCAST (imm_assign_ext, D_IMM_ASSIGN_EXT); /* T_D_IMM_ASSIGN_EXT */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1037
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1038
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1039 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1040 * process the message.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1041 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1042 dat_for_imm_assign_ext (mph_unitdata_ind, imm_assign_ext);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1043 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1044 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1045
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1046 case D_IMM_ASSIGN_REJ:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1047 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1048
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1049 MCAST (imm_assign_rej, D_IMM_ASSIGN_REJ); /* T_D_IMM_ASSIGN_REJ */
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 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1053 * process the message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1054 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1055 dat_for_imm_assign_rej (imm_assign_rej);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1056 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1057 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1058
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1059 case D_EXT_MEAS_ORDER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1060 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1061
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1062 MCAST (ext_meas_order, D_EXT_MEAS_ORDER);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1063
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1064
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1065
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1066 dat_for_ext_meas_order (ext_meas_order);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1067 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1068
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1069 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1070
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1071 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1072 TRACE_EVENT_P1 ( "unknown %02x", _decodedMsg[0] );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1073 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1074 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1075
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1076 PFREE (mph_unitdata_ind);
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 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1081 | PROJECT : GSM-PS (6147) MODULE : RR_FOR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1082 | STATE : code ROUTINE : for_rr_trace_message |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1083 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1084
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1085 PURPOSE : Function replaces RR_BINDUMP & TRACE_DATA_IND Macros
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
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1089 GLOBAL void for_rr_trace_message (UBYTE *payload, USHORT length,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1090 USHORT arfcn, ULONG fn, UBYTE direction)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1091 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1092 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1093
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1094 if(direction EQ DOWNLINK)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1095 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1096 switch(_decodedMsg[0])
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1097 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1098 case D_ASSIGN_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1099 TRACE_EVENT ( "ASSIGNMENT_COMMAND DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1100 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1101
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1102 case D_CHAN_REL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1103 TRACE_EVENT ( "CHANNEL_RELEASE DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1104 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1105
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1106 case D_CHAN_MOD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1107 TRACE_EVENT ( "CHANNEL_MODE_MODIFY DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1108 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1109
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1110 case D_CIPH_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1111 TRACE_EVENT ( "CIPHERING_COMMAND DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1112 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1113
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1114 case D_FREQ_REDEF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1115 TRACE_EVENT ( "FREQ RE-DEFINITION DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1116 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1117
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1118 case D_HANDOV_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1119 TRACE_EVENT ( "HANDOVER_COMMAND DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1120 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1121
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1122 case B_RR_STATUS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1123 TRACE_EVENT ( "RR_STATUS DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1124 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1125
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1126 case D_CLASS_ENQ:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1127 TRACE_EVENT ( "CLASSMARK_ENQUIRY DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1128 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1129
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1130 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1131 case D_PDCH_ASS_CMD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1132 TRACE_EVENT ( "PDCH_ASSIGNMENT_COMMAND DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1133 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1134
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1135 case D_CHANGE_ORDER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1136 TRACE_EVENT ( "CHANGE_ORDER DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1137 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1138 #endif /*GPRS*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1139
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1140 case D_SYS_INFO_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1141 TRACE_EVENT ( "SYS_INFO_1 DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1142 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1143
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1144 case D_SYS_INFO_2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1145 TRACE_EVENT ( "SYS_INFO_2 DL");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1146 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1147
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1148 case D_SYS_INFO_2BIS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1149 TRACE_EVENT ( "SYS_INFO_2BIS DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1150 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1151
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1152 case D_SYS_INFO_2TER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1153 TRACE_EVENT ( "SYS_INFO_2TER DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1154 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1155
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1156 case D_SYS_INFO_3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1157 TRACE_EVENT ( "SYS_INFO_3 DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1158 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1159
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1160 case D_SYS_INFO_4:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1161 TRACE_EVENT ( "SYS_INFO_4 DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1162 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1163
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1164 case D_SYS_INFO_5:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1165 TRACE_EVENT ( "SYS_INFO_5 DL");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1166 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1167
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1168 case D_SYS_INFO_5BIS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1169 TRACE_EVENT ( "SYS_INFO_5BIS DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1170 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1171
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1172 case D_SYS_INFO_5TER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1173 TRACE_EVENT ( "SYS_INFO_5TER DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1174 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1175
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1176 case D_SYS_INFO_6:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1177 TRACE_EVENT ( "SYS_INFO_6 DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1178 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1179
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1180 case D_SYS_INFO_7:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1181 TRACE_EVENT ( "SYS_INFO_7 DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1182 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1183
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1184 case D_SYS_INFO_8:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1185 TRACE_EVENT ( "SYS_INFO_8 DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1186 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1187
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1188 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1189 case D_SYS_INFO_13:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1190 TRACE_EVENT ( "SYS_INFO_13 DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1191 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1192 #endif/*GPRS*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1193
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1194 case D_IMM_ASSIGN:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1195 TRACE_EVENT ( "IMM_ASSIGN DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1196 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1197
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1198 case D_IMM_ASSIGN_EXT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1199 TRACE_EVENT ( "IMM_ASSIGN_EXT DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1200 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1201
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1202 case D_IMM_ASSIGN_REJ:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1203 TRACE_EVENT ( "IMM_ASSIGN_REJ DL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1204 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1205
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1206 case D_EXT_MEAS_ORDER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1207 TRACE_EVENT ( "EXT_MEAS_ORDER" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1208 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1209
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1210 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1211 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1212 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1213 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1214 else /*UPLINK*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1215 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1216 switch(_decodedMsg[0])
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1217 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1218 case U_PAG_RES:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1219 TRACE_EVENT ( "PAGING_RESPONSE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1220 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1221
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1222 case U_ASSIGN_FAIL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1223 TRACE_EVENT ( "ASSIGNMENT_FAILURE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1224 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1225
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1226 case U_CIPH_COMP:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1227 TRACE_EVENT ( "CIPHERING_COMPLETE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1228 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1229
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1230 case U_HANDOV_FAIL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1231 TRACE_EVENT ( "HANDOVER_FAILURE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1232 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1233
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1234 case U_HANDOV_COMP:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1235 TRACE_EVENT ( "HANDOVER_COMPLETE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1236 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1237
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1238 case U_ASSIGN_COMP:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1239 TRACE_EVENT ( "ASSIGNMENT_COMPLETE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1240 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1241
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1242 case U_CHAN_MOD_ACK:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1243 TRACE_EVENT ( "CHANNEL_MODE_ACKNOWLEDGE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1244 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1245
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1246 case U_MEAS_REP:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1247 TRACE_EVENT ( "MEASUREMENT_REPORT UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1248 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1249
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1250 case U_CLASS_CHNG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1251 TRACE_EVENT ( "CLASSMARK_CHANGE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1252 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1253
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1254 case D_RR_INIT_REQ:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1255 TRACE_EVENT ( "RR_INITIALISATION_REQ UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1256 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1257
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1258 case U_PART_REL_COMP:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1259 TRACE_EVENT ( "PARTIAL_RELEASE_COMPLETE UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1260 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1261
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1262 case U_GPRS_SUSP_REQ:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1263 TRACE_EVENT ( "GPRS_SUSPENSION_REQ UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1264 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1265
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1266 case U_EXT_MEAS_REPORT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1267 TRACE_EVENT ( "EXT_MEAS_REP UL" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1268 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1269
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1270 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1271 return;
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
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1275 TRACE_BINDUMP(rr_handle,TC_USER4,NULLSTRING,payload,length);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1276
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1277 TRACE_EVENT_P4 ("[%u] FN=%lu CR=%d SC=%d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1278 (arfcn)&ARFCN_MASK, fn,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1279 (short)(rr_data->nc_data[CR_INDEX].arfcn),
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1280 (short)(rr_data->nc_data[SC_INDEX].arfcn));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1281
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1282 }
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 : RR_FOR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1288 | STATE : code ROUTINE : for_unitdata_ind_sys_info_5_5bis |
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 : This function handles the system information type 5 and 5 bis
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1292 common parameters.
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 LOCAL void for_unitdata_ind_sys_info_5_5bis(T_SI_TYPE si_type, T_MPH_UNITDATA_IND *mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1296 UBYTE *ba_index,BUF_neigh_cell_desc *neigh_cell_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1297 T_LIST *list, T_VOID_STRUCT *sys_info_5_5bis )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1298 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1299
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1300 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1301 UBYTE old_index;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1302 UBYTE ncell_ext;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1303
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1304 TRACE_FUNCTION("for_unitdata_ind_sys_info_5_5bis()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1305
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1306 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1307 * store the current band allocation value
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1308 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1309 old_index = *ba_index;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1310
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1311 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1312 * extract the extension indication
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1313 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1314 ncell_ext = (neigh_cell_desc->b_neigh_cell_desc
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1315 [neigh_cell_desc->o_neigh_cell_desc>>3]
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1316 & 0x20) ? 1 : 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1317 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1318 * extract the new band allocation value
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1319 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1320 #if defined (REL99) && defined (TI_PS_FF_EMR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1321 rr_data->sc_data.new_ba_index = (neigh_cell_desc->b_neigh_cell_desc
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1322 [neigh_cell_desc->o_neigh_cell_desc>>3]
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1323 & 0x10) ? 1 : 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1324 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1325 *ba_index = (neigh_cell_desc->b_neigh_cell_desc
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1326 [neigh_cell_desc->o_neigh_cell_desc>>3]
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1327 & 0x10) ? 1 : 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1328 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1329
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1330 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1331 * create a neighbourcell list
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1332 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1333 for_create_channel_list ((T_f_range *)neigh_cell_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1334 list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1335
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1336 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1337 * process the message in the attachment process
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1338 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1339 att_for_sysinfo_type5_5bis (mph_unitdata_ind->arfcn, list,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1340 old_index, ncell_ext,si_type);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1341 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1342
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1343 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1344 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1345 | PROJECT : GSM-PS (6147) MODULE : RR_FOR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1346 | STATE : code ROUTINE : for_unitdata_ind_sys_info_2_2bis |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1347 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1348
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1349 PURPOSE : This function handles the System Information 2 and 2bis common parameters
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 LOCAL void for_unitdata_ind_sys_info_2_2bis(T_SI_TYPE si_type, T_MPH_UNITDATA_IND *mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1354 BUF_neigh_cell_desc *neigh_cell_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1355 T_LIST *list, T_VOID_STRUCT *sys_info_2_2bis)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1356 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1357 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1358 UBYTE ncell_ext;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1359 #if defined (REL99) && defined (TI_PS_FF_EMR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1360 UBYTE ba_ind;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1361 UBYTE index;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1362 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1363
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1364 TRACE_FUNCTION("for_unitdata_ind_sys_info_2_2bis()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1365
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1366 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1367 * successfully received system info
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1368 * decrements the BCCH error counter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1369 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1370 if (rr_data->bcch_error)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1371 (rr_data->bcch_error)--;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1372
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1373 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1374 * extract the ncell extension flag. It indicates
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1375 * whether the neighbourcell description is complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1376 * or must be combined with the neighbourcell description
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1377 * of system information 2bis.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1378 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1379 ncell_ext = neigh_cell_desc->b_neigh_cell_desc
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1380 [neigh_cell_desc->o_neigh_cell_desc>>3]
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1381 & 0x20;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1382
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1383 #if defined (REL99) && defined (TI_PS_FF_EMR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1384 ba_ind = (neigh_cell_desc->b_neigh_cell_desc
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1385 [neigh_cell_desc->o_neigh_cell_desc>>3]
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1386 & 0x10) ? 1 : 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1387 index = att_get_index(mph_unitdata_ind->arfcn);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1388 /* Store BA_IND in appropriate context*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1389 for_update_ba_ind (index, ba_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1390 #endif
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 * create a neighbourcell list
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1394 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1395 for_create_channel_list ((T_f_range *)neigh_cell_desc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1396 list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1397 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1398 * process the message in the attachment process
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1399 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1400
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1401 att_for_sysinfo_type2_2bis (mph_unitdata_ind->arfcn, sys_info_2_2bis,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1402 list, ncell_ext, si_type);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1403 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1404
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1405 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1406 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1407 | PROJECT : GSM-PS (6147) MODULE : RR_FOR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1408 | STATE : code ROUTINE : for_unitdata_ind_si3_si4 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1409 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1410
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1411 PURPOSE : This function handles System information type 3 and 4
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1412 common parameters.
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 LOCAL void for_unitdata_ind_si3_si4(T_SI_TYPE si_type, T_MPH_UNITDATA_IND *mph_unitdata_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1416 T_loc_area_ident *loc_area_ident,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1417 T_VOID_STRUCT *sys_info_3_4)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1418
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1419 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1420 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1421 TRACE_FUNCTION("for_unitdata_ind_si3_si4()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1422
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1423 if (loc_area_ident->c_mnc EQ 2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1424 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1425 /* Internally G23 uses always 3-digit-MNC */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1426 loc_area_ident->c_mnc = SIZE_MNC;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1427 loc_area_ident->mnc[2] = 0xf;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1428 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1429
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1430 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1431 * successfully received system info
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1432 * decrements the BCCH error counter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1433 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1434 if (rr_data->bcch_error)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1435 (rr_data->bcch_error)--;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1436
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1437
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1438 if(si_type EQ SI_TYPE_4)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1439 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1440 if (((T_D_SYS_INFO_4 *)sys_info_3_4)->v_chan_desc)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1441 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1442 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1443 * If system information contains a CBCH channel
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1444 * description check the CBCH channel description
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1445 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1446 for_check_channel_descr (&((T_D_SYS_INFO_4 *)sys_info_3_4)->chan_desc);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1447
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1448 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1449 * Consistency check: If the CBCH channel description
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1450 * defines Frequency hopping but the mobile allocation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1451 * is not available, clear the CBCH channel description.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1452 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1453 if (((T_D_SYS_INFO_4 *)sys_info_3_4)->chan_desc.hop EQ TRUE AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1454 ((T_D_SYS_INFO_4 *)sys_info_3_4)->v_mob_alloc EQ FALSE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1455 ((T_D_SYS_INFO_4 *)sys_info_3_4)->v_chan_desc = FALSE ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1456 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1457 att_for_sysinfo_type4 (mph_unitdata_ind->arfcn, (T_D_SYS_INFO_4 *)sys_info_3_4);
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 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1461 * process the message in the attachment process
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1462 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1463 if(si_type EQ SI_TYPE_3)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1464 att_for_sysinfo_type3 (mph_unitdata_ind->arfcn, (T_D_SYS_INFO_3 *)sys_info_3_4);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1465
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1466 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1467
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1468 #if defined (REL99) && defined (TI_PS_FF_EMR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1469 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1470 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1471 | PROJECT : GSM-PS (6147) MODULE : RR_FOR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1472 | STATE : code ROUTINE : for_dl_short_unitdata_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1473 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1474
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1475 PURPOSE : Process the primitive DL_SHORT_UNITDATA_IND received from RR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1476
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1477 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1478
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1479 GLOBAL void for_dl_short_unitdata_ind (T_DL_SHORT_UNITDATA_IND *dl_short_unitdata_ind_orig)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1480 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1481 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1482 PPASS(dl_short_unitdata_ind_orig, short_unitdata_ind, DL_SHORT_UNITDATA_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1483 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1484 * Clear error field and CCD result field.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1485 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1486 memset (&rr_data->ms_data.error,0, sizeof(rr_data->ms_data.error));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1487 memset (_decodedMsg,0, sizeof(_decodedMsg));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1488
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1489 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1490 * Decode the message with CCD.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1491 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1492 * The protocol discriminator bit is implicitely checked when trying
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1493 * to decode the message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1494 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1495 if (ccd_decodeMsg (CCDENT_RR_SHORT, DOWNLINK,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1496 (T_MSGBUF *)&short_unitdata_ind->sdu,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1497 (UBYTE *)_decodedMsg,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1498 NOT_PRESENT_8BIT) NEQ ccdOK)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1499 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1500 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1501 * CCD has detected an error
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1502 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1503 UBYTE ccd_err;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1504 USHORT parlist [6];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1505
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1506 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1507 * get the first error
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1508 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1509 ccd_err = ccd_getFirstError (CCDENT_RR, parlist);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1510 do
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1511 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1512 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1513 * Error Handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1514 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1515 switch (ccd_err)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1516 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1517 case ERR_INVALID_MID: /* unknown message type */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1518 case ERR_MSG_LEN: /* some exceeds entire message length */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1519 case ERR_MAND_ELEM_MISS: /* Mandatory elements missing */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1520 TRACE_EVENT_P2("message with mt=%02x ignored due to CCD error=%d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1521 ((short_unitdata_ind->sdu.buf[short_unitdata_ind->sdu.o_buf>>3]) >> 2) & 0x3F,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1522 ccd_err);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1523 PFREE (short_unitdata_ind); /* in unacknowledged mode ignore message */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1524 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1525
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1526 case ERR_MAX_REPEAT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1527 TRACE_EVENT_P1("CCD error=%d ignored here", ccd_err);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1528 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1529 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1530 TRACE_ERROR("unknown CCD return");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1531 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1532 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1533 ccd_err = ccd_getNextError (CCDENT_RR, parlist);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1534 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1535 while (ccd_err NEQ ERR_NO_MORE_ERROR);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1536 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1537
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1538 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1539 * depending on the message type
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1540 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1541 switch (_decodedMsg[0])
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1542 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1543 case D_MEAS_INF:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1544 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1545 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1546 * add handling of message here:*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1547 MCAST (meas_inf, D_MEAS_INF);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1548 if (dat_for_meas_inf(meas_inf) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1549 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1550 /*Send Enhanced para to ALR*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1551 attf_send_enh_para_to_alr(rr_data->sc_data.emr_data_current.rep_type,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1552 &rr_data->sc_data.emr_data_current.enh_para);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1553 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1554 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1555 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1556 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1557 TRACE_EVENT_P1 ( "message %02x not supported", _decodedMsg[0] );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1558 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1559 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1560
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1561 PFREE (short_unitdata_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1562 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1563 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1564 #endif