FreeCalypso > hg > fc-magnetite
annotate src/g23m-gsm/alr/alr_pch.c @ 575:0198ac1e1a4f
cfile_symlink for GPF: a more robust approach
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 24 Jan 2019 23:43:00 +0000 | 
| parents | 27a4235405c6 | 
| children | 
| rev | line source | 
|---|---|
| 104 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 +----------------------------------------------------------------------------- | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 | Project : GSM-PS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 | Modul : ALR_PCH | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 +----------------------------------------------------------------------------- | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | Copyright 2002 Texas Instruments Berlin, AG | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 | All rights reserved. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | This file is confidential and a trade secret of Texas | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 | Instruments Berlin, AG | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | The receipt of or possession of this file does not convey | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 | any rights to reproduce or disclose its contents or to | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 | manufacture, use, or sell anything it may describe, in | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 | whole, or in part, without the specific written consent of | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 | Texas Instruments Berlin, AG. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 +----------------------------------------------------------------------------- | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 | Purpose : This Modul defines the SDL process PCH_Control. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 +----------------------------------------------------------------------------- | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 #ifndef ALR_PCH_C | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 #define ALR_PCH_C | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 #define ENTITY_PL | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 /*==== INCLUDES ===================================================*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 #include <string.h> | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 #include <stdlib.h> | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 #include <ctype.h> | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 #include "typedefs.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 #include "pconst.cdg" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 #include "mconst.cdg" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 #include "message.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 #include "ccdapi.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 #include "vsi.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 #include "custom.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 #include "gsm.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 #include "prim.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 #include "cnf_alr.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 #include "mon_alr.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 #include "pei.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 #include "tok.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 #include "pcm.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 #include "alr_gprs.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 #include "alr.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 #include "alr_em.h" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 /*==== EXPORT =====================================================*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 typedef enum | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 IMSI_TYPE_1=1, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 IMSI_TYPE_2 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 }T_IMSI_TYPE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 typedef enum | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 TMSI_TYPE_1=4, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 TMSI_TYPE_2=8 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 }T_TMSI_TYPE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 /*==== PRIVAT =====================================================*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 LOCAL BOOL pch_frm_chan_imsi (UBYTE *frame, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 UBYTE channel_needed, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 T_IMSI_TYPE imsi_type, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 UBYTE index, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 UBYTE *frame_start); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 LOCAL BOOL pch_tmsi_type (T_TMSI_TYPE tmsi_type, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 UBYTE *frame, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 UBYTE channel_needed); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 /*==== VARIABLES ==================================================*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 UBYTE page_mode_before_hplmn_search = PGM_NORMAL; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 /*==== CONSTANTS ==================================================*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 #define IMSI_ODD_FLAG 8 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 #define IMSI_EVEN_FLAG 0 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 #define IDENT_TYPE_MON 0 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 #define IDENT_TYPE_IMSI 1 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 #define IDENT_TYPE_IMEI 2 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 #define IDENT_TYPE_IMEISV 3 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 #define IDENT_TYPE_TMSI 4 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 #define END_MARK 0xF0 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 /*==== FUNCTIONS ==================================================*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 #define TRACING | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 #if defined (TRACING) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 #define ALR_TRACE_PCH(a) ALR_TRACE(a) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 #else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 #define ALR_TRACE_PCH(a) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 #ifdef TRACING | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 #define ALR_TRACE_PCH_CONFIG(b,a,c,t,p,m) \ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 TRACE_EVENT_P6 ("MFRMS: %d AG_RES: %d COMB: %d GRP: %d PGRP: %d PI: %d",b,a,c,t,p,m) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 #define ALR_TRACE_PCH_PGM(p,x) \ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 TRACE_EVENT_P2 ("new_pgm: %d cur_pgm: %d",p,x) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 #define ALR_TRACE_PCH_IMSI() \ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 { for (i=0; i<alr_data->pch_data.imsi[0]+1;i++) { \ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 TRACE_EVENT_P2 ("imsi[%d]=%x",i,alr_data->pch_data.imsi[i]);} } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 #else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 #define ALR_TRACE_PCH_CONFIG(b,a,c,t,p,m) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 #define ALR_TRACE_PCH_PGM(p,x) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 #define ALR_TRACE_PCH_IMSI() | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 | STATE : code ROUTINE : pch_init | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 PURPOSE : Initialize PCH Control Process. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 GLOBAL void pch_init (void) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 alr_data->pch_data.saved_page_mode = PGM_REORG; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 alr_data->pch_data.reorg_bcch_reading = FALSE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 | STATE : code ROUTINE : pch_start | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 PURPOSE : Process signal pch_start from SDL process | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 Main_Control. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 static const UBYTE PAG_BLOCK_TABLE [2][8] = | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 /* not combined ccch */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 9,8,7,6,5,4,3,2, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 /* combined ccch */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 3,2,1,1,1,1,1,1 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 }; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 | STATE : code ROUTINE : pch_configure | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 PURPOSE : Configutes L1 for paging. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 GLOBAL void pch_configure (T_MPH_IDLE_REQ *idle, UBYTE page_mode) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 UBYTE pag_blocks_per_mfr; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 if(idle NEQ NULL) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 alr_data->pch_data.dlt = idle->dlt; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 alr_data->pch_data.act_dlt = idle->dlt; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 ALR_EM_SET_EM_ACT_DLT; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 pag_blocks_per_mfr = PAG_BLOCK_TABLE [idle->comb_ccch][idle->bs_ag_blocks_res]; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 * pl_idle.bs_pa_mfrms has a range from 2-9. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 * MPH_IDLE_REQ codes them from 0-7 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 alr_data->pch_data.pl_idle.bs_pa_mfrms = (UBYTE)(idle->bs_pa_mfrms + 2); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 alr_data->pch_data.pl_idle.bs_ag_blks_res = idle->bs_ag_blocks_res; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 alr_data->pch_data.pl_idle.bcch_combined = idle->comb_ccch; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 alr_data->pch_data.pl_idle.ccch_group = (UBYTE)(idle->tn / 2); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 alr_data->pch_data.pl_idle.page_group = idle->pg; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 alr_data->pch_data.pl_idle.page_block_index = (UBYTE)(idle->pg % pag_blocks_per_mfr); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 ALR_TRACE_PCH_CONFIG(idle->bs_pa_mfrms+2, idle->bs_ag_blocks_res, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 idle->comb_ccch, idle->tn/2, idle->pg, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 idle->pg % pag_blocks_per_mfr); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 * During cell reselection reading of PCH is started hard coded with | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 * page mode PGM_REORG because of the lack of parameters to calculate | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 * the right paging group. Detection of SI3 during cell reselection | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 * triggers the function pch_config_resel() to reconfigure PCH reading, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 * detection of a changed page mode during cell reselection is handled | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 * by function pch_check_page_mode_cr() which needs to know whether SI3 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 * is read | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 if (GET_STATE (STATE_MA) EQ MA_CELL_RESELECTION) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 alr_data->pch_data.si3_read = FALSE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 /* Ensure that L1 does not get initialised with PAGING EXTENDED */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 switch( page_mode ) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 case SAVED_PGM: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 if( alr_data->pch_data.saved_page_mode EQ PGM_EXTENDED ) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 alr_data->pch_data.saved_page_mode = PGM_REORG; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 page_mode = alr_data->pch_data.saved_page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 /*lint -fallthrough*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 default: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 alr_data->pch_data.pl_idle.page_mode = page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 | STATE : code ROUTINE : pch_save_pgm | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 PURPOSE : Configure Paging | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 GLOBAL void pch_save_pgm(UBYTE mode) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 if(mode) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 alr_data->pch_data.saved_page_mode = mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 alr_data->pch_data.saved_page_mode = alr_data->pch_data.pl_idle.page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 | STATE : code ROUTINE : pch_start_ccch_req | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 PURPOSE : Configure Paging | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 GLOBAL void pch_start_ccch_req (void) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 PALLOC(pl_idle, MPHC_START_CCCH_REQ); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 memset(pl_idle, 0, sizeof(T_MPHC_START_CCCH_REQ)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 ALR_EM_PAGE_MODE_CHANGE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 switch (alr_data->pch_data.pl_idle.page_mode) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 case PGM_REORG: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 ALR_TRACE_PCH ("config REORG"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 /* dummy values */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 pl_idle->bs_pa_mfrms = 2; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 pl_idle->bs_ag_blks_res = 7; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 pl_idle->bcch_combined = 0; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 pl_idle->ccch_group = 0; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 pl_idle->page_group = 0; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 pl_idle->page_block_index = 0; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 pl_idle->page_mode = PGM_REORG; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 case PGM_REORG_CS: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 ALR_TRACE_PCH ("config REORG_CS"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 memcpy (pl_idle, &alr_data->pch_data.pl_idle, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 sizeof (T_MPHC_START_CCCH_REQ)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 * if the page_mode is PGM_REORG_CS then | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 * we have to change this to PGM_REORG | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 * before we send it to L1 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 pl_idle->page_mode = PGM_REORG; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 case PGM_EXTENDED: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 ALR_TRACE_PCH ("config EXT"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 memcpy (pl_idle, &alr_data->pch_data.pl_idle, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 sizeof (T_MPHC_START_CCCH_REQ)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 pl_idle->page_mode = PGM_EXTENDED; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 case PGM_REORG_NC_SYNC: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 /*this case is the same as the default - except for the TRACE*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 ALR_TRACE_PCH ("config PGM_REORG_NC_SYNC (NORMAL)"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 memcpy (pl_idle, &alr_data->pch_data.pl_idle, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 sizeof (T_MPHC_START_CCCH_REQ)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 pl_idle->page_mode = PGM_NORMAL; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 default: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 ALR_TRACE_PCH ("config NORMAL"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 memcpy (pl_idle, &alr_data->pch_data.pl_idle, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 sizeof (T_MPHC_START_CCCH_REQ)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 pl_idle->page_mode = PGM_NORMAL; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 SET_STATE(STATE_PCH,PCH_ACTIVE); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 ma_pch_start_ccch_req(pl_idle); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 TRACE_EVENT_P1("reorg_bcch_reading = %d",alr_data->pch_data.reorg_bcch_reading); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 if(alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG OR | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG_CS OR | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 alr_data->pch_data.reorg_bcch_reading EQ TRUE) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 { /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 * if we're going into reorg paging we also need to read the BCCH | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 * to read possibly changed channel configuration | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 * XXX but not at PGM_REORG_NC_SYNC (NORMAL) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 ma_scell_full_nbcch(); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 #if defined (REL99) && defined (TI_PS_FF_EMR) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 if (alr_data->nc_data.si2quater_status EQ SI2QUATER_CONFIGURE ) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 if(alr_data->ma_data.sys_info_2quater[1] EQ D_SYS_INFO_2QUATER) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 ma_send_stored_SI2qtr(&alr_data->ma_data.sys_info_2quater[0]); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 memset (alr_data->ma_data.sys_info_2quater, 0, 22); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 alr_data->nc_data.si2quater_status = SI2QUATER_ACQ_FULL_BCCH; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 { /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 * otherwise we stop the reading of the BCCH and start the periodic read. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 * XXX but not if we have a PBCCH | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 if(alr_data->gprs_data.pbcch EQ FALSE) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 325 #if defined (REL99) && defined (TI_PS_FF_EMR) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 326 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 327 TRACE_EVENT_P1("SI2qtr status: %d", alr_data->nc_data.si2quater_status); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 328 if ( (alr_data->nc_data.si2quater_status EQ SI2QUATER_ABSENT) OR | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 329 (alr_data->nc_data.si2quater_status EQ SI2QUATER_ACQ_WRONG_BAIND) OR | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 330 (alr_data->nc_data.si2quater_status EQ SI2QUATER_ACQ_COMP) ) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 331 sc_start_periodic(); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 332 else if ((alr_data->nc_data.si2quater_status EQ SI2QUATER_CONFIGURE ) OR | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 333 (alr_data->nc_data.si2quater_status EQ SI2QUATER_ACQ_FULL_BCCH)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 334 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 335 if(alr_data->ma_data.sys_info_2quater[1] EQ D_SYS_INFO_2QUATER) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 336 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 337 ma_send_stored_SI2qtr(&alr_data->ma_data.sys_info_2quater[0]); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 338 memset (alr_data->ma_data.sys_info_2quater, 0, 22); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 339 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 340 if (alr_data->nc_data.si2quater_pos EQ SI2QUATER_ON_NBCCH) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 341 ma_scell_mon_si2quater_nbcch(); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 342 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 343 ma_scell_mon_si2quater_ebcch(); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 344 alr_data->nc_data.si2quater_status = SI2QUATER_ACQ_PENDING; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 345 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 346 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 347 #else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 348 sc_start_periodic(); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 349 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 350 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 351 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 352 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 353 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 354 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 355 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 356 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 357 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 358 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 359 | STATE : code ROUTINE : pch_identity_req | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 360 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 361 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 362 PURPOSE : Get new mobile identity information from RR. Build IMSI | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 363 pattern and store TMSI. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 364 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 365 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 366 GLOBAL void pch_identity_req (T_MPH_IDENTITY_REQ *mph_identity_req) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 367 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 368 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 369 UBYTE i; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 370 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 371 /* the IMSI in the identity request is coded as a 15byte long array | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 372 and is stored for later usage in pch_data as the message representation | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 373 of the IMSI according to GSM4.08 10.5.1.4 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 374 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 375 if (mph_identity_req->mid.len_imsi EQ 0) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 376 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 377 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 378 * limited service, no paging | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 379 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 380 memset (alr_data->pch_data.imsi, 0, IMSI_LEN); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 381 alr_data->pch_data.v_tmsi = FALSE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 382 alr_data->pch_data.tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 383 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 384 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 385 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 386 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 387 * The IMSI is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 388 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 389 /* store length */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 390 alr_data->pch_data.imsi[0] = (UBYTE)((mph_identity_req->mid.len_imsi + 2) / 2); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 391 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 392 if (mph_identity_req->mid.len_imsi & 1) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 393 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 394 ALR_TRACE_PCH ("IMSI is odd"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 395 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 396 * odd number of digits | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 397 * first digit + odd flag + identity type IMSI | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 398 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 399 alr_data->pch_data.imsi[1] = (UBYTE)((mph_identity_req->mid.imsi[0] << 4) + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 400 IMSI_ODD_FLAG + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 401 IDENT_TYPE_IMSI); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 402 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 403 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 404 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 405 ALR_TRACE_PCH ("IMSI is even"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 406 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 407 * even number of digits | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 408 * first digit + even flag + identity type IMSI | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 409 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 410 alr_data->pch_data.imsi[1] = (UBYTE)((mph_identity_req->mid.imsi[0] << 4) + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 411 IMSI_EVEN_FLAG + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 412 IDENT_TYPE_IMSI); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 413 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 414 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 415 * fill in the rest of digits | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 416 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 417 for (i=1;i<mph_identity_req->mid.len_imsi;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 418 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 419 if (i & 1) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 420 alr_data->pch_data.imsi[(i/2)+2] = (UBYTE)(END_MARK + mph_identity_req->mid.imsi[i]); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 421 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 422 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 423 alr_data->pch_data.imsi[(i/2)+1] &= ~END_MARK; /* remove end mark */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 424 alr_data->pch_data.imsi[(i/2)+1] = (UBYTE)(alr_data->pch_data.imsi[(i/2)+1] + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 425 (mph_identity_req->mid.imsi[i] << 4)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 426 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 427 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 428 alr_data->pch_data.imsi_mod_1000 = (SHORT) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 429 ( (mph_identity_req->mid.imsi[mph_identity_req->mid.len_imsi-1] + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 430 mph_identity_req->mid.imsi[mph_identity_req->mid.len_imsi-2] * 10 + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 431 mph_identity_req->mid.imsi[mph_identity_req->mid.len_imsi-3] * 100 ) % 1000); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 432 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 433 ALR_TRACE_PCH_IMSI(); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 434 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 435 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 436 * copy TMSI | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 437 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 438 alr_data->pch_data.v_tmsi = mph_identity_req->mid.v_tmsi; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 439 alr_data->pch_data.tmsi = mph_identity_req->mid.tmsi; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 440 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 441 gprs_alr_store_ptmsi(mph_identity_req->mid.v_ptmsi, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 442 mph_identity_req->mid.ptmsi); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 443 gprs_alr_store_ptmsi2(mph_identity_req->mid.v_ptmsi2, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 444 mph_identity_req->mid.ptmsi2); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 445 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 446 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 447 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 448 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 449 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 450 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 451 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 452 | STATE : code ROUTINE : pch_increment_dlt | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 453 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 454 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 455 PURPOSE : Incrementation of downlink timeout counter after receiving | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 456 a valid PCH block. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 457 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 458 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 459 GLOBAL void pch_increment_dlt (void) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 460 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 461 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 462 if (alr_data->pch_data.act_dlt < | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 463 alr_data->pch_data.dlt) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 464 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 465 #if !defined NTRACE | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 466 trc_mon_counter_idle (alr_data->pch_data.act_dlt, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 467 alr_data->pch_data.dlt); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 468 #endif /* (!defined NTRACE) */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 469 alr_data->pch_data.act_dlt++; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 470 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 471 ALR_EM_SET_EM_ACT_DLT; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 472 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 473 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 474 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 475 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 476 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 477 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 478 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 479 | STATE : code ROUTINE : pch_decrement_dlt | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 480 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 481 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 482 PURPOSE : Decrementation of downlink timeout counter after receiving | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 483 an invalid PCH block. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 484 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 485 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 486 GLOBAL void pch_decrement_dlt (void) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 487 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 488 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 489 if (alr_data->pch_data.act_dlt > 4) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 490 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 491 #if !defined NTRACE | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 492 trc_mon_counter_idle (alr_data->pch_data.act_dlt, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 493 alr_data->pch_data.dlt); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 494 #endif /* (!defined NTRACE) */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 495 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 496 alr_data->pch_data.act_dlt -= 4; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 497 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 498 ALR_EM_SET_EM_ACT_DLT; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 499 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 500 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 501 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 502 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 503 alr_data->pch_data.act_dlt = alr_data->pch_data.dlt; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 504 #if !defined NTRACE | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 505 trc_mon_counter_idle (alr_data->pch_data.act_dlt, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 506 alr_data->pch_data.dlt); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 507 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 508 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 509 ALR_EM_SET_EM_ACT_DLT; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 510 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 511 ALR_TRACE_PCH ("downlink fail"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 512 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 513 ma_error_ind (CS_DOWN_LINK_FAIL, alr_data->serving_cell); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 514 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 515 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 516 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 517 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 518 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 519 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 520 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 521 | STATE : code ROUTINE : pch_check_page_mode | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 522 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 523 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 524 PURPOSE : Check the page mode of an incoming unacknowledged | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 525 message. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 526 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 527 static const UBYTE PAGE_MODE_CHANGE [3][4] = | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 528 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 529 /* old mode = paging normal */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 530 NONE, SWAP_TO_EXTEND, SWAP_TO_REORG, NONE, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 531 /* old mode = extended paging */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 532 SWAP_TO_NORMAL, NONE, SWAP_TO_REORG, NONE, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 533 /* old mode = paging reorganisation */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 534 SWAP_TO_NORMAL, SWAP_TO_EXTEND, NONE, NONE | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 535 }; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 536 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 537 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 538 GLOBAL void pch_check_page_mode (T_MPHC_DATA_IND *data_ind) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 539 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 540 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 541 UBYTE page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 542 UBYTE cur_page_mode = alr_data->pch_data.pl_idle.page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 543 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 544 page_mode = (UBYTE)(data_ind->l2_frame.content [3] & 3); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 545 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 546 ALR_TRACE_PCH_PGM(page_mode, alr_data->pch_data.pl_idle.page_mode); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 547 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 548 /*if HPLMN search is going on and we should be in REORG, we are really | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 549 in REORG_NC_SYNC (NORMAL). Otherwise we cannot synchronize to the NC's*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 550 if(alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG_NC_SYNC) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 551 cur_page_mode = PGM_REORG; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 552 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 553 if(alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG_CS) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 554 cur_page_mode = PGM_REORG; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 555 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 556 switch (PAGE_MODE_CHANGE [cur_page_mode][page_mode]) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 557 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 558 case SWAP_TO_NORMAL: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 559 ALR_TRACE_PCH ("SWAP_TO_NORMAL"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 560 alr_data->pch_data.pl_idle.page_mode = PGM_NORMAL; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 561 pch_start_ccch_req (); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 562 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 563 case SWAP_TO_EXTEND: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 564 ALR_TRACE_PCH ("SWAP_TO_EXT"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 565 alr_data->pch_data.pl_idle.page_mode = PGM_EXTENDED; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 566 pch_start_ccch_req (); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 567 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 568 case SWAP_TO_REORG: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 569 ALR_TRACE_PCH ("SWAP_TO_REORG"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 570 alr_data->pch_data.reorg_bcch_reading = TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 571 alr_data->pch_data.si_bitmap = 0; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 572 alr_data->pch_data.pl_idle.page_mode = PGM_REORG_CS; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 573 pch_start_ccch_req (); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 574 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 575 default: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 576 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 577 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 578 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 579 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 580 GLOBAL void pch_check_page_mode_cr (T_MPHC_DATA_IND *data_ind) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 581 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 582 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 583 UBYTE page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 584 UBYTE cur_page_mode = alr_data->pch_data.saved_page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 585 UBYTE swap = TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 586 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 587 page_mode = (UBYTE)(data_ind->l2_frame.content [3] & 3); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 588 if(alr_data->pch_data.saved_page_mode EQ PGM_REORG_CS) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 589 cur_page_mode = PGM_REORG; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 590 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 591 switch (PAGE_MODE_CHANGE [cur_page_mode][page_mode]) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 592 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 593 case SWAP_TO_NORMAL: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 594 ALR_TRACE_PCH ("CR:SWAP_TO_NORMAL"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 595 alr_data->pch_data.saved_page_mode = PGM_NORMAL; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 596 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 597 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 598 case SWAP_TO_EXTEND: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 599 ALR_TRACE_PCH ("CR:SWAP_TO_EXT"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 600 alr_data->pch_data.saved_page_mode = PGM_EXTENDED; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 601 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 602 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 603 case SWAP_TO_REORG: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 604 ALR_TRACE_PCH ("CR:SWAP_TO_REORG"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 605 alr_data->pch_data.saved_page_mode = PGM_REORG_CS; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 606 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 607 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 608 default: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 609 swap = FALSE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 610 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 611 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 612 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 613 if (swap AND alr_data->pch_data.si3_read AND | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 614 alr_data->pch_data.last_start_ccch_req.bs_pa_mfrms NEQ NOT_PRESENT_8BIT) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 615 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 616 PALLOC(pl_idle, MPHC_START_CCCH_REQ); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 617 memcpy ( pl_idle, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 618 &(alr_data->pch_data.last_start_ccch_req), | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 619 sizeof(T_MPHC_START_CCCH_REQ)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 620 pl_idle->page_mode = alr_data->pch_data.saved_page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 621 ma_pch_start_ccch_req (pl_idle); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 622 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 623 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 624 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 625 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 626 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 627 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 628 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 629 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 630 | STATE : code ROUTINE : pch_check_pag_1 | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 631 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 632 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 633 PURPOSE : The function checks a paging request type 1 message. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 634 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 635 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 636 GLOBAL void pch_check_pag_1 (T_MPHC_DATA_IND *data_ind) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 637 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 638 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 639 UBYTE *frame = data_ind->l2_frame.content; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 640 UBYTE channel_needed; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 641 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 642 UBYTE *frame_start = data_ind->l2_frame.content; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 643 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 644 /*ALR_TRACE_PCH ("p1");*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 645 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 646 * Check only if IMSI available (len NEQ 0), | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 647 * ti and pd = 0x06 and | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 648 * l2 pseudolength is greater than 5 bytes | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 649 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 650 if (alr_data->pch_data.imsi[0] AND | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 651 frame[1] EQ 0x06 AND | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 652 frame[0] > 0x15) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 653 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 654 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 655 * store channel needed type | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 656 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 657 channel_needed = frame[3]; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 658 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 659 * check type of identity for mobile identity 1 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 660 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 661 if(pch_frm_chan_imsi( frame, channel_needed, IMSI_TYPE_1, 5,frame_start)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 662 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 663 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 664 * check type of identity for mobile identity 2 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 665 * set frame pointer to start of mobile identity 2 (id tag) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 666 * old frame pointer (frame) + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 667 * offset pseudo length etc (4) + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 668 * length mobile identity 1 (frame [4]) + | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 669 * plus 1 byte for length field | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 670 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 671 frame = frame + 4 + frame[4] + 1; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 672 if (frame[0] EQ 0x17) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 673 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 674 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 675 * mobile identity 2 is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 676 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 677 if(pch_frm_chan_imsi( frame, channel_needed, IMSI_TYPE_2, 2, frame_start)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 678 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 679 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 680 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 681 //ALR_TRACE_PCH("end p1"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 682 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 683 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 684 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 685 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 686 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 687 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 688 | STATE : code ROUTINE : pch_check_pag_2 | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 689 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 690 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 691 PURPOSE : The function checks a paging request type 2 message. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 692 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 693 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 694 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 695 GLOBAL void pch_check_pag_2 (T_MPHC_DATA_IND *data_ind) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 696 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 697 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 698 UBYTE *frame = data_ind->l2_frame.content; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 699 ULONG tmsi; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 700 UBYTE i; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 701 UBYTE channel_needed; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 702 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 703 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 704 * Check only if IMSI available (len NEQ 0) and | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 705 * ti and pd = 0x06 and | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 706 * l2 pseudolength is greater than 5 bytes | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 707 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 708 if (alr_data->pch_data.imsi[0] AND | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 709 frame[1] EQ 0x06 AND | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 710 frame[0] > 0x15) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 711 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 712 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 713 * store channel needed type | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 714 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 715 channel_needed = frame[3]; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 716 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 717 * check mobile identity 1 only if TMSI is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 718 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 719 if(pch_tmsi_type(TMSI_TYPE_1, frame, channel_needed)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 720 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 721 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 722 if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 723 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 724 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 725 for (i=0;i<4;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 726 tmsi += frame[i+4] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 727 if(gprs_alr_check_ptmsi(tmsi)) return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 728 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 729 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 730 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 731 * check mobile identity 2 only if TMSI is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 732 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 733 if(pch_tmsi_type(TMSI_TYPE_2, frame, channel_needed)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 734 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 735 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 736 if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 737 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 738 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 739 for (i=0;i<4;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 740 tmsi += frame[i+8] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 741 if(gprs_alr_check_ptmsi(tmsi)) return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 742 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 743 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 744 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 745 if (frame[12] EQ 0x17) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 746 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 747 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 748 * mobile identity 3 is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 749 * calculation of channel needed for | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 750 * mobile identity 3 from the rest octet. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 751 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 752 channel_needed = frame [ frame[13]+14 ]; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 753 if (channel_needed & 0x80) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 754 channel_needed = (UBYTE)((channel_needed >> 5) & 3); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 755 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 756 channel_needed = 0; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 757 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 758 switch (frame [14] & 7) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 759 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 760 case 1: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 761 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 762 * IMSI | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 763 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 764 if (!memcmp (alr_data->pch_data.imsi, &frame[13], | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 765 alr_data->pch_data.imsi[0]+1)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 766 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 767 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 768 * IMSI matches | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 769 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 770 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 771 if(! gprs_alr_check_packet_paging_2(frame,3)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 772 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 773 ma_pch_paging_ind (1, (UBYTE) channel_needed); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 774 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 775 else if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 776 ma_pch_paging_ind (ID_IMSI, CN_PACKET); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 777 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 778 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 779 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 780 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 781 case 4: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 782 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 783 * TMSI | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 784 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 785 if (alr_data->pch_data.v_tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 786 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 787 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 788 for (i=0;i<frame[13]-1;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 789 tmsi += frame[i+15] << ((8*(frame[13]-2-i))); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 790 if (alr_data->pch_data.tmsi EQ tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 791 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 792 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 793 * TMSI matches | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 794 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 795 ma_pch_paging_ind (4, channel_needed); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 796 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 797 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 798 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 799 if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 800 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 801 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 802 for (i=0;i<frame[13]-1;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 803 tmsi += frame[i+15] << ((8*(frame[13]-2-i))); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 804 if(gprs_alr_check_ptmsi(tmsi)) return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 805 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 806 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 807 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 808 break; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 809 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 810 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 811 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 812 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 813 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 814 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 815 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 816 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 817 | STATE : code ROUTINE : pch_check_pag_3 | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 818 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 819 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 820 PURPOSE : The function checks a paging request type 3 message. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 821 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 822 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 823 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 824 GLOBAL void pch_check_pag_3 (T_MPHC_DATA_IND *data_ind) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 825 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 826 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 827 UBYTE *frame = data_ind->l2_frame.content; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 828 ULONG tmsi; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 829 UBYTE i; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 830 UBYTE channel_needed; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 831 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 832 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 833 * Check only if IMSI available (len NEQ 0) and | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 834 * ti and pd = 0x06 and | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 835 * l2 pseudolength is greater than 5 bytes | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 836 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 837 if (alr_data->pch_data.imsi[0] AND | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 838 frame[1] EQ 0x06 AND | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 839 frame[0] > 0x15) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 840 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 841 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 842 * store channel needed type | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 843 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 844 channel_needed = frame[3]; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 845 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 846 * check mobile identity 1 only if TMSI is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 847 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 848 if(pch_tmsi_type(TMSI_TYPE_1, frame, channel_needed)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 849 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 850 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 851 if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 852 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 853 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 854 for (i=0;i<4;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 855 tmsi += frame[i+4] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 856 if(gprs_alr_check_ptmsi(tmsi)) return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 857 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 858 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 859 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 860 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 861 * check mobile identity 2 only if TMSI is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 862 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 863 if(pch_tmsi_type(TMSI_TYPE_2, frame, channel_needed)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 864 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 865 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 866 if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 867 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 868 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 869 for (i=0;i<4;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 870 tmsi += frame[i+8] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 871 if(gprs_alr_check_ptmsi(tmsi)) return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 872 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 873 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 874 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 875 * calculation of channel needed for | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 876 * mobile identity 3 and 4 from the rest octet. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 877 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 878 channel_needed = frame [ 20 ]; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 879 if (channel_needed & 0x80) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 880 channel_needed = (UBYTE)((channel_needed & 0x78) >> 3); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 881 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 882 channel_needed = 0; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 883 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 884 * check mobile identity 3 only if TMSI is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 885 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 886 if (alr_data->pch_data.v_tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 887 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 888 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 889 for (i=0;i<4;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 890 tmsi += frame[i+12] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 891 if (alr_data->pch_data.tmsi EQ tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 892 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 893 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 894 * TMSI matches | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 895 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 896 ma_pch_paging_ind (4, (UBYTE)(channel_needed >> 2)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 897 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 898 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 899 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 900 if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 901 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 902 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 903 for (i=0;i<4;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 904 tmsi += frame[i+12] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 905 if(gprs_alr_check_ptmsi(tmsi)) return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 906 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 907 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 908 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 909 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 910 * check mobile identity 4 only if TMSI is available | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 911 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 912 if (alr_data->pch_data.v_tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 913 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 914 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 915 for (i=0;i<4;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 916 tmsi += frame[i+16] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 917 if (alr_data->pch_data.tmsi EQ tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 918 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 919 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 920 * TMSI matches | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 921 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 922 ma_pch_paging_ind (4, (UBYTE)(channel_needed & 3)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 923 return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 924 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 925 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 926 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 927 if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 928 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 929 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 930 for (i=0;i<4;i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 931 tmsi += frame[i+16] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 932 if(gprs_alr_check_ptmsi(tmsi)) return; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 933 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 934 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 935 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 936 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 937 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 938 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 939 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 940 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 941 | STATE : code ROUTINE : pch_stop | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 942 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 943 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 944 PURPOSE : The function stops paging. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 945 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 946 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 947 GLOBAL void pch_stop(void) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 948 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 949 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 950 if(GET_STATE(STATE_PCH) EQ PCH_ACTIVE) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 951 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 952 SET_STATE(STATE_PCH,PCH_NULL); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 953 if(alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG OR | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 954 alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG_CS) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 955 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 956 ALR_TRACE_PCH ("stop sc for pch"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 957 ma_stop_scell_bcch_req(); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 958 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 959 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 960 ma_pch_stop(); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 961 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 962 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 963 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 964 /*used for S13 - to stop BCCH reading*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 965 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 966 GLOBAL UBYTE pch_mode_reorg(void) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 967 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 968 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 969 if(alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG OR | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 970 alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG_CS OR | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 971 alr_data->pch_data.pl_idle.page_mode EQ PGM_REORG_NC_SYNC) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 972 return TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 973 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 974 return FALSE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 975 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 976 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 977 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 978 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 979 | STATE : code ROUTINE : pch_no_of_paging_blocks | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 980 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 981 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 982 PURPOSE : The function configures the paging reading during cell | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 983 reselection when reveived a SI3 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 984 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 985 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 986 LOCAL SHORT pch_no_of_paging_blocks (UBYTE ccch_conf, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 987 UBYTE bs_ag_blks_res, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 988 UBYTE bs_pa_mfrms) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 989 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 990 /* in according to GSM 4.08 section 10.5.2.11, table 10.5.33 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 991 if (ccch_conf EQ COMB_CCCH_COMB) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 992 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 993 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 994 * combined CCCH, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 995 * | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 996 * number of paging blocks = (3 - BS_AG_BLKS_RES) * BS_PA_MFRMS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 997 * | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 998 * Maximum function only for security reasons, BCCH coding range is 0..7, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 999 * but allowed is only 0..2. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1000 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1001 return (( (1 > (UBYTE)(3 - bs_ag_blks_res) ? 1 : (UBYTE)(3 - bs_ag_blks_res)) ) * | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1002 ((UBYTE)(2 + bs_pa_mfrms))); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1003 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1004 else | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1005 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1006 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1007 * non-combined CCCH, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1008 * | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1009 * number of paging blocks = (9 - BS_AG_BLKS_RES) * BS_PA_MFRMS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1010 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1011 return ((9 - bs_ag_blks_res) * | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1012 (2 + bs_pa_mfrms)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1013 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1014 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1015 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1016 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1017 | PROJECT : GSM-PS (6103) MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1018 | STATE : code ROUTINE : pch_config_resel | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1019 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1020 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1021 PURPOSE : The function configures the L1 PCH reading during cell | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1022 reselection when reveived an SI3 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1023 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1024 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1025 GLOBAL void pch_config_resel (T_MPHC_DATA_IND *data_ind) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1026 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1027 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1028 UBYTE *p_ctrl = &(data_ind->l2_frame.content[SI_CONTENTS_MSG_T+8]); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1029 UBYTE ccch_conf, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1030 bs_ag_blks_res, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1031 bs_pa_mfrms, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1032 pg, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1033 pag_blocks_per_mfr; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1034 SHORT n, b; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1035 PALLOC(pl_idle, MPHC_START_CCCH_REQ); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1036 memset(pl_idle, 0, sizeof(T_MPHC_START_CCCH_REQ)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1037 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1038 bs_ag_blks_res = (UBYTE)(((*p_ctrl) & 0x38) >> 3); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1039 ccch_conf = (((*p_ctrl) & 0x07) EQ 0x01) ? COMB_CCCH_COMB : COMB_CCCH_NOT_COMB; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1040 p_ctrl++; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1041 bs_pa_mfrms = (UBYTE)(((*p_ctrl) & 0x07)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1042 /* TRACE_EVENT_P5("pch_config_resel IE: %02x %02x bs_ag_blks_res=%u ccch_conf=%u bs_pa_mfrms=%u", | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1043 data_ind->l2_frame.content[SI_CONTENTS_MSG_T+8], | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1044 *p_ctrl, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1045 bs_ag_blks_res, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1046 ccch_conf, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1047 bs_pa_mfrms);*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1048 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1049 n = pch_no_of_paging_blocks (ccch_conf, bs_ag_blks_res, bs_pa_mfrms); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1050 b = ((ccch_conf / 2) + 1) * n; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1051 pg = (UBYTE) ((alr_data->pch_data.imsi_mod_1000 % b) % n); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1052 pag_blocks_per_mfr = PAG_BLOCK_TABLE [ccch_conf][bs_ag_blks_res]; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1053 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1054 pl_idle->bs_ag_blks_res = bs_ag_blks_res; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1055 pl_idle->bs_pa_mfrms = (UBYTE)(bs_pa_mfrms + 2); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1056 pl_idle->bcch_combined = ccch_conf; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1057 pl_idle->ccch_group = (UBYTE) ((alr_data->pch_data.imsi_mod_1000 % b) / n); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1058 pl_idle->page_group = pg; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1059 pl_idle->page_block_index = (UBYTE)(pg % pag_blocks_per_mfr); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1060 pl_idle->page_mode = (alr_data->pch_data.saved_page_mode EQ PGM_REORG_CS) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1061 ? PGM_REORG | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1062 : alr_data->pch_data.saved_page_mode; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1063 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1064 /* TRACE_EVENT_P3("n=%u b=%u page_mode=%u", n, b, pl_idle->page_mode);*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1065 ma_pch_start_ccch_req(pl_idle); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1066 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1067 alr_data->pch_data.si3_read = TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1068 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1069 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1070 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1071 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1072 | PROJECT : MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1073 | STATE : code ROUTINE : pch_frm_chan_imsi | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1074 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1075 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1076 PURPOSE : Function replacing the common switch-code in the function | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1077 "pch_check_pag_1". This function checks for the IMSI types. | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1078 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1079 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1080 LOCAL BOOL pch_frm_chan_imsi (UBYTE *frame, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1081 UBYTE channel_needed, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1082 T_IMSI_TYPE imsi_type, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1083 UBYTE index, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1084 UBYTE *frame_start) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1085 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1086 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1087 UBYTE i; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1088 ULONG tmsi; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1089 ALR_TRACE_PCH ("pch_frm_chan_imsi"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1090 switch (frame[index] & 7) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1091 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1092 case 1: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1093 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1094 * IMSI | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1095 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1096 if (!memcmp (alr_data->pch_data.imsi, &frame[index-1], | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1097 alr_data->pch_data.imsi[0]+1)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1098 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1099 /*ALR_TRACE_PCH ("p1 IMSI match");*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1100 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1101 * IMSI matches | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1102 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1103 if(imsi_type EQ IMSI_TYPE_1) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1104 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1105 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1106 if(! gprs_alr_check_packet_paging(frame_start,1)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1107 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1108 ma_pch_paging_ind (1, (UBYTE)((channel_needed & 0x30)>>4)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1109 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1110 else if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1111 ma_pch_paging_ind (ID_IMSI, CN_PACKET); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1112 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1113 return TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1114 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1115 else if(imsi_type EQ IMSI_TYPE_2) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1116 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1117 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1118 if(! gprs_alr_check_packet_paging(frame_start,2)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1119 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1120 ma_pch_paging_ind (1, (UBYTE)((channel_needed & 0xC0)>>6)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1121 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1122 else if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1123 ma_pch_paging_ind (ID_IMSI, CN_PACKET); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1124 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1125 return TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1126 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1127 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1128 break; /* for case-1 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1129 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1130 case 4: | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1131 /*ALR_TRACE_PCH ("p1 TMSI");*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1132 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1133 * TMSI | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1134 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1135 if (alr_data->pch_data.v_tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1136 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1137 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1138 for (i=0; i<frame[index-1]-1; i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1139 tmsi += frame[i+index+1] << ((8*(frame[index-1]-2-i))); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1140 if (alr_data->pch_data.tmsi EQ tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1141 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1142 /*ALR_TRACE_PCH ("p1 TMSI match");*/ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1143 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1144 * TMSI matches | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1145 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1146 if(imsi_type EQ IMSI_TYPE_1) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1147 ma_pch_paging_ind (4, (UBYTE)((channel_needed & 0x30)>>4)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1148 else if(imsi_type EQ IMSI_TYPE_2) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1149 ma_pch_paging_ind (4, (UBYTE)((channel_needed & 0xC0)>>6)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1150 return TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1151 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1152 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1153 #ifdef GPRS | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1154 if(GET_STATE(STATE_MA) NEQ MA_CON_EST) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1155 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1156 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1157 for (i=0; i<frame[index-1]-1; i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1158 tmsi += frame[i+index+1] << ((8*(frame[index-1]-2-i))); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1159 if(gprs_alr_check_ptmsi(tmsi)) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1160 return TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1161 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1162 #endif | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1163 break;/* for case-4 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1164 } /* end of switch-case */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1165 return FALSE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1166 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1167 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1168 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1169 | PROJECT : MODULE : ALR_PCH | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1170 | STATE : code ROUTINE : pch_tmsi_type | | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1171 +--------------------------------------------------------------------+ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1172 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1173 PURPOSE : Function replacing the common code from the function | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1174 "pch_check_pag_2" | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1175 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1176 | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1177 LOCAL BOOL pch_tmsi_type (T_TMSI_TYPE tmsi_type, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1178 UBYTE *frame, | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1179 UBYTE channel_needed) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1180 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1181 GET_INSTANCE_DATA; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1182 UBYTE i; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1183 ULONG tmsi; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1184 ALR_TRACE_PCH ("pch_tmsi_type"); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1185 if (alr_data->pch_data.v_tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1186 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1187 tmsi = 0L; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1188 if (tmsi_type EQ TMSI_TYPE_1) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1189 for (i=0; i<4; i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1190 tmsi += frame[i+4] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1191 else if (tmsi_type EQ TMSI_TYPE_2) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1192 for (i=0; i<4; i++) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1193 tmsi += frame[i+8] << (8*(3-i)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1194 if (alr_data->pch_data.tmsi EQ tmsi) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1195 { | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1196 /* | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1197 * TMSI matches | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1198 */ | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1199 if (tmsi_type EQ TMSI_TYPE_1) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1200 ma_pch_paging_ind (4, (UBYTE)((channel_needed & 0x30)>>4)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1201 else if (tmsi_type EQ TMSI_TYPE_2) | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1202 ma_pch_paging_ind (4, (UBYTE)((channel_needed & 0xC0)>>6)); | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1203 return TRUE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1204 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1205 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1206 return FALSE; | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1207 } | 
| 
27a4235405c6
src/g23m-gsm: import from LoCosto source
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1208 #endif | 
