1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project : GSM-PS (8410)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : MM_CSF
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose : This Modul defines the functions for the csf
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | capability of the module Mobility Management.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #ifndef MM_CSF_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #define MM_CSF_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 #define ENTITY_MM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 /*==== INCLUDES ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #if defined (NEW_FRAME)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include <string.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include <stdlib.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include <stddef.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "typedefs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "pcm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "pconst.cdg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "mconst.cdg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "message.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "ccdapi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "vsi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "custom.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 #include "gsm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "prim.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "cnf_mm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "mon_mm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #include "pei.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "tok.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "mm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 #include "cl_imei.h" /* IMEI common library */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 #include <string.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 #include <stdlib.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 #include <stddef.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 #include "stddefs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 #include "pcm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 #include "pconst.cdg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 #include "mconst.cdg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 #include "message.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 #include "ccdapi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 #include "custom.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 #include "gsm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 #include "prim.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 #include "cnf_mm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 #include "mon_mm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 #include "vsi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 #include "pei.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 #include "tok.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 #include "mm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 #include "cl_imei.h" /* IMEI common library */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 /*==== EXPORT =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 /*==== PRIVAT =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 /*==== VARIABLES ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 /*==== FUNCTIONS ==================================================*/
|
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 * -------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 * Procedures
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 * -------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 | PROJECT : GSM-PS (6147) MODULE : MM_CSF |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 | STATE : code ROUTINE : csf_read_imei |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 GLOBAL void csf_read_imei (T_imsi_struct *imei_struct)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 UBYTE buf[CL_IMEI_SIZE];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 TRACE_FUNCTION ("csf_read_imei()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 imei_struct->v_mid = V_MID_PRES;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 imei_struct->id_type = 2; /*TYPE_IMEI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 imei_struct->tmsi_dig = 0L;
|
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 IMEISV from IMEI common library
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 cl_get_imeisv(CL_IMEI_SIZE, buf, CL_IMEI_GET_SECURE_IMEI);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 imei_struct->id[0] = (buf [0] >> 4) & 0x0F; /* TAC 8 byte */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 imei_struct->id[1] = buf [0] & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 imei_struct->id[2] = (buf [1] >> 4) & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 imei_struct->id[3] = buf [1] & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 imei_struct->id[4] = (buf [2] >> 4) & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 imei_struct->id[5] = buf [2] & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 imei_struct->id[6] = (buf [3] >> 4) & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 imei_struct->id[7] = buf [3] & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 imei_struct->id[8] = (buf [4] >> 4) & 0x0F; /* SNR 6 byte */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 imei_struct->id[9] = buf [4] & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 imei_struct->id[10] = (buf [5] >> 4) & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 imei_struct->id[11] = buf [5] & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 imei_struct->id[12] = (buf [6] >> 4) & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 imei_struct->id[13] = buf [6] & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 imei_struct->id[14] = (buf [7] >> 4) & 0x0F; /* SV 2 byte */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 imei_struct->id[15] = buf [7] & 0x0F;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 TRACE_EVENT_P8("MM INFO IMEI: TAC %1x%1x%1x%1x%1x%1x%1x%1x",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 imei_struct->id[0], imei_struct->id[1],
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 imei_struct->id[2], imei_struct->id[3],
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 imei_struct->id[4], imei_struct->id[5],
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 imei_struct->id[6], imei_struct->id[7]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 TRACE_EVENT_P6("MM INFO IMEI: SNR %1x%1x%1x%1x%1x%1x",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 imei_struct->id[8], imei_struct->id[9],
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 imei_struct->id[10], imei_struct->id[11],
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 imei_struct->id[12], imei_struct->id[13]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 TRACE_EVENT_P2("MM INFO IMEI: SV %1x%1x", imei_struct->id[14],
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 imei_struct->id[15]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 | PROJECT : GSM-PS (6147) MODULE : MM_CSF |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 | STATE : code ROUTINE : csf_read_mobile_class_1 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 PURPOSE : Read classmark 1.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 GLOBAL void csf_read_mobile_class_1 (T_mob_class_1 *mob_class_1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 * The classmarks got from RR are valid after RR becomes active.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 * That applies to the case of simulation too, because RR checks the existence
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 * and validity of the RF capabilities before filling the structure and read
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 * it as necessary.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 #if 1
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 EXTERN UBYTE rr_csf_get_classmark1 (T_mob_class_1 *mob_class_1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 rr_csf_get_classmark1 (mob_class_1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 UBYTE version;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 UBYTE buf[SIZE_EF_CLASS2];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 int result;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 TRACE_FUNCTION ("csf_read_mobile_class_1()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 memset (mob_class_1, 0, sizeof (T_mob_class_1));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 result = pcm_ReadFile ((UBYTE *)EF_CLASS2_ID, SIZE_EF_CLASS2, buf, &version);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 TRACE_EVENT_P1 ("Mobile Class 1: %02X", buf[0]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 TRACE_EVENT_P1 ("Result = %d", result);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 /* mob_class_1->spare_1 = GET_BITS (buf[0], 7, 1); */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 mob_class_1->rev_lev = GET_BITS (buf[0], 5, 2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 mob_class_1->es_ind = GET_BITS (buf[0], 4, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 mob_class_1->a5_1 = GET_BITS (buf[0], 3, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 mob_class_1->rf_pow_cap = GET_BITS (buf[0], 0, 3);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 #endif /* else, #ifndef WIN32 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 | PROJECT : GSM-PS (6147) MODULE : MM_CSF |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 | STATE : code ROUTINE : csf_read_mobile_class_2 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 PURPOSE : Read classmark 2. Power may not be valid as this is
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 delivered by RR after cell selection appropriately for
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 the selected band.
|
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 GLOBAL void csf_read_mobile_class_2 (T_mob_class_2 *mob_class_2)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 * The classmarks got from RR are valid after RR becomes active.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 * That applies to the case of simulation too, because RR checks the existence
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 * and validity of the RF capabilities before filling the structure and read
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 * it as necessary.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 #if 1
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 EXTERN UBYTE rr_csf_get_classmark2 (T_mob_class_2 *mob_class_2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 rr_csf_get_classmark2 (mob_class_2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 UBYTE version;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 UBYTE buf[SIZE_EF_CLASS2];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 int result;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 TRACE_FUNCTION ("csf_read_mobile_class_2()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 memset (mob_class_2, 0, sizeof (T_mob_class_2));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 result = pcm_ReadFile ((UBYTE *)EF_CLASS2_ID, SIZE_EF_CLASS2, buf, &version);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 TRACE_EVENT_P3 ("Mobile Class 2: %02X %02X %02X", buf[0], buf[1], buf[2]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 TRACE_EVENT_P1 ("Result = %d", result);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 /* mob_class_2->spare_1 = GET_BITS (buf[0], 7, 1); */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 mob_class_2->rev_lev = GET_BITS (buf[0], 5, 2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 mob_class_2->es_ind = GET_BITS (buf[0], 4, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 mob_class_2->a5_1 = GET_BITS (buf[0], 3, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 mob_class_2->rf_pow_cap = GET_BITS (buf[0], 0, 3);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 /* mob_class_2->spare_2 = GET_BITS (buf[1], 7, 1); */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 mob_class_2->ps = GET_BITS (buf[1], 6, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 mob_class_2->ss_screen = GET_BITS (buf[1], 4, 2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 mob_class_2->mt_pp_sms = GET_BITS (buf[1], 3, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 mob_class_2->vbs = GET_BITS (buf[1], 2, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 mob_class_2->vgcs = GET_BITS (buf[1], 1, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 mob_class_2->egsm = GET_BITS (buf[1], 0, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 /* mob_class_2->class3 = GET_BITS (buf[2], 7, 1); */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 mob_class_2->class3 = SUPPORTED;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 /* mob_class_2->spare_3 = GET_BITS (buf[2], 6, 1); */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 mob_class_2->lcsva = GET_BITS (buf[2], 5, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 mob_class_2->ucs2_treat = GET_BITS (buf[2], 4, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 mob_class_2->solsa = GET_BITS (buf[2], 3, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 mob_class_2->cmsp = GET_BITS (buf[2], 2, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 mob_class_2->a5_3 = GET_BITS (buf[2], 1, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 mob_class_2->a5_2 = GET_BITS (buf[2], 0, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 #endif /* else, #ifndef WIN32 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 /* N950 Memory Optimization - Implements Measure #39*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 /* Removed unused Function*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250
|