annotate src/g23m-gsm/alr2/alr_gprs.c @ 303:f76436d19a7a default tip

!GPRS config: fix long-standing AT+COPS chance hanging bug There has been a long-standing bug in FreeCalypso going back years: sometimes in the AT command bring-up sequence of an ACI-only MS, the AT+COPS command would produce only a power scan followed by cessation of protocol stack activity (only L1 ADC traces), instead of the expected network search sequence. This behaviour was seen in different FC firmware versions going back to Citrine, and seemed to follow some law of chance, not reliably repeatable. This bug has been tracked down and found to be specific to !GPRS configuration, stemming from our TCS2/TCS3 hybrid and reconstruction of !GPRS support that was bitrotten in TCS3.2/LoCosto version. ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3 version and had to be pulled from TCS2 - but as it turns out, there is a new field in the MMR_REG_REQ primitive that needs to be set correctly, and that psa_mms.c module is the place where this initialization needed to be added.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 08 Jun 2023 08:23:37 +0000
parents 3a14ee9a9843
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 +-----------------------------------------------------------------------------
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 | Project : GSM-PS
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 | Modul : ALR_GPRS
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 +-----------------------------------------------------------------------------
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 | Copyright 2002 Texas Instruments Berlin, AG
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 | All rights reserved.
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 | This file is confidential and a trade secret of Texas
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 | Instruments Berlin, AG
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 | The receipt of or possession of this file does not convey
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 | any rights to reproduce or disclose its contents or to
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 | manufacture, use, or sell anything it may describe, in
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 | whole, or in part, without the specific written consent of
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 | Texas Instruments Berlin, AG.
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 +-----------------------------------------------------------------------------
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 | Purpose : This module implements the necessary funtionality
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 | for switching to and from GPRS mode and also
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 | the handling if determining if GPRS is supported
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 | by the cell.
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 +-----------------------------------------------------------------------------
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 #ifndef ALR_GPRS_C
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 #define ALR_GPRS_C
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 #define ENTITY_PL
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 /*==== INCLUDES ===================================================*/
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 #include <string.h>
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 #include <stdlib.h>
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 #include <ctype.h>
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 #include "typedefs.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 #include "pconst.cdg"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 #include "mconst.cdg"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 #include "message.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 #include "ccdapi.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 #include "vsi.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 #include "custom.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 #include "gsm.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 #include "prim.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 #include "cnf_alr.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 #include "mon_alr.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 #include "pei.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 #include "tok.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 #include "pcm.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 #include "alr_gprs.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 #define TRACING
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 #include "alr.h"
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 #define TRACING
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 #define TRACING
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 #if defined (TRACING)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 #define ALR_TRACE_GPRS(a) ALR_TRACE(a)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 #else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 #define ALR_TRACE_GPRS(a)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 #endif
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 LOCAL BOOL gprs_read_si13 (UBYTE si13_position);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 LOCAL void gprs_alr_nc_enter_ptm (void);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 LOCAL void gprs_alr_tb_meas_ind (T_TB_MEAS_IND* report);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 LOCAL const T_FUNC tb_table[] = {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 MAK_FUNC_0( gprs_alr_tb_meas_ind, TB_MEAS_IND ) /* 0 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 };
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 #define ONLY_BCC 7
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 static UBYTE gprs_support = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 | STATE : code ROUTINE : gprs_alr_get_table |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 void gprs_alr_get_table(const T_FUNC **tab, USHORT *n)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 *tab = tb_table;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 *n = TAB_SIZE (tb_table);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 | STATE : code ROUTINE : gprs_alr_mon_ctrl_req |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 * required for TESTMODE A/B
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 EXTERN UBYTE grlc_test_mode_active(void);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 void gprs_alr_mon_ctrl_req(T_MPH_MON_CTRL_REQ* ctrl_req)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 ALR_TRACE_GPRS("mon_ctrl_req");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 switch(GET_STATE(STATE_MA))
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 case MA_CELL_SELECTION:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 switch(ctrl_req->action)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 case START_MON_EBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 if(ctrl_req->si_to_read EQ UPDATE_SI13)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 PALLOC(req, MPHC_SCELL_EBCCH_REQ);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 req->schedule_array_size = 1;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 req->schedule_array[0].modulus = 8;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 req->schedule_array[0].relative_position = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 ma_scell_ebcch_req(req);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 case MA_CELL_RESELECTION:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 switch(ctrl_req->action)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 case START_MON_EBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 /*for SI13 reading control*/
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 if(ctrl_req->si_to_read EQ UPDATE_SI13)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 PALLOC(req, MPHC_SCELL_EBCCH_REQ);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 req->schedule_array_size = 1;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 req->schedule_array[0].modulus = 8;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 req->schedule_array[0].relative_position = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 ma_scell_ebcch_req(req);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 case MA_IDLE:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 switch(ctrl_req->action)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 case START_MON_EBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 /*for SI13 reading control*/
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 if(ctrl_req->si_to_read EQ UPDATE_SI13)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 PALLOC(req, MPHC_SCELL_EBCCH_REQ);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 req->schedule_array_size = 1;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 req->schedule_array[0].modulus = 8;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 req->schedule_array[0].relative_position = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 ma_scell_ebcch_req(req);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 case START_MON_NBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 USHORT si_mask = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 UBYTE tc = 0; /* refer to GSM Spec 05.02, clause 6.3.1.3 Mapping of BCCH data */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 UBYTE i,k;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 switch(ctrl_req->si_to_read)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 case UPDATE_SI13:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 gprs_read_si13(SI13_ON_NBCCH);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 case UPDATE_SI13_GSM:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 PALLOC(scell_bcch_req, MPHC_SCELL_NBCCH_REQ);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 scell_bcch_req->schedule_array_size = 1;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 scell_bcch_req->schedule_array[0].modulus = 8;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 scell_bcch_req->schedule_array[0].relative_position = 4;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 ma_scell_nbcch_req(scell_bcch_req);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 case UNSPECIFIED_SI:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 case COMPLETE_SI:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 ma_clean_sys_buffer (IND_ALL_IDLE_SI);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 ma_scell_full_nbcch();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 case UPDATE_SI1:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 si_mask = IND_SI_1;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 tc = (1<<0);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 case UPDATE_SI2_SI2BIS_OR_SI2TER:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 si_mask = IND_SI_2 | IND_SI_2BIS | IND_SI_2TER;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 tc = (1<<1) | (1<<4) | (1<<5);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 case UPDATE_SI3_SI4_SI7_OR_SI8:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 si_mask = IND_SI_3 | IND_SI_4;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 tc = (1<<2) | (1<<3) | (1<<6) | (1<<7);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 case UPDATE_SI9:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 if ( si_mask )
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 PALLOC(scell_bcch_req, MPHC_SCELL_NBCCH_REQ);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 k = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 scell_bcch_req->schedule_array_size = k;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 for ( i = 0; i < 8; i++ )
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 if ( (tc & (1 << i)) != 0 )
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 scell_bcch_req->schedule_array[k].modulus = 8;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 scell_bcch_req->schedule_array[k].relative_position = i;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 k++;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 scell_bcch_req->schedule_array_size = k;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 ma_clean_sys_buffer ( si_mask );
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 ma_scell_nbcch_req ( scell_bcch_req );
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 case STOP_MON_CCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 /* PBCCH is present, stop all activities */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 /*ma_stop_active_procs(STOP_PCH_READING | STOP_MEASUREMENTS);*/
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 pch_stop();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 /*alr_data->gprs_data.pbcch = 1;*/
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 case START_MON_CCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229 if(alr_data->gprs_data.pbcch EQ TRUE)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 pch_configure (NULL, PGM_NORMAL);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232 pch_save_pgm(PGM_NORMAL); /* reset saved pgm to REORG_CS */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 pch_start_ccch_req();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237 case LEAVING_PIM_PBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 /* we are about to enter PAM or PTM */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239 if(alr_data->gprs_data.pbcch EQ TRUE)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241 TRACE_EVENT("leave pim");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242 alr_data->gprs_data.pim = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243 pch_stop();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 cb_stop();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245 nc_suspend();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249 TRACE_EVENT("huch pim");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
252 case LEAVING_PAM_PBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
253 /* we are about to enter PTM or PIM */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
254 if(alr_data->gprs_data.pbcch EQ TRUE)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
255 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 /* do nothing, nothing should be active */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257 alr_data->gprs_data.pim = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258 TRACE_EVENT("leave pam");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
260 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
262 TRACE_EVENT("huch pam");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
265 case LEAVING_PTM_PBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266 /* we are about to enter PIM */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 if(alr_data->gprs_data.pbcch EQ TRUE)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 TRACE_EVENT("leave ptm");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270 alr_data->gprs_data.pim = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 pch_stop();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 nc_suspend();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273 alr_data->gprs_data.ptm = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
275 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277 TRACE_EVENT("huch ptm");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
279 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
280 case ENTER_PTM_PBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
281 if(alr_data->gprs_data.pbcch EQ TRUE)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
282 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283 alr_data->gprs_data.ptm = TRUE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
284 alr_data->gprs_data.pim = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
285 nc_start_pbcch();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
286 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
287 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288 case ENTER_PIM_PBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
289 if(alr_data->gprs_data.pbcch EQ TRUE)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
290 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
291 alr_data->gprs_data.pim = TRUE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
292 alr_data->gprs_data.ptm = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
293 nc_start_pbcch();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
294 cb_start();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
295 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
296 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
297 case ENTER_PTM_BCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
298 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
299 * convert counters and set NC process to IDLE
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
300 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
301 alr_data->gprs_data.pim = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
302 gprs_alr_nc_enter_ptm();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
303 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
304 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
305 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
306 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
307 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
308 case MA_PTM:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
309 switch(ctrl_req->action)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
310 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
311 case START_MON_EBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
312 /*for SI13 reading control*/
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
313 if(ctrl_req->si_to_read EQ UPDATE_SI13)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
314 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
315 PALLOC(req, MPHC_SCELL_EBCCH_REQ);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
316 req->schedule_array_size = 1;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
317 req->schedule_array[0].modulus = 8;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
318 req->schedule_array[0].relative_position = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
319
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
320 ma_scell_ebcch_req(req);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
321 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
322 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
323 case START_MON_NBCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
324 gprs_read_si13(SI13_ON_NBCCH);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
325 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
326 case START_MON_CCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
327 pch_configure (NULL, PGM_NORMAL);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
328 if(alr_data->gprs_data.pbcch EQ TRUE)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
329 pch_save_pgm(PGM_NORMAL); /* reset saved pgm to REORG_CS */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
330 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
331 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
332 pch_save_pgm(PGM_REORG_CS); /* reset saved pgm to REORG_CS */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
333 alr_data->pch_data.last_start_ccch_req.bs_pa_mfrms = NOT_PRESENT_8BIT;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
334 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
335
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
336 pch_start_ccch_req();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
337 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
338 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
339 * This case is necessary to stop ccch monitoring in MA_PTM
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
340 * This is required for Testmode A/B
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
341 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
342 case STOP_MON_CCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
343 if(grlc_test_mode_active())
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
344 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
345 ma_stop_active_procs(STOP_PCH_READING | STOP_MEASUREMENTS);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
346 TRACE_EVENT("STOP_MON_CCCH: TESTMODE A/B is running !!!!");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
347 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
348 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
349 case ENTER_PTM_BCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
350 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
351 * convert counters and set NC process to IDLE
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
352 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
353 gprs_alr_nc_enter_ptm();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
354 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
355 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
356 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
357 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
358 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
359
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
360 case MA_CON_EST:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
361 switch(ctrl_req->action)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
362 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
363 case ENTER_PTM_BCCH:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
364 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
365 * convert counters and set NC process to IDLE
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
366 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
367 gprs_alr_nc_enter_ptm();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
368 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
369 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
370 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
371 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
372 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
373 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
374 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
375 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
376 PFREE (ctrl_req);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
377
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
378 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
379 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
380 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
381 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
382 | STATE : code ROUTINE : gprs_alr_check_packet_paging
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
383 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
384
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
385 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
386
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
387 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
388
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
389 #define P1_REST_OCTET_LEN 5
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
390 #define GSM408_SPARE_PADDING 0x2b
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
391
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
392 /*lint -e749 (Info -- local enumeration constant not referenced) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
393 enum t_p1_ie { NLN = 0,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
394 PRIO1,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
395 PRIO2,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
396 GRCI,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
397 PPI1,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
398 PPI2
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
399 };
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
400 /*lint +e749 (Info -- local enumeration constant not referenced) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
401
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
402 #define NEXT_BIT(bit_pos,byte_pos) if( (bit_pos >>=1) == 0 ) { bit_pos=0x80; byte_pos++;}
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
403
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
404 LOCAL enum t_p1_ie p1_ie;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
405 LOCAL UBYTE element_size[PPI2+1] = {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
406 3,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
407 3,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
408 3,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
409 0,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
410 1,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
411 1
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
412 };
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
413
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
414
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
415
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
416 BOOL gprs_alr_check_packet_paging(UBYTE* frame, UBYTE which)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
417 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
418 UBYTE byte_pos = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
419 UBYTE bit = 0x80;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
420 UBYTE *frame_ptr = frame;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
421
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
422 ALR_TRACE_GPRS("check packet paging");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
423 /* point after Mobile Identity 1 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
424 frame = frame + 4 + frame[4] + 1;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
425 /* check if Mobile Identity 2 is present */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
426 if (frame[0] EQ 0x17)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
427 /* skip Mobile Identity 2 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
428 /* rest octets = start of mob 2 + len of mob 2 + TL */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
429 frame= frame + frame[1] + 2;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
430
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
431 if( frame - frame_ptr >= MAX_L2_FRAME_SIZE )
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
432 return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
433
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
434 /* decode packet paging */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
435 for(p1_ie = NLN; p1_ie < PPI2+1;p1_ie++)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
436 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
437 if((frame[byte_pos] & bit) EQ
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
438 (GSM408_SPARE_PADDING & bit))
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
439 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
440 /* L:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
441 * - element is not used
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
442 * - check next bit for next element
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
443 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
444 if(p1_ie NEQ (which+GRCI))
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
445 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
446 NEXT_BIT(bit,byte_pos);/*lint!e720 (Info -- Boolean test of assignment) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
447 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
448 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
449 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
450 ALR_TRACE_GPRS("no packet");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
451 return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
452 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
453 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
454 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
455 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
456 /* H:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
457 * - element is used
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
458 * - skip the bits used by this element
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
459 * except PPIx
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
460 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
461 ALR_TRACE_GPRS("element used");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
462 if(p1_ie NEQ (which+GRCI))
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
463 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
464 UBYTE i;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
465 for(i=element_size[p1_ie]+1; i > 0; i--)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
466 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
467 NEXT_BIT(bit,byte_pos);/*lint!e720 (Info -- Boolean test of assignment) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
468 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
469 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
470 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
471 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
472 ALR_TRACE_GPRS("packet paging");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
473 return TRUE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
474 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
475 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
476 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
477 return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
478 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
479
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
480 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
481 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
482 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
483 | STATE : code ROUTINE : gprs_alr_check_packet_paging_2
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
484 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
485
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
486 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
487
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
488 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
489
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
490 /*lint -e749 (Info -- local enumeration constant not referenced) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
491 enum t_p2_ie {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
492 p2CN3 = 0,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
493 p2NLN,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
494 p2PRIO1,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
495 p2PRIO2,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
496 p2PRIO3,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
497 p2PPI3
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
498 };
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
499 /*lint -e749 (Info -- local enumeration constant not referenced) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
500
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
501 LOCAL enum t_p2_ie p2_ie;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
502 LOCAL UBYTE p2_element_size[p2PPI3+1] = {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
503 2,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
504 3,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
505 3,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
506 3,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
507 3,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
508 1
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
509 };
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
510
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
511 BOOL gprs_alr_check_packet_paging_2(UBYTE* frame, UBYTE which)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
512 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
513 UBYTE byte_pos = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
514 UBYTE bit = 0x80;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
515
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
516 if(which NEQ 3) return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
517 ALR_TRACE_GPRS("check packet paging 2");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
518 frame += frame[13]+14;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
519 /* decode packet paging */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
520 for(p2_ie = p2CN3; p2_ie < p2PPI3+1;p2_ie++)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
521 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
522 if((frame[byte_pos] & bit) EQ
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
523 (GSM408_SPARE_PADDING & bit))
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
524 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
525 /* L:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
526 * - element is not used
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
527 * - check next bit for next element
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
528 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
529 if(p2_ie NEQ p2PPI3)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
530 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
531 NEXT_BIT(bit,byte_pos);/*lint!e720 (Info -- Boolean test of assignment) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
532 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
533 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
534 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
535 ALR_TRACE_GPRS("no packet");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
536 return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
537 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
538 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
539 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
540 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
541 /* H:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
542 * - element is used
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
543 * - skip the bits used by this element
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
544 * except PPIx
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
545 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
546 ALR_TRACE_GPRS("element used");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
547 if(p2_ie NEQ p2PPI3)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
548 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
549 UBYTE i;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
550 for(i=p2_element_size[p2_ie]+1; i > 0; i--)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
551 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
552 NEXT_BIT(bit,byte_pos);/*lint!e720 (Info -- Boolean test of assignment) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
553 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
554 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
555 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
556 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
557 ALR_TRACE_GPRS("packet paging");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
558 return TRUE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
559 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
560 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
561 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
562 return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
563 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
564
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
565 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
566 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
567 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
568 | STATE : code ROUTINE : gprs_alr_store_ptmsi |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
569 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
570
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
571 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
572
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
573 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
574 void gprs_alr_store_ptmsi(UBYTE indic, ULONG tmsi)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
575 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
576 alr_data->gprs_data.v_ptmsi = indic;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
577 alr_data->gprs_data.ptmsi = tmsi;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
578 TRACE_EVENT_P2("v: %d ptmsi: %x", indic, tmsi);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
579 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
580
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
581 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
582 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
583 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
584 | STATE : code ROUTINE : gprs_alr_store_ptmsi |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
585 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
586
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
587 PURPOSE : Store the candidate PTMSI
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
588
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
589 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
590 void gprs_alr_store_ptmsi2(UBYTE indic2, ULONG tmsi2)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
591 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
592 alr_data->gprs_data.v_ptmsi2 = indic2;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
593 alr_data->gprs_data.ptmsi2 = tmsi2;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
594 TRACE_EVENT_P2("v: %d ptmsi: %x", indic2, tmsi2);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
595 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
596
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
597 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
598 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
599 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
600 | STATE : code ROUTINE : gprs_alr_check_ptmsi |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
601 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
602
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
603 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
604
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
605 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
606 BOOL gprs_alr_check_ptmsi(ULONG ptmsi_pag)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
607 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
608
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
609 if((alr_data->gprs_data.v_ptmsi AND
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
610 alr_data->gprs_data.ptmsi EQ ptmsi_pag) OR
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
611 (alr_data->gprs_data.v_ptmsi2 AND
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
612 alr_data->gprs_data.ptmsi2 EQ ptmsi_pag))
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
613 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
614 ALR_TRACE_GPRS("ptmsi match");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
615 ma_pch_paging_ind (ID_PTMSI, CN_PACKET);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
616 return TRUE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
617 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
618
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
619 return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
620 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
621
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
622 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
623 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
624 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
625 | STATE : code ROUTINE : gprs_alr_check_downlink_assign
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
626 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
627
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
628 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
629
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
630 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
631 void gprs_alr_check_downlink_assign(T_MPHC_DATA_IND* data_ind)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
632 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
633 /* check dl bit */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
634 if(data_ind->l2_frame.content[3] & 0x20) {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
635 ma_send_unitdata (data_ind);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
636 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
637 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
638
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
639 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
640 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
641 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
642 | STATE : code ROUTINE : gprs_read_si13 |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
643 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
644
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
645 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
646
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
647 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
648 BOOL gprs_check_read_si13_only(UBYTE si13_position)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
649 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
650 if(gprs_support AND
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
651 si13_position EQ SI13_ON_NBCCH)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
652 return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
653 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
654 return TRUE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
655 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
656
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
657 LOCAL BOOL gprs_read_si13(UBYTE si13_position)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
658 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
659 ALR_TRACE_GPRS("read si13");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
660
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
661 if(gprs_support AND
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
662 si13_position EQ SI13_ON_NBCCH)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
663 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
664 PALLOC(scell_bcch_req, MPHC_SCELL_NBCCH_REQ);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
665 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
666 * we want to read SI13 on TC=4 which has to be send at least
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
667 * on every 4th consecutive occurence of TC=4
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
668 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
669 scell_bcch_req->schedule_array_size = 1;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
670 scell_bcch_req->schedule_array[0].modulus = 8;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
671 scell_bcch_req->schedule_array[0].relative_position = 4;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
672 ma_scell_nbcch_req(scell_bcch_req);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
673 return FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
674 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
675 else return TRUE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
676 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
677
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
678 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
679 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
680 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
681 | STATE : code ROUTINE : gprs_stop |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
682 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
683
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
684 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
685
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
686 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
687 void gprs_alr_init(void)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
688 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
689 ALR_TRACE_GPRS("gprs_alr_init");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
690 alr_data->gprs_data.ign_pgm = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
691 alr_data->gprs_data.pbcch = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
692 alr_data->gprs_data.ptm = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
693 alr_data->gprs_data.check_bsic = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
694 alr_data->gprs_data.sync_only = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
695 alr_data->gprs_data.pcco_active= FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
696 alr_data->nc_sync_with_grr = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
697 gprs_support = FALSE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
698 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
699
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
700 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
701 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
702 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
703 | STATE : code ROUTINE : gprs_alr_tb_meas_ind |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
704 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
705
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
706 PURPOSE :
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
707
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
708 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
709 LOCAL void gprs_alr_tb_meas_ind (T_TB_MEAS_IND *report)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
710 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
711 ALR_TRACE_GPRS("tb_meas_ind");
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
712 switch(GET_STATE(STATE_MA))
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
713 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
714 case MA_PTM:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
715 /*Measurement Report in Packet Transfer Mode*/
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
716 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
717 USHORT temp;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
718 USHORT index;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
719 UBYTE diff;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
720 UBYTE i,lim;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
721 T_NC* pcell;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
722
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
723 if(report->tb_meas_result[0].arfcn EQ NOT_PRESENT_16BIT)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
724 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
725 lim = alr_data->nc_data.c_ba_arfcn;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
726 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
727 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
728 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
729 lim = TB_BA_LIST_SIZE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
730 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
731
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
732 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
733 * reduce the time for next sync
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
734 * Decrement the 10sec timer counter variable by 2
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
735 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
736 alr_data->nc_data.c_ncsync_tim = alr_data->nc_data.c_ncsync_tim-2;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
737 if ((signed char)( alr_data->nc_data.c_ncsync_tim) < 0)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
738 alr_data->nc_data.c_ncsync_tim = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
739
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
740 if( alr_data->nc_data.c_ncsync_tim==0 )
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
741 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
742 /* 10 sec have elapsed. Perform all requisite tasks */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
743 nc_ncsync_tim_expiry();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
744 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
745
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
746 for (pcell=&alr_data->nc_data.cell[0], i = 0; i < lim; i++,pcell++)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
747 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
748 if(lim EQ alr_data->nc_data.c_ba_arfcn)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
749 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
750 index = i;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
751 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
752 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
753 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
754 /* For all cells look if it is in BA(BCCH) */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
755 switch(index = nc_get_index(ARFCN_TO_G23(report->tb_meas_result[i].arfcn)))
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
756 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
757 case LAST_BSIC_REQ:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
758 case NOT_PRESENT_16BIT:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
759 continue;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
760 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
761 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
762 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
763 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
764 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
765 * the ncell is in the list
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
766 * so store the rxlev values
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
767 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
768
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
769 if (alr_data->nc_data.cell[index].c_rxlev EQ NOT_PRESENT_8BIT)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
770 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
771 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
772 * if it is a new cell, build an average from the first value
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
773 * to speed up fb sb read
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
774 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
775 if ((signed short) (report->tb_meas_result[i].rxlev) < 0)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
776 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
777 report->tb_meas_result[i].rxlev = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
778 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
779
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
780 alr_data->nc_data.cell[index].rxlev[0] = report->tb_meas_result[i].rxlev / report->tb_meas_result[i].num_meas;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
781 alr_data->nc_data.cell[index].rxlev[1] = report->tb_meas_result[i].rxlev / report->tb_meas_result[i].num_meas;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
782 alr_data->nc_data.cell[index].rxlev[2] = report->tb_meas_result[i].rxlev / report->tb_meas_result[i].num_meas;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
783 alr_data->nc_data.cell[index].rxlev[3] = report->tb_meas_result[i].rxlev / report->tb_meas_result[i].num_meas;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
784 alr_data->nc_data.cell[index].rxlev[4] = report->tb_meas_result[i].rxlev / report->tb_meas_result[i].num_meas;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
785 alr_data->nc_data.cell[index].c_rxlev = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
786 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
787 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
788 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
789 if ((signed short) (report->tb_meas_result[i].rxlev) < 0)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
790 report->tb_meas_result[i].rxlev = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
791
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
792 alr_data->nc_data.cell[index].rxlev[alr_data->nc_data.cell[index].c_rxlev++] =
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
793 report->tb_meas_result[i].rxlev / report->tb_meas_result[i].num_meas;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
794
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
795 if (alr_data->nc_data.cell[index].c_rxlev >= 5)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
796 alr_data->nc_data.cell[index].c_rxlev = 0;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
797 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
798
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
799 temp = (USHORT)(alr_data->nc_data.cell[index].rxlev[0] +
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
800 alr_data->nc_data.cell[index].rxlev[1] +
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
801 alr_data->nc_data.cell[index].rxlev[2] +
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
802 alr_data->nc_data.cell[index].rxlev[3] +
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
803 alr_data->nc_data.cell[index].rxlev[4]);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
804
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
805 alr_data->nc_data.cell[index].rxlev_average = (UBYTE)(temp / 5);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
806 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
807 * store the results seperately for averaging when NC=1 or NC=2
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
808 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
809 #ifdef GPRS
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
810 if(alr_data->nwctrl_meas_active)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
811 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
812 pcell->nc_rxlev += (report->tb_meas_result[i].rxlev / report->tb_meas_result[i].num_meas);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
813 pcell->c_nc_rxlev++;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
814 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
815 #endif
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
816
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
817 TRACE_EVENT_P3("%d %d rx: %d ",i, alr_data->nc_data.cell[i].ba_arfcn,
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
818 report->tb_meas_result[i].rxlev / report->tb_meas_result[i].num_meas);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
819
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
820 switch (alr_data->nc_data.cell[index].status)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
821 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
822 case INACTIVE:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
823 nc_set_status (index, IDLE);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
824 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
825 case EXCLUDED:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
826 diff = (UBYTE)(alr_data->nc_data.cell[index].rxlev_average -
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
827 alr_data->nc_data.cell[index].last_rxlev);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
828
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
829 if (diff < 128 AND diff >= 6)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
830 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
831 /* result is positive and more than 6 dBm */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
832 nc_set_status (index, IDLE);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
833 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
834 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
835 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
836 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
837 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
838
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
839 } /* for all */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
840 PFREE(report);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
841
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
842 nc_check_activity();
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
843 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
844 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
845 default:
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
846 PFREE(report);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
847 break;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
848 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
849 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
850
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
851
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
852 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
853 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
854 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
855 | STATE : code ROUTINE : gprs_alr_nc_enter_ptm |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
856 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
857
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
858 PURPOSE : After the Packet Access Phase we enter Packet Transfer
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
859 Mode and have to do Measurements and Cell Reselection like
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
860 in Idle Mode.
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
861 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
862
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
863 LOCAL void gprs_alr_nc_enter_ptm (void)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
864 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
865 nc_resume(); /* set NC_STATE to IDLE */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
866
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
867 alr_data->nc_data.c_reports = (alr_data->nc_data.c_reports*10)/alr_data->nc_data.max_reports;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
868 alr_data->nc_data.max_reports = 10;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
869 alr_data->nc_data.cell[LAST_BSIC_REQ].status = INACTIVE;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
870
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
871 TRACE_EVENT_P2("glob reps: %d max_report: %d", alr_data->nc_data.c_reports, alr_data->nc_data.max_reports);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
872 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
873
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
874 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
875 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
876 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
877 | STATE : code ROUTINE : gprs_check_page_mode |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
878 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
879
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
880 PURPOSE : Do not change the page mode configuration in L1
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
881 if ing_pgm is set. ie. we have to stay in REORG.
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
882
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
883 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
884 void gprs_check_page_mode(T_MPHC_DATA_IND* data_ind)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
885 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
886 if(alr_data->gprs_data.ign_pgm EQ TRUE)
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
887 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
888 pch_check_page_mode_cr(data_ind);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
889 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
890 else
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
891 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
892 pch_check_page_mode(data_ind);
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
893 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
894 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
895
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
896 /*
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
897 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
898 | PROJECT : GSM-PS (6103) MODULE : ALR_GPRS |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
899 | STATE : code ROUTINE : gprs_alr_is_supported |
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
900 +--------------------------------------------------------------------+
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
901
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
902 PURPOSE : This function returns whether GPRS is supported in
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
903 the cell.
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
904
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
905 */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
906 GLOBAL BOOL gprs_alr_is_supported( void )
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
907 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
908 return( gprs_support EQ TRUE );
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
909 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
910
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
911 void set_gprs_support( UBYTE support )
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
912 {
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
913 gprs_support = support;
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
914 }
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
915
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
916 #endif /* ALR_GPRS_C */
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
917
3a14ee9a9843 src/g23m-gsm: same alr2 & alr3 structure as in Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
918